我正在尝试分析我在网上发现的一些代码,并且我一直在想自己.我正在查看使用以下参数启动的直方图内核
histogram<<<2500, numBins, numBins * sizeof(unsigned int)>>>(...);
Run Code Online (Sandbox Code Playgroud)
我知道参数是网格,块,共享内存大小.
那么这是否意味着numBins每个都有2500个线程块,每个块还有一个numBins * sizeof(unsigned int)可用于其线程的共享内存块?
此外,内核中有将呼叫__syncthreads(),是否有那么2500台的numBins呼叫__syncthreads()在内核调用的过程?
sro*_*drb 13
那么这是否意味着每个都有2500个numBins线程块,每个块还有一个可用于其线程的numBins*sizeof(unsigned int)共享内存块?
通过插入表单的表达式来指定(全局函数调用的)执行配置<<<Dg,Db,Ns,S>>>,其中:
所以,正如@Fazar指出的那样,答案是肯定的.每个块分配该内存.
另外,在内核本身内有__syncthreads()调用,在内核调用过程中是否有2500套对__syncthreads()的numBins调用?
__syncthreads()等待直到线程块中的所有线程都达到这一点.用于协调同一块中线程之间的通信.
所以,__syncthread()每个块都有一个调用.