这里用点积运算例子是在讲线程协作的 __syncthread();
表示对线程块里的线程进行同步的,对于线程块之间的没有关系的。在线程块内所有的线程必须同时停到这个地方等待,等到所有的线程都运行到这里的时候,再一起运行下一步。这样做的目的是因为某个线程要用到别的线程的计算之后的结果,如果不设置__syncthread();将会计算出错误的结果。这个中文名叫栅栏。刚才提到了用到别的线程的计算结果,这里又涉及到线程间的通讯,一个线程块里都有个共享的内存,实现线程之间的通讯,用__share__调用。还是在代码里写注释更好理解,我就先在代码里写注释好了,我不习惯这个编辑器,哈哈
#include "../common/book.h"
#define imin(a,b) (a<b?a:b)
const int N = 33 * 1024;
线程块里的线程256个,线程格一共有32个线程,这就意味着,每个线程将会计算4次,因为数组元素很大
const int threadsPerBlock = 256;
至今为止我也没见过两个线程格的,这里写的意思是看看每个线程块用256个线程的话能用到多少个线程块,但是不要超过32个,但是很明显超过了32个好嘛,所以就32个了呗,说明线程个数是不够的
const int blocksP