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

时间:2018-03-07 03:18:18

标签: c++ c memory-management cuda

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

1 个答案:

答案 0 :(得分:2)

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

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

  1. 询问操作系统运行的内核版本。请参阅uname系统调用。
  2. 运行deviceQuery(或类似)以检查CUDA版本(8.0或更高版本)和GPU(查找大于或等于6.0的计算能力)。
  3. 有关操作系统支持的更多信息,请访问:https://www.phoronix.com/scan.php?page=news_item&px=HMM-In-Linux-4.14。似乎内核版本4.14或更高版本应具有此功能。