Parallel STL の概要

Parallel STL の概要を説明します。

Parallel STL は、一般に C++17 と呼ばれる ISO / IEC 14882:2017 標準規格で定義されている、実行ポリシーをサポートする C++ 標準ライブラリー・アルゴリズムの実装です。この実装は、C++ 20 標準規格の最終草案 (N4860) で定義されているベクトル実行ポリシーもサポートしています。詳細は、「標準実行ポリシー」 (英語) を参照してください。

Parallel STL は、インテル® プロセッサー向けアルゴリズムの並列実行とベクトル実行の両方を効率的にサポートします。シーケンシャル実行は、C++ 標準ライブラリーの利用可能な実装に依存します。この実装は、ヘテロジニアス・システム向けの大規模な並列計算モデルの実行に使用される DPC++ 実行ポリシーをサポートしています。ポリシーの詳細は、「oneAPI DPC++ ライブラリー (oneDPL) 仕様」 (英語) を参照してください。

実装されているアルゴリズムでは、呼び出しの最初の引数として次のいずれかの実行ポリシー値をアルゴリズムに渡して、実行ポリシーを指定します。ポリシーには次の意味があります。

実行ポリシー値 説明
seq

シーケンシャル実行。

unseq

順序関係のない SIMD 実行。提供されているすべての関数が SIMD セーフである必要があります。

par

複数のスレッドによる並列実行。

par_unseq

unseqpar の効果を組み合わせます。

dpcpp_default

DPC++ を使用したデバイス上での大規模な並列実行。

dpcpp_fpga

FPGA デバイス上での大規模な並列実行。

実装は、LLVM (英語) の Parallel STL をベースにしています。

必要条件

C++11 は、oneDPL が必要とする C++ 標準の最小バージョンです。つまり、インテル® oneDPL を使用するには、C++11 以降に対応したコンパイラーが必要です。使用する機能によっては、より新しいバージョンの C++ が必要になります。C++ 標準ポリシーで Parallel STL を使用するには、次のソフトウェアをインストールする必要があります。

DPC++ 実行ポリシーで Parallel STL を使用するには、次のソフトウェアをインストールする必要があります。