如果我使用 CUDA 进行开发,那么我就有机会使用 UVA(统一虚拟寻址)——所有 GPU 的 CPU-RAM 和 GPU-RAM 的单一地址空间。以前这是不可能的,它只出现在 CUDA 4.0 版本中。据我了解 - 它由 nVidia CUDA 驱动程序提供。
http://docs.nvidia.com/cuda/gpudirect-rdma/index.html#basics-of-uva-cuda-memory-management
但是,如果我想在通过 PCI-Express 2.0 16x 连接的单台计算机上使用 GPU 和 FPGA,并且还要让它们使用单个地址空间。 FPGA 中是否有类似于 nVidia UVA 的这种可能性,我需要使用 FPGA“UVA”,并且它们也不会干扰 FPGA“UVA”与 CUDA UVA?
如何做这样的事情? http://research.microsoft.com/pubs/172730/20120625%20UCAA2012_Bittner_Ruf_Final.pdf
最佳答案
您已经找到了似乎可以回答您的问题的 GPUDirect RDMA documentation。
这样,主机就可以启动 GPU 和对等设备之间的数据移动。 UVA 意味着每个设备都有一个唯一的虚拟地址空间部分,但并不意味着任何设备都可以访问另一个设备的内存,您仍然需要使用适当的 API。
请注意,在最简单的级别上,您所要求的只是一个统一的虚拟地址空间。 CPU 和 GPU 已经统一(这就是 UVA),因此它完全取决于您的 FPGA 的工作方式(包括其驱动程序)。 RDMA 部分是对在两者之间移动数据的优化,但文档通常对 UVA 很有用。
关于c++ - 我可以像 CUDA UVA 一样为 GPU、CPU 和 FPGA 使用单个地址空间吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18597954/