#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
#define N 1000
#define M 256
float A[N][M],B[N][M],C[N][M];
__global__ void add(float *A,float *B,float *C){
int i = blockIdx.x;
int j = threadIdx.x;
int id = i*256+j;
C[id]=A[id]+B[id];
}
int main()
{
int size = M*N*sizeof(float);
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
{
A[i][j]=i;B[i][j]=j;
}
float *d_a;
float *d_b;
float *d_c;
cudaMalloc((void**)&d_a,size);
cudaMalloc((void**)&d_b,size);
cudaMalloc((void**)&d_c,size);
cudaMemcpy(d_a,A,size,cudaMemcpyHostToDevice);
cudaMemcpy(d_b,B,size,cudaMemcpyHostToDevice);
add<<<N,M>>>(d_a,d_b,d_c);
cudaMemcpy(C,d_c,size,cudaMemcpyDeviceToHost);
cudaFree(d_a);
cudaFree(d_b);
cudaFree(d_c);
for(int i=0;i<N;i++)
for(int j = 0;j<M;j++)
{
std::cout<<C[i][j]<<" ";
}
int m;
std::cin>>m;
}
CUDA初学,实现1000*256的数组运算
最新推荐文章于 2023-01-16 21:25:28 发布