Algorithm 设计核心外/外部内存算法的标准方法是什么(如果有)?

Algorithm 设计核心外/外部内存算法的标准方法是什么(如果有)?,algorithm,cuda,gpgpu,scientific-computing,hpc,Algorithm,Cuda,Gpgpu,Scientific Computing,Hpc,我正在寻找经验法则,用于设计由于磁盘速度、pci速度(gpgpu)或其他瓶颈限制而访问数据速度缓慢的算法 此外,如果应用程序的内存超过gpgpu内存,如何管理gpgpu程序?一般来说,GPU内存不应是对算法数据大小的任意限制。GPU内存可以被视为GPU当前正在运行的数据的“缓存”,但许多GPU算法设计用于运行的数据超过了“缓存”的容量。这是通过在计算过程中向GPU移动数据和从GPU移动数据来实现的,GPU有专门的方法来实现这一点 这通常意味着可以在数据的各个部分上完成独立的工作,这通常是可并行化

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


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

一般来说,GPU内存不应是对算法数据大小的任意限制。GPU内存可以被视为GPU当前正在运行的数据的“缓存”,但许多GPU算法设计用于运行的数据超过了“缓存”的容量。这是通过在计算过程中向GPU移动数据和从GPU移动数据来实现的,GPU有专门的方法来实现这一点

这通常意味着可以在数据的各个部分上完成独立的工作,这通常是可并行化应用程序中加速的良好指标。从概念上讲,这类似于大规模MPI应用程序(如高性能linpack),它将工作分解为多个部分,然后将这些部分发送到各种机器(MPI列)进行计算

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


处理数据集太大而无法一次装入GPU内存的核心外或算法的基本方法是确定一个可以处理可分离数据的算法版本,然后设计一个“流水线”算法来处理数据块。介绍这种编程技术的示例教程是(焦点大约从40分钟开始,但整个视频都是相关的)。

一般来说,GPU内存不应任意限制算法的数据大小。GPU内存可以被视为GPU当前正在运行的数据的“缓存”,但许多GPU算法设计用于运行的数据超过了“缓存”的容量。这是通过在计算过程中向GPU移动数据和从GPU移动数据来实现的,GPU有专门的方法来实现这一点

这通常意味着可以在数据的各个部分上完成独立的工作,这通常是可并行化应用程序中加速的良好指标。从概念上讲,这类似于大规模MPI应用程序(如高性能linpack),它将工作分解为多个部分,然后将这些部分发送到各种机器(MPI列)进行计算

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


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

这是一个非常广泛的问题,以至于我怀疑它是否能像所写的那样合理地回答。你有什么具体的想法吗?这是一个非常广泛的问题,以至于我怀疑它是否能像书面上那样合理地回答。你有什么特别的想法吗?该视频不可用,你能更新吗?我也找不到该视频,所以我更新了链接以反映不同的资源。该视频不可用,你能更新吗?我也找不到该视频,所以我更新了链接以反映不同的资源。