global void add(double a)
{
int id=threadIdx.x;
a[id]=a[id]+1;
}
main(int argc,char argv[])
{
int i=0;
double a[10];
for(i=0;i<10;i++)
a[i]=1.0;
double d_a;
cudaMalloc((void)&d_a,10sizeof(double));
cudaMemcpy(d_a,a,sizeof(double)*10,cudaMemcpyHostToDevice);
add<<<1,10>>>(d_a);
cudaMemcpy(a,d_a,sizeof(double)*10,cudaMemcpyDeviceToHost);
for(i=0;i<10;i++)
printf(“%f,”,a[i]);
}
在Makefile中:
EXECUTABLE := double
Cuda source files (compiled with cudacc)
CUFILES_sm_13 := double.cu
C/C++ source files (compiled with gcc / c++)
CCFILES :=
a数组的结果出来总是1,不知是什么原因,请各位高手帮忙指正