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

-2 cuda gpu gpgpu

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

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

我有什么误解吗?

Rob*_*lla 5

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

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

但是,SM可以包含多个同时执行的块.

来自单独块的线程,即使驻留在相同的SM上,也不能合作,在典型的CUDA意义上的"协作线程".