当对一个线程块里的线程数据进行同时输出的时候,这个实验室输出了一个图像,需要进行同步操作,否则在输出的图像的时候会出现错误,原因是线程里的数据肯定是不对的,或者是还没有写进去就已经输出出来,共享内存里的数据有些是之前没有修改前的数据
那么来看一看代码,之前有在别的博客里写过的就不再写了。虽然我学习的进度有点慢,还是要抓紧时间的
#include "cuda.h"
#include "../common/book.h"
#include "../common/cpu_bitmap.h"
#define DIM 1024
#define PI 3.1415926535897932f
__global__ void kernel( unsigned char *ptr ) {
// map from threadIdx/BlockIdx to pixel position
int x = threadIdx.x + blockIdx.x * blockDim.x;
int y = threadIdx.y + blockIdx.y * blockDim.y;
int offset = x + y * blockDim.x * gridDim.x;
这里共享的内存是一个二维16*16大小的数组,也就是说下面程序里定义的每个线