accelerator Acs;//選ばれたacceleratorオブジェクトが入っているとします。
array<int , 2> *pvA;
pvA = new array<int , 2>(100 , 100, Acs.get_default_view());
array_view<int , 2> vaC = *pvA;
extent<2> exA;
//100*100スレッド発行予定。
exA[0] = 100;
exA[1] = 100;
parallel_for_each(
Acs.get_default_view() ,//計算させたいGPUを指定。
exA , //スレッド数を指定。
[=](index<2> iC) restrict(amp)
{
//このコードは並列に動く。
int i = iC[0]; //iC[0]にはこの場合0-99のスレッド番号が入っている。
int j = iC[1]; //iC[1]にはこの場合0-99のスレッド番号が入っている。
vaC[iC] = 0; //indexクラスでアクセス
vaC[i][j] = 0; //この記述はエラー
}
);
accelerator Acs;//選ばれたacceleratorオブジェクトが入っているとします。
array<int , 2> *pvA;
pvA = new array<int , 2>(100 , 100, Acs.get_default_view());
array_view<int , 2> vaC = *pvA;
extent<1> exA;
//10000スレッド発行予定。
exA[0] = 10000;
parallel_for_each(
Acs.get_default_view() ,//計算させたいGPUを指定。
exA , //スレッド数を指定。
[=](index<1> iC) restrict(amp)
{
//このコードは並列に動く。
int i = iC[0]%100; //iC[0]にはこの場合0-9999のスレッド番号が入っている。
int j = iC[0]/100;
index<1> iC2;
iC2[0] = i;
iC2[1] = j;
vaC[iC2] = 0; //indexクラスでアクセス
vaC[iC] = 0; //この記述は無理。エラー
}
);