CUDA 8和Pascal架构下的GPU内存分配

时间:2016-09-02 16:22:28

标签: cuda gpu

Pascal Architecture通过升级统一内存行为为CUDA开发人员带来了一个惊人的功能,允许他们分配比系统上更大的GPU内存。

我很好奇这是如何在幕后实施的。我已经通过" cudaMallocManaging"进行了测试。一个巨大的缓冲区并且nvidia-smi没有显示任何内容(除非缓冲区大小在可用的GDDR下)。

1 个答案:

答案 0 :(得分:1)

  

我很好奇这是如何在幕后实施的。我已经通过" cudaMallocManaging"进行了测试。一个巨大的缓冲区,nvidia-smi没有显示任何内容(除非缓冲区大小在可用的GDDR下)。

首先,我建议您对所有CUDA API调用proper CUDA error checking。从您的描述看,您似乎不是。

统一内存(UM)中的请求分页允许内存大小超出GPU物理DRAM内存,只能用于:

  1. Pascal(或未来)GPU

  2. CUDA 8(或未来)工具包

  3. 除此之外,您的设置应该可行。如果它不适合使用CUDA 8(不是CUDA 8RC)和Pascal GPU,请确保满足UM的要求(例如操作系统)并进行正确的错误检查。而不是试图推断nvidia-smi发生了什么,而是对分配的内存进行实际测试。

    有关该功能的更一般描述,我建议你this blog article