关于CUDA和GPU并行计算的理论问题。
据我所知,内核是一个代码,函数,由GPU执行。 每个内核都有一个(由执行)网格,其中包含块和块具有线程。 因此每个内核(代码)甚至可以由数千个线程执行。
我对共享内存和内核代码同步有疑问。 你能证明在使用共享内存的内核代码中同步的必要性吗? 同步如何影响处理效率?
答案 0 :(得分:2)
CW回答将其从未答复的列表中删除:
在共享内存加载之后,在使用共享内存的内核中经常发现你能证明在使用共享内存的内核代码中同步的必要性吗?
__syncthreads()
以防止竞争条件。由于共享内存通常是协同加载的(通过块中的所有线程),因此在任何线程开始使用加载的数据进行进一步处理之前,必须确保所有线程都已完成加载操作
__syncthreads()
记录在案here。
请注意,它仅同步给定块内的线程,而不是网格范围内的线程。