multi-gpu cuda:在一台设备上运行内核并在另一台设备上修改元素?

时间:2012-02-10 17:57:29

标签: cuda gpu

假设我在一台机器上有多个GPU,并且我在GPU0上运行了一个内核。

利用CUDA 4.0的UVA和P2P功能,当内核在GPU0上运行时,我可以修改另一台设备上的阵列内容吗?

CUDA 4.0 SDK中的simpleP2P示例没有证明这一点。

它只表明:

  • 点对点的回忆
  • 在GPU0上运行的内核从GPU1缓冲区读取输入并将输出写入GPU0缓冲区

  • 在GPU1上运行的内核从GPU0缓冲区读取输入并将输出写入GPU1缓冲区

1 个答案:

答案 0 :(得分:1)

简短回答:是的,你可以。

Longer answer

链接的演示文稿提供了完整的详细信息,但以下是要求:

  • 必须位于64位操作系统上(使用Tesla Compute Cluster驱动程序的Linux或Windows)。
  • GPU必须都是Compute Capability 2.0(sm_20)或更高版本。
  • 目前,GPU必须附加到同一IOH

您可以使用cudaDeviceCanAccessPeer()来查询是否可以直接进行P2P访问。