CUDA 6/8 中的统一内存

原文

通过CUDA 6,英伟达推出了 CUDA 平台历史上最引人注目的编程模型改进之一——统一内存。在当今典型的PC或集群节点中,CPU和GPU的内存在物理上是不同的,并由PCI-Express总线分隔开。在 CUDA 6 之前,这正是程序员看待事物的方式。CPU 和 GPU 之间共享的数据必须分配在两个内存中,并由程序显式地在它们之间复制。这给 CUDA 程序增加了很多复杂性。

CUDA 6/8 中的统一内存_第1张图片

统一内存创建一个托管内存池,在 CPU 和 GPU 之间共享,弥合 CPU 和 GPU 之间的鸿沟。使用一个指针,CPU 和 GPU 都可以访问托管内存。关键是系统自动在主机和设备之间的统一内存中迁移分配的数据,使其看起来像 CPU 内存在 CPU 上运行,又像 GPU 内存在 GPU 上运行。

在本文中,我将向您展示统一内存如何显著简化 GPU 加速的应用程序中的内存管理。下图显示了一个非常简单的例子。这两种代码都从磁盘加载文件,对其中的字节进行排序,然后在释放其内存之前,在 CPU 上使用排序后的数据。右边的代码使用 CUDA 和统一内存在 GPU 上运行。唯一的区别是,GPU 版本

你可能感兴趣的:(CUDA)