インテル® C++ コンパイラは、OpenMP* ランタイム・ライブラリへの拡張機能として、次の関数グループをサポートしています。
ここで説明するインテル拡張機能は、ライブラリ・コードとアプリケーションが目的どおりに機能することを確認する低レベルのデバッグに使用できます。これらの関数を使用するには、プログラムをシーケンシャルに実行する-Qopenmp_stubs コマンドライン・オプションを使用しなければならないため、充分注意して使用してください。これらの関数はまた、一般的に他のベンダのOpenMP互換コンパイラには認識されません。これらのコンパイラでは、リンクの段階で失敗します。
注
以下の関数は、プリプロセッサ・ディレクティブ#include <omp.h>を必要とします。
多くの場合、ディレクティブは拡張命令の代わりに使用されます。例えば、並列スレッドのスタックサイズは、kmp_set_stacksize_s()関数ではなく、KMP_STACKSIZE環境変数を使用して設定します。
注
インテル拡張機能へのランタイムの呼び出しは、対応する環境変数の設定よりも優先します。下の「スタックサイズ」表でスタックサイズ関数の定義を参照してください。
インテル C++ コンパイラでは、OpenMP ランタイム・ライブラリに対する拡張機能として、メモリ割り当て関数を実装しています。そのため、スレッドは各スレッドにローカルなヒープからメモリを割り当てることが可能です。これらの関数は、kmp_malloc()、kmp_calloc()およびkmp_realloc()です。これらの関数によって割り当てられたメモリは、kmp_free() 関数によって解放する必要があります。あるスレッドによってメモリを割り当て、別のスレッドでメモリをkmp_free()を呼び出しても不正な処理ではありませんが、このような処理によってパフォーマンスが多少低下します。下の「メモリの割り当て」表でこれらの関数の定義を参照してください。
関数 | 説明 |
---|---|
kmp_get_stacksize_s() | 各並列スレッドがプライベート・スタックとして使用するバイト数を返します。この値は、最初の並列領域の前にkmp_set_stacksize_s()で変更するか、またはKMP_STACKSIZE環境変数で変更できます。 |
kmp_get_stacksize() | この関数は、下位互換性のみ提供します。異なるインテル・プロセッサとの互換性には kmp_get_stacksize_s()を使用します。 |
kmp_set_stacksize_s(size) | 各並列スレッドがプライベート・スタックとして使用するバイト数をsizeに設定します。この値は、KMP_STACKSIZE環境変数を経由しても設定できます。 kmp_set_stacksize_s()を有効にするには、プログラムの最初の(動的に実行された)並列領域の先頭の前に呼び出す必要があります。 |
kmp_set_stacksize(size) | この関数は、下位互換性のみ提供します。異なるインテル・プロセッサとの互換性には kmp_set_stacksize_s() を使用します。 |
関数 | 説明 |
---|---|
kmp_malloc(size) | スレッド・ローカル・ヒープから size バイトのメモリブロックを割り当てます。 |
kmp_calloc(nelem, elsize) | スレッド・ローカル・ヒープからサイズelsizeのnelem要素の配列を割り当てます。 |
kmp_realloc(ptr, size) | スレッド・ローカル・ヒープからアドレス ptr および size バイトにメモリブロックを再割り当てします。 |
kmp_free(ptr) | スレッド・ローカル・ヒープからアドレス ptr のメモリブロックを解放します。メモリは、以前に kmp_malloc()、 kmp_calloc()、または kmp_realloc()に割り当てられている必要があります。 |