我试图理解 CUDA 中统一虚拟寻址 (UVA) 的概念。我有两个问题:
是否有任何可用的示例(psudo)代码来演示这个概念?
我在 CUDA C Programming Guide 中读到 UVA 只能用于 64 位操作系统。为什么会这样?
统一的虚拟地址空间将设备代码中使用的指针(值)和分配映射与主机代码中使用的指针(值)和分配映射组合到一个统一的空间中。
1-是否有任何可用的示例(psudo)代码来演示这个概念?
如何使用它的一个例子是使用cudaMemcpyDefault
转移种类说明符,代替cudaMemcpyDeviceToHost
或cudaMemcpyHostToDevice
在cudaMemcpy
操作中。
2-我还在编程指南中读到它仅与 64 位操作系统相关联。为什么会这样?
32 位机器的最大可寻址空间为 4 GB。在现代 GPU(可能具有数 GB 的内存)和现代 PC(可能具有数 GB 的内存和 I/O 空间)中,这并不足以方便地在其中定义主机和设备内存空间。