前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CUDA12.2发布:引入异构内存管理(HMM)

CUDA12.2发布:引入异构内存管理(HMM)

作者头像
GPUS Lady
发布2023-08-08 08:26:46
8480
发布2023-08-08 08:26:46
举报
文章被收录于专栏:GPUS开发者

6月底,NVIDIA悄悄发布CUDA Toolkit12.2。

新发布的版本引入了异构内存管理(Heterogeneous Memory Management,HMM),实现了主机内存和加速器设备之间的数据无缝共享。

HMM仅在Linux上受支持,并需要使用较新的内核(6.1.24+或6.2.11+)。

HMM要求使用NVIDIA的GPU开放内核模块驱动程序。由于这是HMM的首个发布版本,存在一些限制:

▶ 尚不支持对文件支持的内存进行GPU原子操作。

▶ 尚不支持Arm CPU。

▶ HMM尚不支持HugeTLBfs页面(这是一种罕见的情况)。

▶ 在尝试在父进程和子进程之间共享可访问GPU的内存时,fork()系统调用尚不完全支持。

▶ HMM尚未完全优化,可能比使用cudaMalloc()、cudaMallocManaged()或其他现有CUDA内存管理API的程序性能较慢。不使用HMM的程序的性能不会受到影响。

▶ Linux上默认启用Lazy Loading功能(在CUDA 11.7中引入)。在启动之前,要禁用此功能,请设置环境变量CUDA_MODULE_LOADING=EAGER。Windows的默认启用将在未来的CUDA驱动程序发布中实现。要在Windows上启用此功能,请设置环境变量CUDA_MODULE_LOADING=LAZY。 ▶ 主机NUMA内存分配:使用CUDA虚拟内存管理API或CUDA流有序内存分配器,分配CPU内存以针对特定的NUMA节点。应用程序必须确保在访问设备上通过这些API支持的指针的主机分配之后,仅在显式请求了内存在访问设备上的可访问性后才执行设备访问。无论设备是否支持可分页内存访问,都不允许从没有地址范围可访问性的设备访问这些主机分配。

▶ 增加了CUDA多进程服务(MPS)的运行时客户端优先级映射。这允许在MPS下运行的多个进程在粗粒度级别上在多个进程之间进行优先级仲裁,而无需更改应用程序代码。

NVIDIA 引入了一个新的环境变量CUDA_MPS_CLIENT_PRIORITY,它接受两个值:NORMAL优先级,0,和BELOW_NORMAL优先级,1。

例如,给定两个客户端,可能的配置如下:

// 客户端1的环境

export CUDA_MPS_CLIENT_PRIORITY=0 // NORMAL优先级

// 客户端2的环境

export CUDA_MPS_CLIENT_PRIORITY=1 // BELOW NORMAL优先级

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档