DPC++ 対応インテル® oneMKL スパース BLAS の概要

DPC++ 対応インテル® oneMKL スパース BLAS の概要#

次のページでは、DPC++ 対応 oneMKL スパース BLAS 計算ルーチンについて詳しく説明します。これらのルーチンは、他のヘルパールーチン (完全なリストについては スパース BLAS ルーチン を参照) とともに、oneapi/mkl/spblas.hpp ヘッダーファイルで宣言されています。

このドキュメント全体でいくつかの規則が使用されています。

  • DPC++ データタイプおよび非ドメイン固有関数のすべての oneMKL は、oneapi::mkl:: 名前空間内にあります。

  • DPC++ のすべての oneMKL DPC 関数は、oneapi::mkl::sparse 名前空間内にあります。

  • 簡潔にするために、バッファーやキューなどの DPC++ オブジェクト・タイプの sycl 名前空間は省略されます。たとえば、単精度の 1D バッファー A は、sycl::buffer<float,1> &A ではなく、buffer<float,1> &A と記述されます。

  • 計算ルーチンは精度にオーバーロードされます。特に指定がない限り、すべての oneMKL スパース BLAS 計算ルーチンは floatdoublestd::complex<float>、および std::complex<double> 浮動小数点タイプをサポートしますが、混合精度計算はまだサポートしていません。

  • oneMKL スパース BLAS ドメインは現在、ほとんどの API に対してビット単位の再現性 (BWR) を保証していません。

  • スパース行列の行と列のインデックスの場合、oneMKL スパース BLAS は、サポートされているすべての行列形式に対して std::int32_t および std::int64_t 整数タイプをサポートします。行列ハンドル作成ルーチンは整数タイプでオーバーロードされます。

  • 一部の API では、ユーザーが提供する一時的なワークスペースが必要です。sycl::buffer API の場合、一時ワークスペースは sycl::buffer<std::uint8_t, 1> * タイプですが、USM API の場合は void * タイプになります。

  • USM API のユーザーの場合、すべてのタイプの割り当て (デバイス共有ホスト) で oneMKL がサポートされていますが、パフォーマンスは異なる場合があります。スパース BLAS API のパフォーマンスを最大限に高めるには、特に指定がない限り、可能な限りデバイスメモリー割り当て (sycl::malloc_device()) を備えた oneMKL を使用することを推奨しますが、それに関連する明示的なデータ移動はユーザーの責任となります。

デバイスサポート#

DPC++ は次のタイプのデバイスをサポートします。

  • CPU デバイス: OpenCL* を使用して CPU 上で計算を行います。

  • GPU デバイス: OpenCL* またはレベルゼロを使用して GPU 上で計算を行います。

各ルーチンには、現在サポートされているデバイスタイプの詳細が示されています。

oneMKL DPC++ スパース BLAS の現在のリリースでは、特に明記しない限り、リストされているすべてのルーチンは、圧縮スパース行 (CSR) 行列形式の CPU および GPU デバイスでの使用をサポートしています。各 API のドキュメントに指定されている、座標 (COO) 行列形式の限定サポートも利用できます。

ルーチン

説明

レベル 2:

sparse::gemv

一般的なスパース行列とデンスベクトルの積

sparse::gemvdot

一般的なスパース行列とデンスベクトルの積と融合ドット積

sparse::symv

対称スパース行列とデンスベクトルの積

sparse::trmv

三角スパース行列とデンスベクトルの積

sparse::trsv

スパース行列をデンスベクトルに対して三角法を解きます。

レベル 3:

sparse::gemm

一般的なスパース行列とデンス行列の積とデンス行列の出力。

sparse::trsm

スパース行列をデンス行列に対して三角法を解きます。

sparse::omatadd

一般的なスパース行列とスパース行列の加算とスパース行列出力。

sparse::matmat

スパース行列出力を伴う一般的なスパース行列-スパース行列積。

sparse::matmatd

一般的なスパース行列-スパース行列の積と密 (スパース) 行列出力。