【问题标题】:Cuda 4 inter-GPU synchronizationCuda 4 GPU 间同步
【发布时间】:2011-04-04 14:46:57
【问题描述】:

有人在 Cuda4 上成功测试过这个功能吗?看来我不能让它正常工作,不确定这是我的代码中的错误还是该功能尚未完全实现。

例如,我想在将内存从 1 个 gpu 复制到另一个 gpu 后执行内核调用。流 0,mem0 在 gpu0 上创建流 1,mem1 在 gpu1 上创建。两者都是费米特斯拉(C2070)

cudaMemcpyAsync( mem1, mem0, size, cudaMemcpyDefault, stream0 );
cudaEventRecord(P2Pevent, stream0);

cudaStreamWaitEvent(stream1, P2Pevent, 0);
cudaKernel<<<block,thread,0,stream1>>>(mem1);

有时内存似乎还没有为内核准备好,所以结果不正确。如果我在 Gpu0 上添加一个 cudaDeviceSynchronize 那么它工作正常。

谢谢

【问题讨论】:

  • 您需要使用 cudaMemcpyPeerAsync 直接进行 GPU 间内存复制。并且两个 GPU 都必须支持对等访问,目前仅在 Fermi Telsa 卡上支持。
  • @talonmies 我在此之前启用了 PeerAccess,因此我可以直接使用 cudaMemcpyAsync。所以复制工作正常,只是我无法在另一个 GPU 上同步。 (就像我说的他们都是费米卡)
  • 您正在 stream1 上等待 P2Pevent,但您已在 stream0 上记录了它。是不是打错字了?
  • 您有 TESLA 卡还是只有 480 个 Fermi 卡?此操作仅适用于 $$$ TESLA 卡。
  • @fabrizio:费米特斯拉兄弟,我再次确认 P2P 工作正常

标签: cuda multi-gpu


【解决方案1】:

这是我的代码中的一个错误!它确实工作正常 谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 2013-05-02
    • 2015-06-15
    • 2011-10-25
    • 2011-09-18
    • 2011-10-04
    • 2010-12-11
    • 2012-07-14
    相关资源
    最近更新 更多