cudaMemcpy
允许程序员明确指定内存传输的方向。
手动指定内存传输方向( cudaMemcpyDeviceToHost
/cudaMemcpyHostToDevice
/cudaMemcpyDeviceToDevice
)而不是让 cuda 从指针值自动推断( cudaMemcpyDefault
)有什么好处?
最佳答案
tl;dr:几乎可以肯定没有优势。cudaMemcpyDefault
当 GPU 开始能够通过检查地址(“统一虚拟寻址”)轻松识别内存空间时,添加了 IIRC。在此之前,您必须指定方向。例如,参见 CUDA 3 文档,可访问 here .在 API 引用中查找 cudaMemcpyKind - 没有默认值,只有 H2H、H2D、D2H 和 H2H。
当这种情况发生变化时,我想 nVIDIA 不重载函数或以不同的方式命名它是有意义的,而只是为新功能添加不同的常量值。
我不是 100% 确定没有区别,只是非常合理;从轶事个人经验来看,我没有看到任何优势/差异。当然,复制速度并不快。
关于memory - cudaMemcpy 传输种类 : Default vs HostToDevice/DeviceToHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55475630/