0

例:

parallel_for_each(mas.extend,[=](index<1> idx) restrict(amp)
{
...
}

index<1> idx はどのように機能しますか? 仮に、質量で: array_view の数値のセット

4

1 に答える 1

0

おそらく、インデックスを反復子と考えないでください。これは、コンテナーを介して順次反復することを意味するためです。しかし、これは並列世界であるため、最初から開始して最後まで行くわけではありません。

index<1> idx

あなたの例でidxは、ランク(次元)1のインデックスオブジェクトです。したがって、1次元のarray_viewコンテナにインデックスを付けます。つまりmas、1 次元でもある必要があります。

array_view<const int, 1> mas;

parallel_for_each 本体内で、idx必要に応じて にインデックスを付けるために使用できますmas

size_t i = idx[0]; 
int value = mas[i];

ただし、array_view 内の絶対位置が重要でない場合は、インデックスを使用する必要はありません。のすべてのアイテムmasが処理されます。

たとえば、array_view が値の 2D マトリックスである場合、ランク 2 のインデックスがあり、たとえばidx[0]、行をidx[1]参照し、列を参照します。

これらの概念を理解するには、この無料のオンライン ブックが非常に貴重であることがわかりました。Microsoft Visual C++ を使用した並列プログラミング

于 2015-05-21T08:10:01.670 に答える