Gen*_*idd 4 memory performance ssd gpu ramdisk
我在 GitHub 上尝试了 prsyahmi 的 GPURamDrive 软件,并使用我的 nVidia RTX 2060 的 GDDR6 RAM 创建了一个 5 GB RAM 驱动器。后来我还使用 AMD 的 Radeon RamDisk 软件创建了 4 GB RAM 驱动器。使用 CrystalDiskMark6,我在 RAM 驱动器以及我的主三星 850 EVO SSD 上运行了基准测试。结果令我惊讶,GPU RamDisk 确实具有极快的顺序读/写速度,但三星 SSD 在其他测试中实际上也比 GPU RamDisk 好很多。然后与使用系统 DDR4 内存的传统 RamDisk 相比,它完全击败了 GPU RamDisk。
GPU 中使用的 GDDR6 甚至较旧的 GDDR5 内存不是应该比 DDR4 RAM 快得多吗?就此而言,也比闪存快得多?是软件问题吗?或者,GDDR6 RAM 在用于 RAM 磁盘时是否存在某种本质上不如 DRAM 的因素?
这些是基准测试的结果:
RTX 2060 GDDR6 内存盘:
DDR4 内存盘:
三星 850 EVO 固态硬盘:
GDDR6 确实比 DDR4 更快,而且显卡上的内存布局实际上比标准 DIMM 具有更高的内存带宽。
问题在于,CPU 和 GPU 之间是(相对)较慢的 PCIe 链路,然后才与 GPU 协商内存访问。CPU内存直接连接到CPU,而GPU内存用于高速访问GPU。
我承认x16 PCIe链路的理论带宽约为 16GB/s,但这是理论带宽,GPU 内存可能会映射到 PC 通用内存地址空间,但实际写入需要协商至少两条总线,其中一条已被拥有它的设备(GPU)使用。
GPU 正在使用该内存来绘制屏幕,尽管它可能不会使用大量带宽来绘制桌面,但这确实意味着 RAM 磁盘和板载控制器之间存在一定程度的争用。
然后涉及到协议。PCIe 链路的协议、要求 GPU 在内存中存储某些内容的协议/API、在其之上向操作系统提供磁盘接口的协议/驱动程序(可能使用 CPU 内存来完成所有开销和计算和 GPU 内存来存储实际数据)。
您也很可能从 GPU ramdisk 读取到 CPU 内存缓冲区。是的,数据会立即被丢弃,但它需要转移到某个地方。链条中的另一个环节。
还有一个问题是,您使用的特定驱动程序是通过编程接口工作的,每次您尝试读取或写入 RAM 磁盘中的内存地址时,它都必须被 CPU 捕获,传递给驱动程序,由驱动程序转换为 GPU 上的内存位置,然后将数据传入或传出 GPU。这本质上涉及基于 CPU 的“内存副本”,从读取位置传送到驱动程序。此阶段中的所有内容,除了最后的“放置/给我这部分数据”之外,完全受 CPU 限制。实际的数据传输可能非常快,但这是另一个开销。
GPU 内存带宽应该完全超过 CPU 内存带宽,但还有更多层可以访问该内存。在内部进行批量数据处理而不是由第二个源使用时,它是最有效的。
您并不是“仅仅”使用 GPU 作为 ramdisk。每个步骤的管理都需要大量 CPU 参与,而您只是通过许多接口层使用 GPU 内存作为后备存储。
确实来自https://github.com/prsyahmi/GpuRamDrive
使用 GPU RAM 的速度不如主机主内存,但仍然比常规 HDD 快。...这只是一个PoC(概念验证),建议寻求这种解决方案的用户升级RAM或购买更快的存储。
| 归档时间: |
|
| 查看次数: |
3907 次 |
| 最近记录: |