インテル® DPCT 名前空間の利用ガイド#
インテル® DPCT 名前空間は、入力ソースコードの移行を支援するヘルパー関数とマクロを提供しています。インテル® DPCT 名前空間のヘルパー関数は、ヘッダーファイルで実装されており、インテル® DPC++ 互換性ツールのインストール・パスの include フォルダー (include/dpct) にあります。これらのヘッダーファイルは、インテル® DPC++ 互換性ツールによって生成される新しい DPC++ コードで使用されることを目的としています。必要に応じて、これらのヘッダーファイルをコピーし、生成されたコードにインクルードできます。
次の 3 つの名前空間があります。
名前空間 |
説明 |
---|---|
|
この名前空間は、インテル® DPC++ 互換性ツールが生成するコードで使用されます。 |
|
この名前空間は内部実装であり、 |
|
この名前空間は互換性の目的で導入された機能向けですが、すでに削除された、または将来の標準化で削除される非推奨の C++ 機能に依存しています。 |
注
移行後は、インテル® DPCT 名前空間のヘルパー関数とマクロをベースにするのではなく、SYCL* および C++ 標準 API を使用して開発を継続することを推奨します。
以下のセクションでは、ヘルパー関数とマクロのさまざまなドメインについて詳しく説明します。
マクロ#
次の表は、ヘルパー関数の動作を制御するために使用されるマクロを示します。
マクロ |
説明 |
---|---|
|
|
|
|
|
|
注
これらのマクロは手動で定義しないでください。インテル® DPC++ 互換性ツールが、dpct
コマンドラインで指定されたオプションに応じて自動的に定義します。
アトミックヘルパー関数#
アトミックヘルパー関数は、atomic.hpp
ヘッダーファイルにあります。アトミックヘルパー関数は、SYCL* の標準的なアトミック操作のラッパーです。
デバイスヘルパー関数#
デバイスヘルパー関数は、device.hpp
ヘッダーファイルにあります。
次のクラスが device.hpp
ヘッダーファイルで定義されています。
クラス |
説明 |
---|---|
|
|
|
|
|
|
詳細は、device.hpp
ファイルを参照してください。
以下の表は、デバイスヘルパー関数の一覧です。
関数 |
説明 |
---|---|
|
デバイス・マネージャーの現在のデバイスを返します。 |
|
デバイス・マネージャーの現在のデバイスに関連付けられているデフォルトのキューを返します。 |
|
|
|
SYCL* CPU に関連付けられている |
|
デバイス・マネージャーの現在のデバイスに関連付けられているデフォルトのキューの SYCL* コンテキストを返します。 |
メモリーヘルパー関数#
次の表に、SYCL* バッファーベースのメモリー・モデル・ヘルパー関数を示します。
関数 |
説明 |
---|---|
デバイス・メモリー・マネージャー ( |
デバイス・メモリー・マネージャーは、SYCL* バッファーベースのメモリーモデルが使用されている場合に、メモリー API 呼び出しの移行を支援するシングルトンです。 |
次の表に、ホスト仮想アドレスから SYCL* バッファーを取得するヘルパー関数を示します。
関数 |
説明 |
---|---|
|
|
|
|
一般的なヘルパー関数
一般的なメモリーヘルパー関数は、USM とバッファーベースのメモリーモデルの両方で、メモリーの割り当て、メモリーコピー、メモリーセットなどのメモリー API 呼び出しの移行を支援するために使用されます。次のヘルパー関数が利用できます。
dpct_malloc()
dpct_free()
dpct_memcpy()
async_dpct_memcpy()
dpct_memset()
async_dpct_memset()
詳細は、memory.hpp
ファイルを参照してください。
デバイスメモリー変数の移行を支援するヘルパー関数
グローバルおよび定数デバイスメモリー属性で宣言された変数の移行を支援するため、ヘルパー関数は以下のテンプレートクラスを提供します。
関数 |
説明 |
---|---|
|
SYCL* グローバルメモリー変数を表します。 |
|
SYCL* 定数メモリー変数を表します。 |
|
SYCL* USM 共有メモリーと同様に、ホストとデバイスからアクセス可能なメモリーを表します。 |
次の表に、メモリークラスの主なメンバー関数を示します。
関数 |
説明 |
---|---|
|
メモリー・オブジェクトのメモリーポインターを返します。バッファーベースのメモリーモデルを使用している場合は仮想ポインター、USM メモリーモデルを使用している場合はデバイスポインターとなります。 |
|
メモリー・オブジェクトのサイズを返します。 |
|
メモリー・オブジェクトのアクセサーを返します。USM メモリーモデルが使用されている場合、この関数はデバイス・メモリー・オブジェクトの |
|
SYCL* デバイスが選択された後にメモリーを割り当て、デバイスメモリーが初期値であれば初期化します。この API は、SYCL* デバイスを選択した後に呼び出す必要があります。 |
カーネル ヘルパー関数#
カーネルヘルパー関数は、DPC++ のカーネル情報を保持する構造体 kernel_function_info
とカーネル情報を取得するユーティリティー関数 get_kernel_function_info()
を提供します。
イメージヘルパー関数#
イメージヘルパー関数は、テクスチャー API の移行を支援するクラスラッパーを提供します。イメージヘルパー関数の詳細は、image.hpp
ファイルを参照してください。
ラッパー |
説明 |
---|---|
テンプレートクラス |
|
クラス |
SYCL* サンプラーと SYCL* イメージアクセサーをラップします。アクセサーからデータを読み取る |
クラス |
|
クラス |
イメージの 2D/3D 行列データを表します。イメージのチャネル情報、次元、各次元のサイズ、生データポインターが含まれています。 |
クラス |
イメージの 2D/3D ピッチ指定データを表します。 |
構造体 |
順番、データ幅、タイプ情報などのイメージチャネル情報を保持します。 |
クラス |
アドレス指定モード、フィルターモード、正規化モードを含む、画像のサンプリング情報。 |
|
指定されたパラメータに応じて、ヘルパー・イメージ・クラスのオブジェクトを作成します。 |
インテル® oneAPI DPC++ ライブラリー固有ユーティリティー・ヘルパー関数#
アルゴリズム関数、メモリー関数、イテレーター、デバイス上のデータを管理するコンテナーなど、dpl_utils.hpp
にインクルードされたヘッダーファイルが提供するヘルパー関数です。
アルゴリズム・ヘルパー関数#
アルゴリズム・ヘルパー関数は、dpl_extras/algorithm.h
ヘッダーファイルにあります。アルゴリズム・ヘルパー関数は、インテル® oneAPI DPC++ ライブラリー (インテル® oneDPL) (英語) アルゴリズム関数のラッパーです。
マスクプレディケート・アルゴリズム関数
マスクプレディケート・アルゴリズム関数には、C++ 標準ライブラリーにある同名のアルゴリズムと同様に、パラメーター・リストがあります。これらの関数は、関数のほかの入力の対応する要素をアルゴリズムで処理すべきかどうかを示す値のセットを指す、追加のイテレーターを受け取ります。これらの関数に提供されるプレディケートは、入力データの要素ではなく、マスクの値に適用され、プレディケートが true を返した場合、入力データの対応する要素がアルゴリズムによって操作されます。
以下のマスクプレディケート・アルゴリズム関数が dpl_extras/algorithm.h
ヘッダーファイルにあります。
copy_if
partition
partition_copy
remove_if
remove_copy_if
replace_if
replace_copy_if
stable_partition_copy
stable_partition
transform_if
キー値ペア・アルゴリズム関数
キー値ペア・アルゴリズム関数には、C++ 標準ライブラリーにある同名のアルゴリズムと同様に、パラメーター・リストがあります。この関数は、1 つの入力データではなく、2 つの入力データを受け取ります。1 つ目はキーのセット、2 つ目は各キーに関連する値のセットです。これらのアルゴリズム関数は、zip_iterators
を作成し、インテル® oneDPL で提供されている標準的なアルゴリズムを呼び出すことで、キー値ペアを単一のデータ要素として処理します。
以下のキー値ペア・アルゴリズム関数が dpl_extras/algorithm.h
ヘッダーファイルにあります。
unique
unique_copy
merge
sort
stable_sort
set_difference
set_intersection
set_symmetric_difference
set_union
追加のアルゴリズム関数
関数 |
説明 |
---|---|
|
実行ポリシーを受け取り、並列実行を可能にする C++ 標準ライブラリーのアルゴリズムの実装。 |
|
提供されたプレディケートが true を返す入力のすべての要素に単項演算を適用します。この関数のマスクプレディケート・バージョンも用意されています。 |
|
入力イテレーターと初期値に加えてステップを受け取るように、C++ 標準ライブラリーのアルゴリズムを拡張します。ステップは、生成されるシーケンスの次の値を計算するために使用されます。 |
|
実行ポリシーを受け取り、並列実行を可能にする C++ 標準ライブラリーのアルゴリズムの実装。リダクションを行う二項演算は、結合的かつ可換でなければなりません。 |
|
入力レンジの各要素に、その要素のインデックスを指定して呼び出した単項演算の結果を割り当てます。 |
メモリーヘルパー関数#
dpl_extras/memory.h
ヘッダーファイルは、デバイスメモリーを操作するためのクラスと関数を提供します。
以下の表は、メモリーヘルパー関数の一覧です。
クラス |
説明 |
---|---|
|
デバイス上のメモリーへのポインター型。 |
|
|
|
|
device_iterator
クラスと device_reference
クラスを使用する device_vector
実装は、dpl_extras/vector.h
で定義されています。
以下の表は、メモリーヘルパー関数の一覧です。
関数 |
説明 |
---|---|
|
デバイスで使用するメモリーを割り当てます。 |
|
|
|
指定された型の要素を要求された数だけ保持するのに十分な大きさの、デバイスで使用するメモリーを割り当てます。 |
|
|
|
生ポインターから |
|
|
インテル® oneAPI DPC++ ライブラリー固有ユーティリティー・ヘルパー・ファイル #
次の表は、インテル® oneAPI DPC++ ライブラリーに固有のユーティリティー・ヘッダー・ファイルを示します。
ヘッダーファイル |
説明 |
---|---|
|
上記のアルゴリズム関数の定義に使用される関数オブジェクトの実装が含まれています。 |
|
ある値で構築され、逆参照時にその値を返す |
|
デバイスメモリーに格納されたデータ要素を管理するコンテナである |
ユーティリティー・ヘルパー関数#
次の表に、ユーティリティー関数を定義するヘッダーファイルを示します。
ヘッダーファイル |
説明 |
---|---|
|
一般ユーティリティー・ヘルパー関数。 |
|
BLAS 固有のユーティリティー・ヘルパー関数。 |