GPU线程运行机制

来源:互联网 发布:matlab 网络协议仿真 编辑:程序博客网 时间:2024/06/05 16:38
///****测试在kernel里面交换全局内存的值
#include<iostream>
#include<cuda.h>
#include<cuda_runtime.h>
#include<time.h>
using namespace std;



const int N=300;
__global__ void show(int* a)
{
for(int i=blockIdx.x*blockDim.x+threadIdx.x;i<N+blockDim.x*gridDim.x;
i+=blockDim.x*gridDim.x)
{
if(i<N)
{
printf("%d  ",a[i]);
/*a[i]++;*/
if(i%60==0)
printf("\n\n\n");
}
}
}


int main(void)
{
int ha[N];
int *da;
cudaMalloc((void**)&da,N*sizeof(int));
for(int i=0;i<N;i++)
ha[i]=i;
cudaMemcpy(da,ha,N*sizeof(int),cudaMemcpyHostToDevice);
show<<<3,20>>>(da);
cudaMemcpy(ha,da,N*sizeof(int),cudaMemcpyDeviceToHost);
//for(int i=0;i<N;i++)
// cout<<ha[i]<<"  ";
return 0;

}




从结果可以是有序执行

0 0
原创粉丝点击