2,408
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<cuda_runtime.h>
#define Height 3
#define Width 5
__global__ void printf_kernel(int **dev_ptr)
{
if(blockIdx.x < 3)
{
//printf("(%d,%d)\n",blockIdx.x,threadIdx.x);
int pos=threadIdx.x;
int *pptr=*(dev_ptr+blockIdx.x);
int data=pptr[pos];
printf("(%d,%d): %d\n",blockIdx.x,threadIdx.x,data);
}
}
int main()
{
int a[3*Height*Width];
int i,j,k;
for(k=0;k<3;k++)
{
for(i=0;i<Height;i++)
{
for(j=0;j<Width;j++)
{
a[k*Width*Height+i*Width+j]=k+i+j;
printf("%d ",a[k*Height*Width+i*Width+j]);
}
printf("\n");
}
printf("\n");
printf("\n");
}
int *dev_ptr[3];
for(i=0;i<3;i++)
{
cudaMalloc((void**)&dev_ptr[i],sizeof(int)*Width*Height);
cudaMemcpy(dev_ptr[i],a+i*Width*Height,sizeof(int)*Width*Height,cudaMemcpyHostToDevice);
}
dim3 block(Height*Width);
dim3 grid(3);
printf_kernel<<<grid,block>>>(dev_ptr);
cudaDeviceSynchronize();
return 0;
}