本机有4个NVIDIA K80设置,nvidia-smi
的输出是4个卡的信息。他们的GPU ID为0,1,2,3
。每个K80都有两种类型的GPU内存:FB
和BAR1
,两者都有12 Gb。但是CUDA程序总是使用FB
内存,剩下BAR1
内存是免费的。当CUDA程序在每张卡中分配超过12 Gb GPU内存时,将发生Out of memory
错误,但仍未使用BAR1
内存。
如何在此设置中正确使用BAR1
内存?
已更新
nvidia-smi
的部分输出是
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
> Peer access from Tesla K80 (GPU0) -> Tesla K80 (GPU1) : Yes
> Peer access from Tesla K80 (GPU0) -> Tesla K80 (GPU2) : No
> Peer access from Tesla K80 (GPU0) -> Tesla K80 (GPU3) : No
> Peer access from Tesla K80 (GPU1) -> Tesla K80 (GPU0) : Yes
> Peer access from Tesla K80 (GPU1) -> Tesla K80 (GPU2) : No
> Peer access from Tesla K80 (GPU1) -> Tesla K80 (GPU3) : No
> Peer access from Tesla K80 (GPU2) -> Tesla K80 (GPU0) : No
> Peer access from Tesla K80 (GPU2) -> Tesla K80 (GPU1) : No
> Peer access from Tesla K80 (GPU2) -> Tesla K80 (GPU3) : Yes
> Peer access from Tesla K80 (GPU3) -> Tesla K80 (GPU0) : No
> Peer access from Tesla K80 (GPU3) -> Tesla K80 (GPU1) : No
> Peer access from Tesla K80 (GPU3) -> Tesla K80 (GPU2) : Yes
答案 0 :(得分:4)
来自nvidia-smi的手册页:
BAR1 Memory Usage
BAR1 is used to map the FB (device memory) so that it can be directly
accessed by the CPU or by 3rd party devices (peer-to-peer on the PCIe
bus).
BAR1是一个虚拟地址空间,用于映射设备内存,以便从主机和/或其他启用DMA的设备进行DMA访问。 这意味着BAR1不是物理内存,您的K80(如规格中所述)每个GK210B GPU只有12 GB VRAM。当这个内存耗尽时,你真的不在记忆中。