CUDA 8 和 Pascal 架构下的 GPU 内存分配
GPU Memory Allocation under CUDA 8 and Pascal Architecture
Pascal Architecture 通过升级统一内存行为为 CUDA 开发人员带来了一个惊人的功能,允许他们分配比系统可用内存更大的 GPU 内存。
我只是好奇这是如何在幕后实现的。我已经通过 "cudaMallocManaging" 一个巨大的缓冲区对其进行了测试,并且 nvidia-smi
没有显示任何内容(除非缓冲区大小低于可用的 GDDR)。
I am just curious about how this is implemented under the hood. I have tested it out by "cudaMallocManaging" a huge buffer and nvidia-smi isn't showing anything (unless the buffer size is under the available GDDR).
首先,我建议您对所有 CUDA API 调用执行 proper CUDA error checking。从你的描述看来你不是。
统一内存 (UM) 中的需求分页允许内存大小增加到 GPU 物理 DRAM 内存之外仅适用于:
Pascal(或未来)GPU
CUDA 8(或未来)工具包
除此之外,您的设置应该可以正常工作。如果它不适用于 CUDA 8(不是 CUDA 8RC)和 Pascal GPU,请确保您满足 UM 的要求(例如 OS)并进行适当的错误检查。而不是试图从 nvidia-smi
推断发生了什么,运行 对分配的内存进行实际测试。
有关该功能的更一般描述,请参阅 this blog article。
Pascal Architecture 通过升级统一内存行为为 CUDA 开发人员带来了一个惊人的功能,允许他们分配比系统可用内存更大的 GPU 内存。
我只是好奇这是如何在幕后实现的。我已经通过 "cudaMallocManaging" 一个巨大的缓冲区对其进行了测试,并且 nvidia-smi
没有显示任何内容(除非缓冲区大小低于可用的 GDDR)。
I am just curious about how this is implemented under the hood. I have tested it out by "cudaMallocManaging" a huge buffer and nvidia-smi isn't showing anything (unless the buffer size is under the available GDDR).
首先,我建议您对所有 CUDA API 调用执行 proper CUDA error checking。从你的描述看来你不是。
统一内存 (UM) 中的需求分页允许内存大小增加到 GPU 物理 DRAM 内存之外仅适用于:
Pascal(或未来)GPU
CUDA 8(或未来)工具包
除此之外,您的设置应该可以正常工作。如果它不适用于 CUDA 8(不是 CUDA 8RC)和 Pascal GPU,请确保您满足 UM 的要求(例如 OS)并进行适当的错误检查。而不是试图从 nvidia-smi
推断发生了什么,运行 对分配的内存进行实际测试。
有关该功能的更一般描述,请参阅 this blog article。