首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行多GPU示例( P2P )时,P2P内存访问失败

运行多GPU示例( P2P )时,P2P内存访问失败
EN

Stack Overflow用户
提问于 2015-11-06 09:21:47
回答 1查看 2K关注 0票数 2

我正在尝试排除我在运行simpleP2P示例程序时发现的一个错误,该程序包含在CUDA示例中。错误如下:

代码语言:javascript
复制
$ ./simpleP2P 
[./simpleP2P] - Starting...
Checking for multiple GPUs...
CUDA-capable device count: 2
> GPU0 = "     Tesla K20c" IS  capable of Peer-to-Peer (P2P)
> GPU1 = "     Tesla K20c" IS  capable of Peer-to-Peer (P2P)

Checking GPU(s) for support of peer to peer memory access...
> Peer-to-Peer (P2P) access from Tesla K20c (GPU0) -> Tesla K20c (GPU1) : No
> Peer-to-Peer (P2P) access from Tesla K20c (GPU1) -> Tesla K20c (GPU0) : No
Two or more GPUs with SM 2.0 or higher capability are required for ./simpleP2P.
Peer to Peer access is not available between GPU0 <-> GPU1, waiving test.

我使用的设备如下:

代码语言:javascript
复制
$ lspci | grep NVIDIA
03:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
83:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)

从nvidia-smi获得的关于连通性的补充信息:

代码语言:javascript
复制
$ nvidia-smi topo -m
    GPU0    GPU1    CPU Affinity
GPU0     X  SOC 0-5,12-17
GPU1    SOC  X  6-11,18-23

Legend:

  X   = Self
  SOC = Path traverses a socket-level link (e.g. QPI)
  PHB = Path traverses a PCIe host bridge
  PXB = Path traverses multiple PCIe internal switches
  PIX = Path traverses a PCIe internal switch

最后,从lspci工具获得更详细的输出。

代码语言:javascript
复制
03:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
        Subsystem: NVIDIA Corporation Device 0982
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at f9000000 (32-bit, non-prefetchable)
        Memory at d0000000 (64-bit, prefetchable)
        Memory at ce000000 (64-bit, prefetchable)
        Capabilities: <access denied>
        Kernel driver in use: nvidia
        Kernel modules: nvidia_346, nouveau, nvidiafb
...
83:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
        Subsystem: NVIDIA Corporation Device 0982
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at cc000000 (32-bit, non-prefetchable)
        Memory at b0000000 (64-bit, prefetchable)
        Memory at ae000000 (64-bit, prefetchable)
        Capabilities: <access denied>
        Kernel driver in use: nvidia
        Kernel modules: nvidia_346, nouveau, nvidiafb

你们中有谁有一些信息可以帮助我解决问题,或者至少能更好地理解问题在哪里?像往常一样感谢你的阅读/帮助。-奥马尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-06 13:30:01

当GPU通过套接字级链路(基于英特尔的系统的QPI)互连时:

代码语言:javascript
复制
GPU0     X  SOC 0-5,12-17
GPU1    SOC  X  6-11,18-23
        ^^^

那么,P2P事务在这两个GPU之间是不可能的。

参与P2P的GPU对它们有许多要求。其中之一是,它们通常必须位于同一个PCIE根复合体上。通过套接字级链接(例如QPI)连接的GPU位于两个不同的“套接字”(即两个不同的CPU)上,因此它们属于两个不同的PCIE根复合体。

请注意,一般来说,P2P支持可能因GPU或GPU系列而不同。在一种GPU类型或GPU系列上运行P2P的能力并不一定表明它将在另一种GPU类型或家庭中工作,即使在相同的系统/设置中也是如此。GPU P2P支持的最终决定因素是通过cudaDeviceCanAccessPeer查询运行时的工具。P2P支持可能因系统和其他因素而异。这里所做的任何声明都不能保证在任何特定设置中对任何特定GPU的P2P支持。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33563326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档