这种说法"All the threads that run on a given SM may cooperate"是真的还是假的?



在udacity上的测验:线程和"简介到并行编程"的块中,它询问语句是否在给定的SM May 合作解决问题"是对还是错。答案是错误的,但是我认为这应该是真的,因为:

  • 它使用"可能"而不是"必须"。
  • 一些论文正在谈论块间GPU通信。

我对此有任何误解吗?

在所有情况下都是正确的。

在典型的CUDA合作线程的感觉中,合作线程必须属于同一块(以便能够使用__syncthreads()__shared__ MOMEME等合作机制)。

但是,

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

从单独的块中的线程,即使居民在同一SM上,也无法在典型的cuda意义上进行"合作线程"。

cuda官方资料[1]提到了罗伯特·克罗维拉(Robert Crovella)在第8页中所说的:

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

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

相关内容

最新更新