声明“在给定SM上运行的所有线程可能合作”是真还是假?

时间:2016-12-28 16:19:43

标签: cuda gpu gpgpu

在Udacity的“测试:并行编程简介”的测验:线程和块中,它询问“在给定的SM 上运行的所有线程可以合作解决问题”的语句是对或错。答案是错误的,但我认为它应该是真的,因为:

  • 使用“may”而不是“must”。
  • 有些论文正在谈论块间GPU通信。

我对此有任何误解吗?

2 个答案:

答案 0 :(得分:5)

在所有情况下都不是这样。

在典型的CUDA协作线程意义上,协作线程必须属于同一个块(以便能够使用__syncthreads()__shared__内存等协作机制。

然而,SM可以包含多个同时执行的块。

来自不同块的线程,即使驻留在同一个SM上,也不能合作,在典型的CUDA意义上的单词"合作线程"。

答案 1 :(得分:-1)

CUDA官方材料[1]提到了Robert Crovella在第8页中所说的内容:

  • 不同块中的线程无法合作。

[1] https://www.nvidia.com/content/cudazone/download/Getting_Started_w_CUDA_Training_NVISION08.pdf