统一内存编程 Unified Memory

它允许开发者在编写并行计算程序时,不必显式地管理数据在 CPU 和 GPU 之间的传输。统一内存的引入旨在简化 CUDA 编程,提高开发效率,并通过自动将数据迁移到正在使用它的处理器上来优化数据访问速度。

统一内存的工作原理是提供一个单一的、连续的虚拟地址空间,这个空间对系统中的所有处理器(包括 CPU 和 GPU )都是可见的。底层的 CUDA 运行时系统负责管理数据的实际物理位置,并在必要时自动将数据迁移到适当的设备上。这意味着开发者可以使用单一的指针来引用统一内存中的数据,而不需要担心数据实际上是存储在主机内存还是GPU显存中。

统一内存提供了诸多便利,但它也可能引入一些问题,如内存抖动。