支持 CUDA 统一内存的系统分配器的操作系统版本

OS versions that support the system allocator for CUDA Unified Memory?

本文关键字:系统 分配器 操作系统 版本 内存 CUDA 支持      更新时间:2023-10-16

从这里发布的幻灯片来看,似乎仅在Linux内核版本4.14或更高版本上支持通过调用mallocnew来使用系统分配器而不是Nvidia的cudaMallocManaged?... 如果是这样,有没有办法查询 Nvidia 驱动程序或 CUDA 运行时以了解系统分配器是否可用于正确分配内存块以在 CUDA 统一内存模型中使用?或者,如果检测到的操作系统不在白名单上,则必须保留操作系统/内核版本的白名单并回退到传统cudaMallocManaged? 如果是后者,有谁知道批准的操作系统版本白名单?

所以我遇到了这个问题,因为我认为我的系统受支持,但事实并非如此。 长话短说,由于这个"功能"似乎需要兼容硬件和软件的完美风暴,所以我坚持使用旧的API。 我知道这可能不是你想要的答案。

如果你真的想使用mallocnew,我会说你的查询将是以下组合:

  1. 询问操作系统正在运行的内核版本。 请参阅uname系统调用。
  2. 运行deviceQuery(或类似版本(以检查 CUDA 版本(8.0 或更高版本(和 GPU(查找大于或等于 6.0 的计算能力(。

有关操作系统支持的详细信息,请参阅:https://www.phoronix.com/scan.php?page=news_item&px=HMM-In-Linux-4.14。 内核版本 4.14 或更高版本似乎应该具有此功能。