oneAPI DPC++ Compiler (NVIDIA GPU 向け) ビルド手順
Intel が主導するオープンソースの SYCL コンパイラである oneAPI DPC++ Compiler (intel/llvm) を、NVIDIA GPU (CUDA) バックエンドを有効にしてソースからビルドする手順です。
注意: Intel oneAPI for NVIDIA® GPUs は、以前 Codeplay が
oneapi-nvidia-*パッケージとして apt 配布していましたが、現在はバイナリ配布が終了しています。 NVIDIA GPU で DPC++ を使用するには、intel/llvmリポジトリからコンパイラを自前でビルドする必要があります。 この場合、intel-cpp-essentialsは apt からインストール不要です(ソースビルドした DPC++ がその代わりになります)。
参考リンク
- https://github.com/intel/llvm/blob/sycl/sycl/doc/GetStartedGuide.md
1. リポジトリのクローン
特定のリリースバージョン(v6.3.0 等)を指定してクローンします。最新のタグはリポジトリのリリース一覧を確認してください。
- リリース一覧: https://github.com/intel/llvm/releases
git clone https://github.com/intel/llvm.git --depth 1 --branch v6.3.0
cd llvm
2. ビルド設定 (CUDA バックエンド有効)
python buildbot/configure.py --cuda
CUDA Toolkit が /usr/local/cuda 以外にある場合は --cmake-opt で指定してください:
python buildbot/configure.py --cuda \
--cmake-opt="-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.x"
3. ビルド & デプロイ
python buildbot/compile.py -j $(nproc)
注意:
cmake --install buildは使用しないでください。全コンポーネントをインストールしようとするためエラーになります。buildbot/compile.pyは内部でdeploy-sycl-toolchainターゲットをビルドし、 SYCL ツールチェーンに必要なファイルのみをbuild/install/に配置します。
ビルドには数十分かかる場合があります。
4. 環境変数の設定
ビルド成果物は build/install/ に配置されます。
export DPCPP_HOME=/path/to/llvm # クローンしたディレクトリ
export PATH=$DPCPP_HOME/build/install/bin:$PATH
export LD_LIBRARY_PATH=$DPCPP_HOME/build/install/lib:$LD_LIBRARY_PATH
任意のパス(例: /opt/intel/llvm)にインストールしたい場合は、ビルド成果物をコピーします。
# build/install/ は $ORIGIN 相対 RPATH を使用しているため、
# 別ディレクトリへコピーしてもライブラリの依存関係は正しく解決される
sudo mkdir -p /opt/intel/llvm
sudo cp -r build/install/. /opt/intel/llvm/
/opt/intel/llvm にインストールした場合の環境変数は以下です。
export PATH=/opt/intel/llvm/bin:$PATH
export LD_LIBRARY_PATH=/opt/intel/llvm/lib:$LD_LIBRARY_PATH
5. 動作確認
# 利用可能な SYCL デバイスを確認
sycl-ls
NVIDIA GPU が表示されれば成功です。
# NVIDIA GPU を指定して実行する場合
ONEAPI_DEVICE_SELECTOR=cuda:0 ./your_program