0

我问了一个问题使用 cudaMalloc() 分配的内存是否可以被主机访问? 虽然现在事情对我来说已经很清楚了,但我仍然想知道为什么无法访问主机中的设备指针。我的理解是 CUDA 驱动程序负责 GPU DRAM 内的内存分配。因此,此信息(即我在设备中分配的内存的第一个地址是什么)可以传送到主机上运行的操作系统。然后就可以访问这个设备指针,即分配的设备内存的第一个地址。我的理解有什么问题?请帮助我理解这一点。谢谢

4

1 回答 1

2

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

因此访问方法有很大不同。在访问 GPU 上的内存时,必须将事务构建为一系列 PCIE 周期。设置 PCIE 总线以实现此事务的活动不是内置在现代 CPU 中的普通内存获取周期中。

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

于 2013-10-05T02:36:14.927 回答