誰かが同時Cudaストリームのデータ独立性要件を説明できますか?次のカーネルを8つの同時ストリームで実行したいとします
Kernel<<<blocks, threads>>>(float *readOnlyInput, float *output);
すべてのストリームが同じ*readOnlyInputを読み取り、異なる*出力配列に書き込むことができますか?
または、同時実行性を実現するために、異なるメモリ位置からもデータを読み取る必要がありますか?
上記の擬似コードスニペットは同時に実行されますか、それとも同時実行性を確保するために* readOnlyInput + i * sizeが必要ですか?
cudaStream_t stream[8];
int size = 1000;//some array size
int blocks =2, threads=256;//some grid dims
for (int i = 0; i < 8; ++i){
cudaStreamCreate(&stream[i]);
}
for (int i = 0; i < 8; ++i){
Kernel<<<blocks, threads, stream[i]>>>(float *readOnlyInput, float *output + i*size);
}