【发布时间】:2015-02-01 15:20:00
【问题描述】:
是否可以直接从 GPU (CUDA/openCL) 访问硬盘/闪存盘并直接从 GPU 的内存加载/存储内容?
我试图避免将内容从磁盘复制到内存,然后再将其复制到 GPU 的内存。
我阅读了有关 Nvidia GPUDirect 的信息,但不确定它是否符合我上面的解释。它讨论了远程 GPU 内存和磁盘,但在我的例子中,磁盘是 GPU 本地的。
基本思想是加载内容(类似于 dma)-> 执行一些操作 -> 将内容存储回磁盘(再次以 dma 方式)。
我试图在这里尽可能少地涉及 CPU 和 RAM。
请随时提供有关设计的任何建议。
【问题讨论】:
-
有人能解释一下这个问题有什么问题吗?
-
没有主机干预是不可能的。主机拥有磁盘驱动器。 GPUDirect 从根本上是用于在 PCIE 设备之间传输数据。如果您有自己的 PCIE HDD 控制器,在与 GPU 相同的 PCIE 结构上,并且可以访问设备驱动程序源代码,您可以想象编写一个 GPUDirect RDMA 驱动程序,该驱动程序允许从 GPU 直接传输到磁盘。 (它仍然需要主机干预才能设置。)实际上,没有人认为这是您想要承担的工作量。
-
实际上,系统内存吞吐量(25-50 GB/秒)和 PCIe gen3 吞吐量(10-12 GB/秒)与 SSD 吞吐量(0.5 GB/秒)相比非常高,以至于在通过主机移动数据时,对 GPU 磁盘传输的吞吐量的影响应该很小。延迟可能是另一回事,但问题并未说明具体的延迟或吞吐量要求。
-
@Siddharth 你可能想看看this GTC 2014 presentation,它讨论了 GPUdirect RDMA 访问类似 SSD 的存储。
-
@bit2shift 据我所知,Radeon SSG 产品在这一点上是蒸汽软件,或者,如果你愿意的话,是概念验证。据我所知,它将两个 SSD(在 RAID0 配置中)耦合到 GPU,每个都有一个 PCIe gen3 x4 链接,这意味着 SSD 到 GPU 链接的总吞吐量是 GPU 的普通 PCIe x16 链接的一半到系统。它可能以较低的延迟这样做,但在我看来并不像游戏规则改变者。
标签: cuda parallel-processing opencl gpu