0

我正在寻找经验法则来设计由于磁盘速度、pci 速度(gpgpu)或其他瓶颈的限制而缓慢访问数据的算法。

另外,如何管理应用程序内存超过 gpgpu 内存的 gpgpu 程序?

4

1 回答 1

5

一般来说,GPU 内存不应该是对算法数据大小的任意限制。GPU 内存可以被认为是 GPU 当前正在处理的数据的“缓存”,但许多 GPU 算法被设计为处理比“缓存”容纳的更多的数据。这是通过在计算进行时将数据移入和移出 GPU 来实现的,GPU 具有特定的并发执行和复制/计算重叠机制 来实现这一点。

这通常意味着可以在数据部分上完成独立工作,这通常是可并行应用程序中加速的一个很好的指标。从概念上讲,这类似于大型 MPI 应用程序(例如高性能 linpack),将工作分解成碎片,然后将碎片发送到各种机器(MPI 等级)进行计算。

如果数据上要做的工作量与传输数据的成本相比是很小的,那么数据传输速度仍然会成为瓶颈,除非直接通过改变存储系统来解决。

处理核外或数据集太大而无法同时放入 GPU 内存的算法的基本方法是确定可以处理可分离数据的算法版本,然后制作“流水线”算法以块的形式处理数据。这里有一个涵盖这种编程技术的示例教程(焦点从大约 40 分钟开始,但整个视频都是相关的)。

于 2013-05-14T21:24:32.897 回答