【发布时间】:2011-09-23 23:03:43
【问题描述】:
我一直在寻找减少 CPU 和 GPU 来回传输数据所导致的延迟的方法。当我第一次开始使用 CUDA 时,我确实注意到 CPU 和 GPU 之间的数据传输确实需要几秒钟,但我并不在意,因为这对于我正在编写的小程序来说并不是一个真正的问题。事实上,对于绝大多数使用 GPU 的程序(包括视频游戏)来说,延迟可能不是什么大问题,因为它们仍然比在 CPU 上运行要快得多。
但是,我是一个 HPC 爱好者,当我看到 Tianhe-I 的理论峰值 FLOPS 与实际 LINPACK 测量的性能之间存在巨大差异时,我开始关注我的研究方向。这引起了我对自己是否走在正确的职业道路上的担忧。
通过使用 cudaHostAlloc() 函数使用固定内存(页面锁定)内存是减少延迟的一种方法(非常有效),但是还有其他我不知道的技术吗?需要明确的是,我说的是优化代码,而不是硬件本身(这是 NVIDIA 和 AMD 的工作)。
作为一个附带问题,我知道戴尔和惠普销售特斯拉服务器。我很好奇 GPU 如何很好地利用数据库应用程序,您需要从硬盘驱动器(HDD 或 SSD)进行持续读取,这是只有 CPU 才能执行的操作,
【问题讨论】:
-
@Misha 你说得对,这篇文章描述了我心目中的挑战。谢谢...
-
关于天河-IA的低翻牌效率:虽然GPU具有强大的算术能力(通常难以充分利用),但不要忘记GPU内存架构也起着重要作用甚至计算密集型内核的性能也可以大大优于 CPU 实现。
标签: optimization memory cuda data-transfer latency