2

ブロックの平均化について質問があります。サイズが 256*512 の入力データがあり、1 つのブロックに 256 のスレッドを配置したため、合計 512 のブロックがあります。出力は 256 のサイズである必要があります。各要素は、異なるブロック間で同じスレッド ID の平均です。つまり、512 ブロックすべてのスレッド 1 が平均化され、結果が出力配列のスレッド 1 に渡されます。同様に、512 個のブロックすべてからのスレッド 2 が平均化され、出力配列のスレッド 2 に与えられます。共有メモリを使用してブロック内で平均を実行するのは非常に高速で効率的であることは知っていますが、それはここでの条件ではありません。NPP 関数を使用すると、for ループ内で実行できますが、実際には時間がかかります。ブロック全体の平均を効率的に行う方法を提案できる人はいますか? どうもありがとう!

4

1 に答える 1

2

ブロックごとに 512 のスレッドを実行し、ブロック内の合計を計算するために共有メモリの合計削減を行い、512 で除算してグローバル メモリに格納しないでください。

また、キーごとの削減操作を使用して、推力を使用してこれをすばやくコーディングすることもできます。

于 2012-08-10T11:35:10.147 に答える