支持 CUDA 统一内存的系统分配器的操作系统版本
OS versions that support the system allocator for CUDA Unified Memory?
从这里发布的幻灯片来看,似乎仅在Linux内核版本4.14或更高版本上支持通过调用malloc
或new
来使用系统分配器而不是Nvidia的cudaMallocManaged
?... 如果是这样,有没有办法查询 Nvidia 驱动程序或 CUDA 运行时以了解系统分配器是否可用于正确分配内存块以在 CUDA 统一内存模型中使用?或者,如果检测到的操作系统不在白名单上,则必须保留操作系统/内核版本的白名单并回退到传统cudaMallocManaged
? 如果是后者,有谁知道批准的操作系统版本白名单?
所以我遇到了这个问题,因为我认为我的系统受支持,但事实并非如此。 长话短说,由于这个"功能"似乎需要兼容硬件和软件的完美风暴,所以我坚持使用旧的API。 我知道这可能不是你想要的答案。
如果你真的想使用malloc
或new
,我会说你的查询将是以下组合:
- 询问操作系统正在运行的内核版本。 请参阅
uname
系统调用。 - 运行
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++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在C++游戏中与库存系统作斗争
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 文件系统:复制功能的速度秘诀是什么
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 在gtest.中使用fff.h模拟系统API
- 将 std::allocate_shared 与多态资源分配器一起使用
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 如何制作无限制照明系统
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 如何传递多个 std::文件系统选项?
- 遍历顺序由 std::文件系统directory_iterator给出
- C++系统找不到指定的文件错误
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- 支持 CUDA 统一内存的系统分配器的操作系统版本