问题描述
因此,本指南here显示了重叠内核执行和数据传输的一般方法。
{
"example1": {
"example2": {
"example3": 4
}
}
}
但是,内核是串行的。因此,它必须处理0-> 1000,然后处理1000-> 2000,...总之,在重叠数据传输时正确执行此内核的顺序为:
- 复制[a-> b]必须在内核[a-> b]之前发生
- 内核[a-> b]必须在内核[b-> c]之前发生,其中c> a,b
是否可以不使用cudaStream_t streams[nStreams];
for (int i = 0; i < nStreams; ++i) {
cudaStreamCreate(&streams[i]);
int offset = ...;
cudaMemcpyAsync(&d_a[offset],&a[offset],streamBytes,cudaMemcpyHostToDevice,stream[i]);
kernel<<<streamSize/blockSize,blockSize,stream[i]>>>(d_a,offset);
// edit: no deviceToHost copy
}
来执行此操作?如果没有,最快的方法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)