CUDA线程同步
我对同步有点困惑CUDA线程同步,cuda,Cuda,我对同步有点困惑 使用\uuu syncthreads可以同步块中的线程。这, (使用\uu syncthreads)必须仅使用共享内存?或 将共享内存与\uuu syncthreads一起使用具有最佳性能 通常,只有在以下情况下,线程才能安全地相互通信: 只有当它们存在于同一个线程块中时,对吗?那么,为什么 我们不总是使用共享内存吗?因为它不够大? 而且,如果我们不使用共享内存,我们如何确保结果 你说得对吗 我有一个程序,有时运行正常(我得到结果),并且 有时我得到的结果是“nan”,但没有改
\uuu syncthreads
可以同步块中的线程。这,
(使用\uu syncthreads
)必须仅使用共享内存?或
将共享内存与\uuu syncthreads
一起使用具有最佳性能共享内存
和\uu syncthreads()
是两个独立的概念,但它们通常是齐头并进的。否则,如果线程独立运行,则无需使用\uu syncthreads()
共享内存的大小受限制(2)。为了获得最佳性能,在使用共享内存时需要避免银行冲突
\uuu syncthreads()
。有时,在不使用\uu syncthreads()
的情况下使用共享内存
,可能会导致不可预知的结果\uu syncthreads
不涉及共享内存,它只确保块内的同步。但是,当您希望线程通过共享内存共享数据时,需要同步线程共享内存通常涉及
\u syncthreads
以确保块中的其他线程可以使用数据。注意:好的,谢谢!不幸的是,我无法发布代码。我正在使用最大数量的块和线程,运行正常。现在,如果我更改代码中的某些参数,然后运行它,它会显示nan值或不运行。如果我返回到原始值,它仍会显示nan或不运行!它应该使用原始(测试过的)值运行(我必须提到pycuda中的所有这些值)。但是,如果它使用一些测试值运行,可能是您的CUDA驱动程序造成的。你最近换了吗?请检查我没有换司机。谢谢