0

並列削減を実行したいのですが、共有メモリ内のデータを使用してカーネル内で実行します。これはスラストライブラリで可能ですか?何かのようなもの

int sum = thrust::reduce(myIntArray, myIntArray+numberOfItems, (int) 0, thrust::max_element<int>());

しかし、これはカーネル内では機能しません。出来ますか?ありがとうございました。

4

1 に答える 1

1

いいえ、thrust :: reduce()は、データがGPU上にある場合にCUDAカーネルを実行するホスト関数です。

推力源を掘り下げて、__device__それが低減に使用する機能を見つける必要があります。それらはカーネルから呼び出すことができます。リダクションのロジックが他の__global__カーネルに含まれている場合は、それを使用するために手動でつなぎ合わせる必要があります。

于 2012-04-16T18:10:52.667 に答える