【问题标题】:Exact criterion for implicit synchronization in CUDACUDA 中隐式同步的准确标准
【发布时间】:2020-01-15 16:42:58
【问题描述】:

CUDA 编程指南says(第 3.2.5.5.4 节;强调我的):

隐式同步

如果主机线程在它们之间发出以下任一操作,则来自不同流的两个命令不能同时运行:

  • 页面锁定的主机内存分配,
  • 设备内存分配,
  • 设备内存集,
  • 两个地址之间的内存复制到同一设备内存,
  • 对 NULL 流的任何 CUDA 命令,
  • 计算能力 3.x 和计算能力 7.x 中描述的 L1/共享内存配置之间的切换。

“在他们之间”和“在他们之间发出”这两个短语究竟是什么意思?

【问题讨论】:

    标签: concurrency cuda language-lawyer nvidia gpgpu


    【解决方案1】:

    如果我理解正确 - 措辞是指命令被安排的时间,即“如果你安排了一些命令 C 在安排其他事情之后触发隐式同步 - 你在 C 之前安排的所有事情都将首先执行;然后C 将执行;然后您在 C" 之后安排的任何内容。

    【讨论】:

    • 我理解它的方式很简单:如果你这样做 asyncfun(stream1); syncfun(); asyncfun(stream2); 两个异步将不会并发。所以,是的,你说的。这是一个奇怪的措辞,但基本上是在说并行计算中最简单的事情:如果你放一堵墙,它就是一堵墙。或许只有这样措辞才能让列表继续文档。
    猜你喜欢
    • 2011-09-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2012-01-15
    • 2011-02-23
    • 1970-01-01
    • 2011-06-26
    相关资源
    最近更新 更多