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* インターフェイスに追加されます:
名前空間 |
説明 |
|---|---|
|
oneMKL の各種ドメイン間の共通要素が含まれます。 |
|
密ベクトル-ベクトル、行列-ベクトル、および行列-行列の低レベル操作が含まれます。 |
|
行列因数分解や固有値ソルバーなど高レベルの密行列演算が含まれます。 |
|
各種確率密度関数の乱数生成器が含まれます。 |
|
単精度および倍精度の多次元データセットの基本的な統計予測値が含まれます。 |
|
ベクトル数学ルーチンが含まれます。 |
|
高速フーリエ変換操作が含まれます。 |
|
スパース行列ベクトル乗算、スパース三角ソルバーなどのスパース行列演算が含まれます。 |