< 目次

インテル® oneAPI ベース・ツールキット (Linux* 版) 導入ガイド

コマンドラインを使用したインテル® oneAPI DL フレームワーク・デベロッパー・ツールキットのサンプルのビルドと実行

インテル® 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 CLI サンプルブラウザーを使用して、オンラインの oneAPI サンプルのコレクションを参照します。これらのサンプルは、ビルド可能なサンプル・プロジェクトとしてローカルディスクにコピーできます。ほとんどの oneAPI サンプル・プロジェクトは Make または CMake* でビルドされており、サンプルに同梱の README ファイルにビルド手順が含まれています。oneAPI CLI ユーティリティーは、ダイナミック・ランタイム・ライブラリーに依存しない、単一のスタンドアロンの実行ファイルです。サンプルブラウザーは、開発ホストシステムの <install-dir>/dev-utilities/latest/bin フォルダーにあります。

インテル® oneAPI ツールキット用のサンプルのダウンロードには、インターネット接続が必要です。ツールキットをオフラインで使用する方法については、「トラブルシューティング」の「オフラインシステムでの開発」を参照してください。

Beta Update 8 以降では、デフォルトのインストール・ディレクトリーが /opt/intel/oneapi に変更になりました。

  1. ターミナルウィンドウを開きます。
  2. システムの設定」で「オプション 2: setvars.sh を一度だけ設定する」を完了しなかった場合は、setvars を source してシステム変数を設定します。

    root または sudo としてインストールした場合:

    . <install_dir>/setvars.sh

    ローカルユーザーでインストールした場合:

    . ~/intel/oneapi/setvars.sh
  3. デフォルトのフォルダー以外にインストールした場合は、setvars.sh はその場所にあります。

    setvars.sh スクリプトは、設定ファイルを使用して管理することもできます。詳細は、「設定ファイルを使用した setvars.sh の管理」 (英語) を参照してください。

  4. 同じターミナルウィンドウで、アプリケーションを実行します (PATH になければなりません)

    oneapi-cli

    oneAPI CLI メニューが表示されます。

  5. 矢印キーを使用して [Create a project] を選択し、Enter キーを押します。
  6. サンプルの言語を選択します。最初のプロジェクトでは、[cpp] を選択して Enter キーを押します。ツールキットのサンプルリストが表示されます。
  7. 使用するサンプルを選択します。最初のサンプルとして [CCL Getting Started Sample] を選択します。CCL Getting Started Sample のビルドと実行に成功したら、ほかのサンプルをダウンロードできます。各サンプルの説明は、「サンプル表」にあります。

  8. サンプルを選択したら Enter キーを押します。

  9. プロジェクトを作成する絶対パスまたは相対パスを入力します。ディレクトリー名とプロジェクト名を指定します。プロジェクト名は、前のステップで選択したサンプル名です。
  10. Tab キーで [Create] を選択し、Enter キーを押します。

    ディレクトリー・パスが [Create] ボタンの下に出力されます。

サンプルは、データ並列 C++ (DPC++)、C、C++ を使用して CPU と GPU でビルドして実行できます。C または C++ のみを使用する場合は、CPU のみで実行する手順に従ってください。

サンプル名 説明
oneCCL_Getting_Started for CPU and GPU (英語)

oneCCL_Getting_Started for CPU only (英語)

この 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 用の CCL 導入サンプル

次のコマンドは、CPU または GPU 上で最初の oneCCL プロジェクトをビルドします。<install_dir> は、実際のインストール・パス (例: /opt/intel/oneapi) に変更してください。

インテル® oneAPI DPC++/C++ コンパイラーを使用したサンプル・プロジェクトのビルド

  1. デフォルトの環境変数を export せずにクリーンなコンソール環境を使用して、setvars.sh を source します。
    source <install_dir>/setvars.sh --ccl-configuration=cpu_gpu_dpcpp
  2. サンプルの場所 (DLDevKit-code-samples) に移動します。

    cd <project_dir>/oneCCL_Getting_Started
  3. ビルド・ディレクトリーに移動します。
    mkdir build
    cd build
  4. CMake* でプログラムをビルドします。これにより、ソースファイル sycl_allreduce_cpp_test.cpp<install_dir>/ccl/latest/examples/sycl フォルダーから build/src/sycl フォルダーにコピーされます。
     cmake ..  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=dpcpp
    make sycl_allreduce_cpp_test 
    

    上記のコマンドを実行した後にエラーメッセージが表示された場合は、「システムの設定」を参照して環境が適切に設定されていることを確認してください。

  5. プログラムを実行します。${NUMBER_OF_PROCESSES} を適切な整数値に置き換えて、gpu または cpu を選択します。
    mpirun -n ${NUMBER_OF_PROCESSES} ./out/sycl/sycl_allreduce_cpp_test {gpu|cpu}
    例: mpirun -n 2 ./out/sycl/sycl_allreduce_cpp_test gpu

CPU 上での結果検証

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 サンプルブラウザーを実行して別のサンプルをダウンロードします。

CPU および GPU 用の oneDNN 導入サンプル

GNU* C++ コンパイラーの使用

GNU* C++ コンパイラーを使用して、このサンプルではインテル® CPU 上で基本的な oneDNN 処理を示し、CPU の並列処理に GNU* OpenMP* を使用します。

  1. デフォルトの環境変数を export せずにクリーンなコンソール環境を使用して、setvars.sh を source します。
    source /opt/intel/oneapi/setvars.sh --dnnl-configuration=cpu_gomp
  2. プロジェクトの場所 (DLDevKit-code-samples) に移動します。
    cd <project_dir>/oneDNN_Getting_Started
  3. cpu_comp ディレクトリーに移動します。
    mkdir cpu_comp
    cd cpu_comp
  4. CMake* でプログラムをビルドします。

    CMake* でビルドしてエラーが出力された場合は、root 権限に切り替えて、再度試してみてください。
    cmake .. -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ 
    make getting-started-cpp 
    
  5. oneDNN Verbose ログを有効にします。
    export DNNL_VERBOSE=1
  6. CPU 上でプログラムを実行します。

    ./out/getting-started-cpp

  7. 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_inference,data_f32::blocked:acdb:f0 diff_undef::undef::f0,alg:eltwise_relu:0:0,1x3x13x13,968.354
    Example passes
    

oneAPI CLI サンプルブラウザーを実行して別のサンプルをダウンロードします。

CPU および GPU 用の oneDNN CNN FP32 推論サンプル

インテル® oneAPI DPC++/C++ コンパイラーでコンパイル

cnn-inference-f32-cpp サンプルは、ツールキットのインストールに含まれています。

インテル® oneAPI DPC++/C++ コンパイラーを使用して、このサンプルではインテル® CPU とインテル® GPU 上で CNN FP32 をサポートします。CMake* を使用してインテル® oneAPI DPC++/C++ コンパイラーでビルドするには、次の操作を行います。

  1. デフォルトの環境変数を export せずにクリーンなコンソール環境を使用して、setvars.sh を source します。

    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

  2. サンプルの場所 (DLDevKit-code-samples) に移動します。

    cd <sample_dir>/oneDNN_CNN_INFERENCE_FP32

  3. dpcpp ディレクトリーに移動します。
    mkdir dpcpp
    cd dpcpp
  4. CMake* でプログラムをビルドします。
    cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=dpcpp
    make cnn-inference-f32-cpp
    

    CMake* でビルドしてエラーが出力された場合は、root 権限に切り替えて、再度試してみてください。問題が解決しない場合は、「システムの設定」を参照してすべてのセットアップ手順が完了していることを確認してください。
  5. oneDNN Verbose ログを有効にします。
    export DNNL_VERBOSE=1
  6. プログラムを実行します。
    • CPU 上での実行
      ./out/cnn-inference-f32-cpp cpu
    • GPU 上での実行 (利用可能な場合)
      ./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 サンプルブラウザーを実行して別のサンプルをダウンロードします。

CPU および GPU 用の oneDNN SYCL* 相互運用サンプル

この DNNL SYCL* 相互運用サンプルコードは、CPU および GPU 向けに C++ と DPC++ 言語で実装されています。

DPC++ コンパイラーの使用

  1. デフォルトの環境変数を export せずにクリーンなコンソール環境を使用して、setvars.sh を source します。

    source /opt/intel/oneapi/setvars.sh --dnnl-configuration=cpu_dpcpp_gpu_dpcpp

  2. サンプルの場所 (DLDevKit-code-samples) に移動します。

    cd <sample_dir>/oneDNN_SYCL_InterOp

  3. dpcpp ディレクトリーに移動します。

    mkdir dpcpp
    cd dpcpp
    
  4. CMake* でプログラムをビルドします。
    cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=dpcpp 
    make sycl-interop-cpp
    
  5. oneDNN Verbose ログを有効にします。
    export DNNL_VERBOSE=1
  6. プログラムを実行します。

    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 専用の oneCCL 導入サンプル

次のコマンドは、CPU または GPU 上で最初の oneCCL プロジェクトをビルドします。$<install_dir> は、実際のインストール・パス (例: /opt/intel/oneapi) に変更してください。

インテル® oneAPI DPC++/C++ コンパイラーを使用したサンプル・プロジェクトのビルド

  1. デフォルトの環境変数を export せずにクリーンなコンソール環境を使用して、setvars.sh を source します。
    source /opt/intel/oneapi/setvars.sh --ccl-configuration=cpu_icc
  2. サンプルの場所 (DLDevKit-code-samples) に移動します。

    cd <project_dir>/oneCCL_Getting_Started
  3. ビルド・ディレクトリーに移動します。
    mkdir build
    cd build
  4. CMake* でプログラムをビルドします。
    cmake .. -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ 
    make 
    

    上記のコマンドを実行した後にエラーメッセージが表示された場合は、「システムの設定」を参照して環境が適切に設定されていることを確認してください。

  5. プログラムを実行する。${NUMBER_OF_PROCESSES} を適切な整数値に置き換えて、gpu または cpu を選択します。
    mpirun -n ${NUMBER_OF_PROCESSES} ./out/cpu_allreduce_cpp_test {gpu|cpu}
    例: mpirun -n 2 ./out/cpu_allreduce_cpp_test gpu

CPU 上での結果検証

Provided device type: cpu
Running on Intel® Core™ i7-7567U CPU @ 3.50GHz
Example passes

oneAPI CLI サンプルブラウザーを実行して別のサンプルをダウンロードします。