例:
parallel_for_each(mas.extend,[=](index<1> idx) restrict(amp)
{
...
}
index<1> idx はどのように機能しますか? 仮に、質量で: array_view の数値のセット
例:
parallel_for_each(mas.extend,[=](index<1> idx) restrict(amp)
{
...
}
index<1> idx はどのように機能しますか? 仮に、質量で: array_view の数値のセット
おそらく、インデックスを反復子と考えないでください。これは、コンテナーを介して順次反復することを意味するためです。しかし、これは並列世界であるため、最初から開始して最後まで行くわけではありません。
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++ を使用した並列プログラミング