统一寻址下cuMemcpy跨设备跨上下文拷贝是否合法?
CUDA跨上下文内存拷贝合法性问题解答
- 结论:这种调用是不合法的,会触发未定义行为或调用失败。
- 核心原因:即使驱动支持统一寻址(UVA),
cuMemcpy()的操作依然受当前上下文限制。当前上下文C0绑定GPU G0,无法直接访问GPU G1的设备内存——UVA只是让主机能识别不同GPU的内存地址空间,并没有打破上下文对设备内存的访问隔离。 - 正确做法:要将G1的设备内存拷贝到主机,必须先切换到G1对应的上下文(比如通过
cuCtxPushCurrent()激活G1的上下文),完成拷贝后再切回原上下文;或者使用专门的跨设备/跨上下文内存操作API。
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

