Concurrency CUDA中隐式同步的精确判据

Concurrency CUDA中隐式同步的精确判据,concurrency,cuda,language-lawyer,nvidia,gpgpu,Concurrency,Cuda,Language Lawyer,Nvidia,Gpgpu,CUDA编程指南(第3.2.5.5.4节;重点): 隐式同步 如果主机线程在不同流之间发出以下操作之一,则来自不同流的两个命令不能同时运行: 页锁定主机内存分配 设备内存分配 设备内存集 同一设备内存的两个地址之间的内存拷贝 将任何CUDA命令发送到空流 计算能力3.x和计算能力7.x中描述的L1/共享内存配置之间的切换 “在他们之间”和“在他们之间发出”这两个短语的确切含义是什么?如果我理解正确,则该措辞指的是命令的预定时间,即。“如果您在安排其他事情之后安排了某个命令C触发隐式synch

CUDA编程指南(第3.2.5.5.4节;重点):

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

  • 页锁定主机内存分配
  • 设备内存分配
  • 设备内存集
  • 同一设备内存的两个地址之间的内存拷贝
  • 将任何CUDA命令发送到空流
  • 计算能力3.x和计算能力7.x中描述的L1/共享内存配置之间的切换

“在他们之间”和“在他们之间发出”这两个短语的确切含义是什么?

如果我理解正确,则该措辞指的是命令的预定时间,即。“如果您在安排其他事情之后安排了某个命令C触发隐式synchro,那么在C之前安排的所有事情都将首先执行;然后C将执行;然后,在C之后安排的任何事情。

我理解它的方式很简单:如果您执行
asyncfun(stream1);syncfun();asyncfun(stream2);
这两个异步将不会并发。是的,正如你所说。这是一个奇怪的措词,但基本上说是并行计算中最简单的事情:如果你放一堵墙,它就是一堵墙。也许这样的措词只是为了让列表继续处理文档。