インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
このトピックは、インテル® グラフィックス・テクノロジーをターゲットとする IA-32 およびインテル® 64 アーキテクチャーにのみ適用されます。
多数のスレッドをスケジュールすることで、一部の操作のレイテンシーを隠蔽できます。ただし、スレッド数を大きくすると、オフロードのコストが増加したり、パフォーマンスが低下することがあります。デフォルトでは、ランタイムは並列化されたループの反復数と同じスレッド数をスケジュールしようとしますが、ハードウェア・スレッド数の 2 ~ 4 倍のように小さなスレッド数で最適な結果が得られることがあります。ハードウェア・スレッド数は、ハードウェア・プラットフォームに依存します。利用可能なハードウェア・スレッド数を確認するには、GFX_LOG_OFFLOAD 環境変数を 1 に設定してプログラムを実行します。
実際のスレッド数を監視するには、GFX_LOG_OFFLOAD 環境変数を 2 に設定します。
実際のスレッド数と並列ループの入れ子の反復空間の配分を監視するには、GFX_LOG_OFFLOAD 環境変数を 3 に設定します。
デフォルトの最大スレッド数をオーバーライドするには、GFX_MAX_THREAD_COUNT 環境変数を使用します。 例えば、最大スレッド数を 32 に設定するには、次のように設定します。
set GFX_MAX_THREAD_COUNT=32
次の 2 つの値には特別な意味があります。
- 1 (デフォルト): 並列ループの入れ子の反復ごとに 1 スレッドを生成します。ループは、ベクトル化することが可能です。1 スレッドにより実行される 1 反復には、オリジナル・ループの複数の反復が含まれている可能性があります。
0: スレッド数は N*hardware_thread_count になります。N に設定可能な値は次のとおりです。
4: 1 次元のループの入れ子の場合
8: 2 次元以上のループの入れ子の場合 プログラムのパフォーマンスをチューニングする場合は、この値を使用すると良いでしょう。
「スレッドグループとスレッド空間の形状の制御」の関数と環境変数は、GFX_MAX_THREAD_COUNT よりも優先されます。