为什么我们无法访问主机端的设备内存?

时间:2013-10-05 01:51:41

标签: c cuda gpu nvidia

我问了一个问题Memory allocated using cudaMalloc() is accessable by host or not? 虽然现在对我来说很清楚,但我仍然想知道为什么不能在主机中访问设备指针。我的理解是CUDA驱动程序负责GPU DRAM内部的内存分配。因此,此信息(即我在设备中分配的内存的第一个地址)可以传达给在主机上运行的OS。然后,可以访问该设备指针,即分配的设备存储器的第一个地址。我的理解有什么问题?请帮助我理解这一点。谢谢你

1 个答案:

答案 0 :(得分:2)

GPU内存位于PCIE总线的另一侧。现代PC架构中主机内存的内存控制器直接连接到CPU。

因此访问方法有点不同。访问GPU上的内存时,事务必须构成一系列PCIE周期。设置PCIE总线以实现此事务的活动不会内置于现代CPU中的普通内存提取周期中。

因此,我们需要软件交互(由cudaMemcpy处理)来完成软件序列,该序列将在PCIE总线上编程循环,以发送或获取位于总线另一侧的数据。