所有分类
  • 所有分类
  • 未分类

简化 GPU 应用程序开发的异构内存管理

?最新资讯?
这篇文章最初发表在 NVIDIA 技术博客上。异构内存管理(HMM)是一种 CUDA 内存管理功能,它扩展了 CUDA 统一内存 的编程模型,包括系统分配内存在具有 PCIe 连接的 NVIDIA GPU 的系统上。系统分配内存是指最终由操作系统分配的内存;例如,通过 malloc,mmap,C++ 新操作员(当然使用前面的机制),或为应用程序设置 CPU 可访问内存的相关系统例程。以前,在基于 PCIe 的机器上, GPU 无法直接访问系统分配的内存。 GPU 只能访问来自特殊分配器的内存,例如库达马洛克或cudaMallocManaged。启用 HMM 后,所有应用程序线程( GPU 或 CPU )都可以直接访问应用程序系统分配的所有内存。与统一内存(可以被认为是 HMM 的子集或前身)一样,不需要在处理器之间手动复制系统分配的内存。这是因为它会根据处理器的使用情况自动放置在 CPU 或 GPU 上。在 CUDA 驱动程序堆栈中, CPU 和 GPU 页错误通常用于发现内存应该放在哪里。同样,这种自动放置已经在统一内存中发生了——HMM 只是将行为扩展到覆盖系统分配的内存以及cudaMallocManaged记忆力这种直接读取或写入整个应用程序内存地址空间的新能力将显著提高基于 CUDA 之上构建的所有编程模型的程序员生产力: CUDA C++、Fortran、 Python 中的标准并行性、ISO C++、ISO Fortran、OpenACC、OpenMP 和许多其他模型。事实上,正如即将到来的示例所示,HMM 将 GPU 编程简化到 GPU programming 几乎与 CPU 编程一样可访问的程度。一些亮点:编写 GPU 程序时,功能不需要显式内存管理;因此,一个初始的“初稿”程序可以是小而简单的。显式内存管理(用于性能调优)可以推迟到稍后的开发阶段。对于不区分 CPU 和 GPU 存储器的编程语言, GPU programming 现在是实用的。大型应用程序可以被 GPU 加速,而不需要大型内存管理重构或更改第三方库(源代码并不总是可用的)。顺便说一句,NVIDIA Grace Hopper 通过硬件实现了所有 CPU 和 GPU 之间的内存一致性,从而本地支持统一内存编程模型。对于这样的系统,不需要 HMM,事实上,HMM 在这种情况下会被自动禁用。可以将 HMM 视为一种基于软件的方式,它提供了与 NVIDIA Grace Hopper Superchip 类似的功能。要了解有关 CUDA 统一内存的更多信息,请参阅本文末尾的参考资料部分。HMM 之前的统一内存原件 CUDA Unified Memory 是在 2013 年推出的功能,只需进行一些更改,就可以加速 CPU 程序,如下所示:HMM 之前仅限于 CPUvoid sortfile(FILE* fp, int N) { char* data; data = (char*)malloc(N); fread(data, 1, N, fp); qsort(data, N, 1, cmp); use_data(data); free(data);}HMM 之后CUDA 统一内存(2013)void sortfile(FILE* fp, int N) { char* data; cudaMallocManaged(&data, N); fread(data, 1, N, fp); qsort<<<…>>>(data, N, 1, cmp); cudaDeviceSynchronize(); use_data(data); cudaFree(data);}此编程模型简单、清晰且功能强大。在过去的 10 年里,这种方法使无数应用程序能够轻松地从 GPU 加速中受益。然而,仍有改进的空间:请注意需要一个特殊的分配器:cudaMallocManaged,以及相应的cudaFree。如果我们能走得更远,摆脱这些呢?HMM 就是这么做的。HMM 之后的统一内存在带有 HMM 的系统上(详细信息如下),继续使用malloc和自由的:HMM 之前仅限于 CPUvoid sortfile(FILE* fp, int N) { char* data; data = (char*)malloc(N); fread(data, 1, N, fp); qsort(data, N, 1, cmp); use_data(data); free(data);}HMM 之后CUDA 统一内存+HMM(2023)void sortfile(FILE* fp, int N) { char* data; data = (cha
来源:https://juejin.cn/ai

原文链接:https://aixinjiyuan.com/529.html,转载请注明出处~~~
0
广告位招租

评论0

请先
暂时无公告
显示验证码
没有账号?注册  忘记密码?