サイズ 2^18 の 2 つの列ベクトルに対して SAXPY を実行する単純な CUDA カーネルを作成しました。
私の GPU である Tesla C2070 は、ブロックごとに最大 1024 スレッドを実行できることがわかりました。したがって、ブロック サイズを X = 1024、Y = 1、Z = 1 にしました。グリッド サイズも X = 2^18 / 1024、Y = 1、Z = 1 にしました。ブロックごとのすべての単一スレッドが使用されていたこと。
ただし、ブロック サイズ X = 512 および X = 128 でカーネルを実行すると、ブロック サイズ X = 1024 でカーネルを実行するよりも一貫して高速になることがわかりました。
何故ですか?ブロック サイズが 1024 未満の場合、スレッドを浪費していませんか?