摘要:
GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm。sp: 最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理sm:多个sp加上其他的一些资源组成一个sm, streaming multiprocessor. 其他资源也就是存储资源,共享内存,寄储器等。warp:GPU执行程序时的调度单位,目前cuda的warp的大小为32,同在一个warp的线程,以不同数据资源执行相同的指令。grid、block、thread:在利用cud 阅读全文
摘要:
__syncthreads()是cuda的内建函数,用于块内线程通信.__syncthreads() is you garden variety thread barrier. Any thread reaching the barrier waits until all of the other threads in that block also reach it. It is designed for avoiding race conditions when loading shared memory, and the compiler will not move memory rea 阅读全文
摘要:
内核函数中要用data结构作用参数1 typedef struct2 {3 int* value;4 int* num;5 } data; 1 //host端 2 3 data* h_input; 4 h_input=(data*)malloc(sizeof(data)); 5 h_input->value=(int*)malloc(sizeof(int)*N); 6 h_input->num=(int*)malloc(sizeof(int)*N); 7 8 data tmp; //用于过渡 9 cudaMalloc((void**)& tmp->value,size 阅读全文
摘要:
目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录. 方法1,time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数. void test1(){ time_t start,stop;... 阅读全文