私はこのデータベース検索アプリケーションをCUDAで高速化しようとしています。私はCUDAと並行してコアアルゴリズムを実行しています。ブロック/グリッドとスレッド/ブロックを活用するには?
1つのテストでは、グリッドあたり500ブロックとブロックあたり100スレッドのサイズ5000のデジタルシーケンスにわたってアルゴリズムを並列に実行し、およそ500ミリ秒のランタイムで復帰しました。
次に、デジタルシーケンスのサイズを8192に増やしました.1ブロックあたり128ブロック、ブロックあたり64スレッドでした。アルゴリズムを実行するのに350 msという結果が返ってきました。
これは、使用されたブロックとスレッドの数と、その関連性がパフォーマンスに影響することを示します。
私の質問はブロック/グリッドとスレッド/ブロックの数を決定する方法ですか?
私は標準のデバイスクエリプログラムからの私のGPUのスペックを持っている以下:
また、マルチプロセッサごとにバランスのとれた作業量を確保するようにしてください。スレッドのブロック数をおおよそマルチプロセッサ数の倍数にしてください。これは小さなグリッドにとってより重要です。非常に大きなグリッドの場合、マルチプロセッサあたり1ブロックの違いはそれほど重要ではありません。 – harrism
@ seljuq70 fp32操作でのfermiアーキテクチャの適切な比率は、ECCオフの場合は4.5、ECCの場合は – fabrizioM
です。誰かがそれをテストしたか、NVIDIAがどこかに言いました。いずれにしても分かります – jmsu