oneMKL の使い方

SYCL* インターフェイスを使用する場合、考慮すべきことがあります。

  • oneMKL は、インテル® oneAPI DPC++/C++ コンパイラーおよびインテル® oneAPI DPC++ ライブラリーに依存しています。アプリケーションは、インテル® oneAPI DPC++/C++ コンパイラーでビルドされ、SYCL* ヘッダーを利用しており、DPC++ リンカーを使用してインテル® oneMKL とリンクされている必要があります。

  • oneMKL の SYCL* インターフェイスは、入力データ (ベクトル、行列など) にデバイスのアクセスが可能な統合共有メモリー (USM) ポインターを使用します。

  • oneMKL の一部の SYCL* インターフェイスは、入力データ向けのデバイスへのアクセスが可能な USM ポインターのほかに、sycl::buffer オブジェクトのアクセスもサポートしています。

  • oneMKL の SYCL* インターフェイスは、浮動小数点タイプに基づいてオーバーロードされます。標準ライブラリー・タイプ std::complex<float>std::complex<double> を使用する、単精度実数引数 (float)、倍精度実数引数 (double)、半精度実数引数 (half)、および異なる精度の複素数引数を受け入れる汎用行列乗算 API があります。

  • oneMKL の 2 レベルの名前空間構造が SYCL* インターフェイスに追加されます:

表 8 oneMKL の 2 レベルの名前空間

名前空間

説明

oneapi::mkl

oneMKL の各種ドメイン間の共通要素が含まれます。

oneapi::mkl::blas

密ベクトル-ベクトル、行列-ベクトル、および行列-行列の低レベル操作が含まれます。

oneapi::mkl::lapack

行列因数分解や固有値ソルバーなど高レベルの密行列演算が含まれます。

oneapi::mkl::rng

各種確率密度関数の乱数生成器が含まれます。

oneapi::mkl::stats

単精度および倍精度の多次元データセットの基本的な統計予測値が含まれます。

oneapi::mkl::vm

ベクトル数学ルーチンが含まれます。

oneapi::mkl::dft

高速フーリエ変換操作が含まれます。

oneapi::mkl::sparse

スパース行列ベクトル乗算、スパース三角ソルバーなどのスパース行列演算が含まれます。