以下のお手伝いをお願いします。
入力として配列を持つカーネル関数があり、計算後、それらの配列の1つがその値を変更します。これをdev_arrayと呼びます。
カーネル計算の入力としてdev_arrayを約80回使用して、後でメインで使用されるdev_arrayの正しい結果を取得できるようにします。
どうやってやるの?スレッド条件の前に、カーネル内でループを使用してみました。
while(i<80){
i++;
if(tidx<N){`
//calculating dev_array then using it again at the beginning of while
}
}
しかし、それは機能しませんでした。無限ループになっているように見えました。
メインからカーネルを80回呼び出し、常にmemcopyを実行するだけでは不十分です。
while(i<80){
i++;
cudaMemcpy(dev_array,cudaMemcpyHostToDevice);
kernel<<<grid,block>>>(dev_array);
cudaMemcpy(dev_array,cudaMemcpyDeviceToHost);
}
助けてくれてありがとう