580
社区成员
发帖
与我相关
我的任务
分享
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
__global__ void myKernel(float *ptr,size_t pitch,int width,int height)
{
int x=threadIdx.x;
int y=blockIdx.x;
int offset=x+y*blockDim.x;
if (offset<width*height)
{
//如何通过offset来索引线性存储器ptr,从而使矩阵内的每一个元素加1。
}
}
int main(void)
{
float myMatrix[2000][1500];
int width=2000;
int height=1500;
for (int i=0;i<width;i++)
{
for(int j=0;j<height;j++)
{
myMatrix[i][j]=i+j;
}
}
float *dev_mat;
size_t pitch;
cudaMallocPitch(&dev_mat,&pitch,width*sizeof(float),height);
cudaMemcpy(dev_mat,myMatrix,width*height*sizeof(float),cudaMemcpyHostToDevice);
myKernel<<<(2000*1500+256-1)/256,256>>>(dev_mat,pitch,width,height);
cudaMemcpy(myMatrix,dev_mat,width*height*sizeof(float),cudaMemcpyDeviceToHost);
cudaFree(dev_mat);
return 0;
}