インテル(R) IPP のパフォーマンス・ヘッダーを使用するアプリケーションのビルド

インテル(R) コンパイラーでは、C++ の標準的な valarray コンテナー用に、ハイパフォーマンスな特別の valarray 演算が用意されています。

標準の C++ の valarray テンプレートには、ハイパフォーマンス・コンピューティング向けの配列演算やベクトル演算が含まれています。これらの演算は、並列処理などのハイパフォーマンスなハードウェア機能を活用し、パフォーマンスを最大限に引き出します。インテル(R) コンパイラーには、次の演算およびデータ型で固有プロセッサーに特化したハイパフォーマンスを提供する代替ヘッダーが実装されています。これらの代替ヘッダーを使用するには、インテル(R) インテグレーテッド・パフォーマンス・プリミティブ (インテル(R) IPP) をインストールする必要があります。

 

演算子

valarray のデータ型

abs、acos、asin、atan、atan2、cos、cosh、exp、log、log10、pow、sin、sinh、sqrt、tan、tanh

float、double

addition、subtraction、division、multiplication

float、double

bitwise or、and、xor

char、short、int (すべて符号なし)

min、max、sum

short または符号付き int、float、double



次の 2 つの例は、インテルの valarray 代替ヘッダーファイルをインクルードし、インテル(R) IPP とリンクするための、プログラムのコンパイルとリンク方法を示します。詳細は、インテル(R) IPP のドキュメントを参照してください。

次の例で使用する用語の説明:

Windows* の例:

次のコマンドラインは、IA-32 アーキテクチャー・ベースの Windows システムで、コンパイルとリンクを別々に実行します。

DLL (ダイナミック):

icl -Icompiler_dir/perf_headers/c++ -Iipp_include_dir /c source.cpp

icl source.obj /link /libpath:ipp_lib_dir ippcore.lib ipps.lib ippvm.lib

マージ (スタティック):

icl -Icompiler_dir/perf_headers/c++ -Iipp_include_dir /c source.cpp icl source.obj /link /libpath:ipp_lib_dir ippcorel.lib ippsemerged.lib ippsmerged.lib ippvmemerged.lib ippvmmerged.lib

 

Linux* の例:

次のコマンドラインは、インテル(R) 64 アーキテクチャー・ベースの Linux システムで、コンパイルとリンクを別々に実行します。

so (ダイナミック):

icpc -Icompiler_dir/perf_headers/c++ -Iipp_include_dir -c source.cpp

icpc source.o -Lipp_lib_dir -lippsem64t -lippvmem64t -lippcoreem64t

マージ (スタティック):

icpc -Icompiler_dir/perf_headers/c++ -Iipp_include_dir -c source.cpp

icpc source.o -Lipp_lib_dir -lippsemergedem64t -lippsmergedem64t -lippvmemergedem64t -lippvmmergedem64t -lippcoreem64t

 

Note icon

すべてのプロセッサー固有のライブラリー・コードを含むスタティック・マージ・ライブラリーを使用するには、インテル(R) IPP 呼び出しの前に、ippStaticInit 関数を呼び出す必要があります。これにより、ランタイム時に正しいバージョンのライブラリー・コードへ自動的にディスパッチされます。最初に ippStaticInit を呼び出さないと、ライブラリーは標準のライブラリー・コードを使用します。

ダイナミック・ライブラリーを使用する場合、ippStaticInit を呼び出す必要はありません。