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

标签 c++ c memory-management cuda

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

最佳答案

所以我遇到了这个问题,因为我以为我的系统是支持的,但不是。长话短说,因为这个“功能”似乎需要兼容硬件和软件的完美 Storm ,所以我坚持使用旧的 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 或更高版本应该具有此功能。

关于c++ - 支持 CUDA 统一内存系统分配器的操作系统版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49143545/

相关文章:

c++ - 访问图像每个像素的最快方法?

c++ - 为每次 c++ 创建一个障碍

c++ - 计算存储数字所需位数的最快方法是什么

c - 使用 c 查找数组的平均值

c - strtok 字符串从文件到数组但缺少第一行

c++ - 如果您之前将其初始化为零,那么将 double 值与零进行比较是否正确?

C# - 应用程序内存问题

c++ - float 的跨平台/编译器一致 sprintf

PHP数组效率和内存澄清

c++ - `std::shared_ptr`循环依赖如何导致问题