1

CUDA のThrust ライブラリのドキュメントによると、次の4 つのパラメーターthrust::inclusive_scan()があります。

OutputIterator thrust::inclusive_scan(InputIterator       first,
                                      InputIterator       last,
                                      OutputIterator      result,
                                      AssociativeOperator binary_op 
                                     )  

ただし、(同じドキュメントの) 使用法のデモでは、5 つのパラメーターを渡します。追加の 4 番目のパラメーターが、スキャンの初期値として渡されます (まったく同じようにthrust::exclusive_scan())。

int data[10] = {-5, 0, 2, -3, 2, 4, 0, -1, 2, 8};
thrust::maximum<int> binary_op;
thrust::inclusive_scan(data, data + 10, data, 1, binary_op); // in-place scan

現在、私のコードは 4 つのパラメーターを渡してコンパイルするだけです (5 を渡すとエラーが発生no instance of overloaded function "thrust::inclusive_scan" matches the argument listします) が、例のようにローリング最大値を初期化する必要があります。

包括的スキャンを初期化する方法を明確にすることはできますか?

どうもありがとう。

4

1 に答える 1

2

包括スキャン操作が何であるかを理解していないようです。包括的スキャンを初期化するようなものはありません。定義により、包括的スキャンの最初の値は常にシーケンスの最初の要素です。

だからシーケンスのために

 [ 1, 2, 3, 4, 5, 6, 7 ]

包括的スキャンは

[ 1, 3, 6, 10, 15, 21, 28 ]

排他的スキャン (ゼロに初期化) は

[ 0, 1, 3, 6, 10, 15, 21 ]
于 2013-01-13T19:52:58.160 に答える