正在cudaMemcpyAsync中复制0字节

正在cudaMemcpyAsync中复制0字节,cuda,Cuda,我很想知道如果我将cudaMemcpyAsync中的参数“count”设置为零会发生什么,即cudaMemcpyAsync(dst、src、count、cudamemcpydevicetoost、stream)?在我的代码中,函数返回cudaSuccess,但复制是否仍在执行?错误,是的,从源到目标复制了零字节 但是,由于复制和不复制对于特定的大小没有区别,所以这是不相关的 如果您询问是否有任何类型的设备来为零大小的缓冲区进行主机通信,那么这是一个未指定的实现细节(不过我不会打赌,因为这会有点低

我很想知道如果我将cudaMemcpyAsync中的参数“count”设置为零会发生什么,即cudaMemcpyAsync(dst、src、count、cudamemcpydevicetoost、stream)?在我的代码中,函数返回cudaSuccess,但复制是否仍在执行?

错误,是的,从源到目标复制了零字节

但是,由于复制和不复制对于特定的大小没有区别,所以这是不相关的


如果您询问是否有任何类型的设备来为零大小的缓冲区进行主机通信,那么这是一个未指定的实现细节(不过我不会打赌,因为这会有点低效)。

谢谢!这很有帮助。我想知道主机和设备之间是否会有任何通信,例如中断或类似的事情,即使技术上没有复制任何内容。这有关系吗?如果担心额外的开销,您可以轻松地自己检查大小,而不必调用cudaMemcpy。问题是,从主机到设备复制-1字节,从设备到主机复制1字节吗?:)