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