インテル® oneAPI ベース・ツールキット (Linux* 版) 導入ガイド
インテル® oneAPI ツールキット用のサンプルのダウンロードには、インターネット接続が必要です。オフラインシステムを使用している場合は、インターネットに接続されたシステムでサンプルをダウンロードして、サンプルファイルをオフラインシステムに転送してください。開発に IDE を使用している場合は、オフラインでは oneAPI CLI サンプルブラウザーを利用できません。代わりに、サンプルをダウンロードしてディレクトリーに展開し、IDE でサンプルを開くことができます。サンプルは次のサイトからダウンロードできます。
インテル® oneAPI DL フレームワーク・デベロッパー・ツールキットのサンプルコード (英語)サンプルをダウンロードしたら、README.md ファイルの指示に従います。
コマンドライン開発は、ターミナルウィンドウまたは Visual Studio* Code を使用して行います。VS Code のローカルでの使用方法については、「Linux* 上での Visual Studio* Code と oneAPI の基本的な使い方」 (英語) を参照してください。VS Code のリモートでの使用方法については、「Linux* 上での oneAPI を使用したリモート Visual Studio* Code 開発」 (英語) を参照してください。
oneAPI CLI サンプルブラウザーを使用して、オンラインの oneAPI サンプルのコレクションを参照します。これらのサンプルは、ビルド可能なサンプル・プロジェクトとしてローカルディスクにコピーできます。ほとんどの oneAPI サンプル・プロジェクトは Make または CMake* でビルドされており、サンプルに同梱の README ファイルにビルド手順が含まれています。oneAPI CLI ユーティリティーは、ダイナミック・ランタイム・ライブラリーに依存しない、単一のスタンドアロンの実行ファイルです。サンプルブラウザーは、開発ホストシステムの <install-dir>/dev-utilities/latest/bin フォルダーにあります。
インテル® oneAPI ツールキット用のサンプルのダウンロードには、インターネット接続が必要です。ツールキットをオフラインで使用する方法については、「トラブルシューティング」の「オフラインシステムでの開発」を参照してください。
root または sudo としてインストールした場合:
. <install_dir>/setvars.sh
ローカルユーザーでインストールした場合:
. ~/intel/oneapi/setvars.sh
setvars.sh スクリプトは、設定ファイルを使用して管理することもできます。詳細は、「設定ファイルを使用した setvars.sh の管理」 (英語) を参照してください。
oneapi-cli
oneAPI CLI メニューが表示されます。サンプルを選択したら Enter キーを押します。
Tab キーで [Create] を選択し、Enter キーを押します。
ディレクトリー・パスが [Create] ボタンの下に出力されます。
サンプルは、データ並列 C++ (DPC++)、C、C++ を使用して CPU と GPU でビルドして実行できます。C または C++ のみを使用する場合は、CPU のみで実行する手順に従ってください。
サンプル名 | 説明 |
oneCCL_Getting_Started for CPU and GPU (英語) | この C++ API サンプルは、allreduce を呼び出して CCL プログラミング・モデルの基本を示します。 |
oneDNN_Getting_Started for CPU and GPU (英語) | この C++ API サンプルは、ReLU 操作を使用して oneDNN プログラミング・モデルの基本を示します。 |
oneDNN_CNN_FP32_Inference for CPU and GPU (英語) | この C++ API サンプルは、事前にビルドされたさまざまな oneDNN バイナリーに対する単純な CNN fp32 推論をビルド/実行します。 |
oneDNN_SYCL_InterOp for CPU and GPU (英語) | この C++ API サンプルは、カスタム SYCL* カーネルと ReLU 層さを使用して oneDNN SYCL* 拡張 API プログラミング・モデルを検証します。 |
次のコマンドは、CPU または GPU 上で最初の oneCCL プロジェクトをビルドします。<install_dir> は、実際のインストール・パス (例: /opt/intel/oneapi) に変更してください。
インテル® oneAPI DPC++/C++ コンパイラーを使用したサンプル・プロジェクトのビルド
source <install_dir>/setvars.sh --ccl-configuration=cpu_gpu_dpcpp
サンプルの場所 (DLDevKit-code-samples) に移動します。
cd <project_dir>/oneCCL_Getting_Started
mkdir build cd build
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=dpcpp make sycl_allreduce_cpp_test
mpirun -n ${NUMBER_OF_PROCESSES} ./out/sycl/sycl_allreduce_cpp_test {gpu|cpu}
例: mpirun -n 2 ./out/sycl/sycl_allreduce_cpp_test gpuCPU 上での結果検証
Provided device type cpu Running on Intel® Core™ i7-7567U CPU @ 3.50GHz PASSED
GPU 上での結果検証
Provided device type gpu Running on Intel® Gen9 Provided device type gpu Running on Intel® Gen9 PASSED
oneAPI CLI サンプルブラウザーを実行して別のサンプルをダウンロードします。
GNU* C++ コンパイラーを使用して、このサンプルではインテル® CPU 上で基本的な oneDNN 処理を示し、CPU の並列処理に GNU* OpenMP* を使用します。
source /opt/intel/oneapi/setvars.sh --dnnl-configuration=cpu_gomp
cd <project_dir>/oneDNN_Getting_Started
mkdir cpu_comp
cd cpu_comp
cmake .. -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
make getting-started-cpp
export DNNL_VERBOSE=1
CPU 上でプログラムを実行します。
./out/getting-started-cpp
dnnl_verbose,info,DNNL v1.0.0 (commit 560f60fe6272528955a56ae9bffec1a16c1b3204) dnnl_verbose,info,Detected ISA is Intel AVX2 dnnl_verbose,exec,cpu,eltwise,jit:avx2,forward_inference,data_f32::blocked:acdb:f0 diff_undef::undef::f0,alg:eltwise_relu:0:0,1x3x13x13,968.354 Example passes
oneAPI CLI サンプルブラウザーを実行して別のサンプルをダウンロードします。
cnn-inference-f32-cpp サンプルは、ツールキットのインストールに含まれています。
インテル® oneAPI DPC++/C++ コンパイラーを使用して、このサンプルではインテル® CPU とインテル® GPU 上で CNN FP32 をサポートします。CMake* を使用してインテル® oneAPI DPC++/C++ コンパイラーでビルドするには、次の操作を行います。
source /opt/intel/oneapi/setvars.sh --dnnl-configuration=cpu_dpcpp_gpu_dpcpp
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=dpcpp
make cnn-inference-f32-cpp
サンプルの場所 (DLDevKit-code-samples) に移動します。
cd <sample_dir>/oneDNN_CNN_INFERENCE_FP32
mkdir dpcpp
cd dpcpp
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=dpcpp
make cnn-inference-f32-cpp
export DNNL_VERBOSE=1
./out/cnn-inference-f32-cpp cpu
./out/cnn-inference-f32-cpp gpu
結果検証
出力から、このコードの CPU と GPU 上での実行時間が分かります。例えば、以下の例では CPU 上の実行時間は 33 秒です。
CPU 上での実行:
dnnl_verbose,info,DNNL v1.0.0 (commit 560f60fe6272528955a56ae9bffec1a16c1b3204) dnnl_verbose,info,Detected ISA is Intel AVX2 ... /DNNL VERBOSE LOGS/ ... dnnl_verbose,exec,cpu,inner_product,gemm:jit,forward_inference,src_f32::blocked:abcd:f0 wei_f32::blocked:abcd:f0 bia_f32::blocked:a:f0 dst_f32::blocked:ab:f0,,mb1ic9216oc4096,5.50391 dnnl_verbose,exec,cpu,inner_product,gemm:jit,forward_inference,src_f32::blocked:ab:f0 wei_f32::blocked:ab:f0 bia_f32::blocked:a:f0 dst_f32::blocked:ab:f0,,mb1ic4096oc4096,2.58618 dnnl_verbose,exec,cpu,inner_product,gemm:jit,forward_inference,src_f32::blocked:ab:f0 wei_f32::blocked:ab:f0 bia_f32::blocked:a:f0 dst_f32::blocked:ab:f0,,mb1ic4096oc1000,0.667969 dnnl_verbose,exec,cpu,reorder,jit:uni,undef,src_f32::blocked:ab:f0 dst_f32::blocked:ab:f0,num:1,1x1000,0.0368652 Use time 33.22
GPU 上での実行:
dnnl_verbose,info,DNNL v1.0.0 (commit 560f60fe6272528955a56ae9bffec1a16c1b3204) dnnl_verbose,info,Detected ISA is Intel AVX2 ... /DNNL VERBOSE LOGS/ ... dnnl_verbose,exec,gpu,reorder,ocl:simple:any,undef,src_f32::blocked:aBcd16b:f0 dst_f32::blocked:abcd:f0,num:1,1x256x6x6 dnnl_verbose,exec,gpu,inner_product,ocl:gemm,forward_inference,src_f32::blocked:abcd:f0 wei_f32::blocked:abcd:f0 bia_f32::blocked:a:f0 dst_f32::blocked:ab:f0,,mb1ic9216oc4096 dnnl_verbose,exec,gpu,inner_product,ocl:gemm,forward_inference,src_f32::blocked:ab:f0 wei_f32::blocked:ab:f0 bia_f32::blocked:a:f0 dst_f32::blocked:ab:f0,,mb1ic4096oc4096 dnnl_verbose,exec,gpu,inner_product,ocl:gemm,forward_inference,src_f32::blocked:ab:f0 wei_f32::blocked:ab:f0 bia_f32::blocked:a:f0 dst_f32::blocked:ab:f0,,mb1ic4096oc1000 dnnl_verbose,exec,gpu,reorder,ocl:simple:any,undef,src_f32::blocked:ab:f0 dst_f32::blocked:ab:f0,num:1,1x1000 Use time 106.29
oneAPI CLI サンプルブラウザーを実行して別のサンプルをダウンロードします。
この DNNL SYCL* 相互運用サンプルコードは、CPU および GPU 向けに C++ と DPC++ 言語で実装されています。
DPC++ コンパイラーの使用
デフォルトの環境変数を export せずにクリーンなコンソール環境を使用して、setvars.sh を source します。
source /opt/intel/oneapi/setvars.sh --dnnl-configuration=cpu_dpcpp_gpu_dpcpp
サンプルの場所 (DLDevKit-code-samples) に移動します。
cd <sample_dir>/oneDNN_SYCL_InterOp
dpcpp ディレクトリーに移動します。
mkdir dpcpp cd dpcpp
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=dpcpp make sycl-interop-cpp
export DNNL_VERBOSE=1
CPU 上での実行
./out/sycl-interop-cpp cpu
GPU 上での実行
./out/sycl-interop-cpp gpu
結果検証
CPU 上での実行結果
dnnl_verbose,info,DNNL v1.0.0 (commit 560f60fe6272528955a56ae9bffec1a16c1b3204) dnnl_verbose,info,Detected ISA is Intel AVX2 dnnl_verbose,exec,cpu,eltwise,jit:avx2,forward_training,data_f32::blocked:abcd:f0 diff_undef::undef::f0,alg:eltwise_relu:0:0,2x3x4x5,958.552 Example passes
GPU 上での実行結果
dnnl_verbose,info,DNNL v1.0.0 (commit 560f60fe6272528955a56ae9bffec1a16c1b3204) dnnl_verbose,info,Detected ISA is Intel AVX2 dnnl_verbose,exec,gpu,eltwise,ocl:ref:any,forward_training,data_f32::blocked:abcd:f0 diff_undef::undef::f0,alg:eltwise_relu:0:0,2x3x4x5 Example passes
oneAPI CLI サンプルブラウザーを実行して別のサンプルをダウンロードします。
次のコマンドは、CPU または GPU 上で最初の oneCCL プロジェクトをビルドします。$<install_dir> は、実際のインストール・パス (例: /opt/intel/oneapi) に変更してください。
インテル® oneAPI DPC++/C++ コンパイラーを使用したサンプル・プロジェクトのビルド
source /opt/intel/oneapi/setvars.sh --ccl-configuration=cpu_icc
サンプルの場所 (DLDevKit-code-samples) に移動します。
cd <project_dir>/oneCCL_Getting_Started
mkdir build cd build
cmake .. -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ make
mpirun -n ${NUMBER_OF_PROCESSES} ./out/cpu_allreduce_cpp_test {gpu|cpu}
例: mpirun -n 2 ./out/cpu_allreduce_cpp_test gpuCPU 上での結果検証
Provided device type: cpu Running on Intel® Core™ i7-7567U CPU @ 3.50GHz Example passes
oneAPI CLI サンプルブラウザーを実行して別のサンプルをダウンロードします。