インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
SIMD レーンの論理的な順序でシリアルに実行すべきループのコードブロックまたは SIMD 対応関数を指定します。
#pragma simdoff |
structured-block
なし。
simdoff ブロックは、1 つの SIMD レーンを使用して、ループの反復または SIMD 対応関数の論理的なレーンの順序で操作を実行します。 ブロック内の操作の順序が保持され、囲まれた SIMD 構造の反復空間に関連付けられます。 ordered simd ブロックは、各 SIMD レーンまたは各ループ反復順に実行されます。 ordered simd または simdoff ブロック内の操作は、オリジナルの実行セマンティクスが保持される限り、最適化によって並べ替えることができます。
simdoff ブロックは、SIMD 実行を妨げている状況の切り離しと解決を可能にします。 これには、反復間のデータ依存関係、副作用のある関数呼び出し (OpenMP*、インテル® TBB、およびネイティブ・スレッドの同期プリミティブなど) が含まれます。
simdoff セクションは、データ並列計算で繰り返し間の依存関係を解決するのに役立ちます。 例えば、次のように、simdoff セクションでヒストグラムをアップデートすることができます。
例 |
---|
|