Closed. This question needs to be more focused. It is not currently accepting answers. Learn more
想改进这个问题吗?更新问题,使其只关注一个问题editing this post
我在寻找设计算法的经验法则,在这种算法中,由于磁盘速度、pci速度(gpgpu)或其他瓶颈的限制,数据访问缓慢。
另外,如何管理应用程序内存超过gpgpu内存的gpgpu程序?

最佳答案

一般来说,gpu内存不应该是对算法数据大小的任意限制。gpu存储器可以被认为是gpu当前正在运行的数据的“缓存”,但是许多gpu算法的设计都是为了在超出“缓存”容量的数据上运行。这是通过在计算过程中在GPU之间来回移动数据来实现的,GPU有特定的concurrent execution and copy/compute overlap mechanisms来实现这一点。
这通常意味着可以在数据段上完成独立的工作,这通常是可并行化应用程序中加速的一个好指标。从概念上讲,这类似于大规模的mpi应用程序(如高性能linpack),它们将工作分解为若干部分,然后将这些部分发送到不同的计算机(mpi列组)进行计算。
如果要对数据执行的工作量与传输数据的成本相比很小,那么数据传输速度仍将成为瓶颈,除非直接通过更改存储系统来解决。
当数据集太大而无法同时存储在gpu内存中时,处理内核外或算法的基本方法是确定一个可以处理可分离数据的算法版本,然后设计一个“流水线”算法来处理分块数据。介绍这种编程技术的一个示例教程是here

关于algorithm - 什么是(如果有的话)设计内核/外部存储器算法的标准方法? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16552805/

10-15 16:02