做一个小程序,中间需要给一个实数数组赋值,采用了这样一个函数来完成赋值
void constantInit(float *data, int size2)
{
   for (int i = 0; i < size2; i++)
   {
   data[i] = 1;
   }
}
可是 打印的时候结果都是0,调用的函数如下,请教版主和大家,原因在哪里。
void mscan(int m_w)
{
   
 unsigned int size = sizeof(float) * m_w;  //
   
   
   float *h_A = (float *)malloc(size);     //CPU里分配数组A的空间首地址和具体空间
   
   constantInit(h_A, m_w);      //数组A初始化
   
   
   float *h_C = (float *)malloc(size);     //CPU里分配数组C的空间首地址和具体空间
   float *d_A, *d_C,*d_E,*d_EE;
   
   cudaMalloc((void **) &d_A, size);  //设备(GPU)里分配数组A的空间首地址和具体空间
   cudaMalloc((void **) &d_C, size);   // 设备(GPU)里分配数组C的空间首地址和具体空间
   
   unsigned int size1 = sizeof(float) * d_n;
   
   cudaMalloc((void **) &d_E, size1);   // 设备(GPU)里分配数组E的空间首地址和具体空间
   
   cudaMalloc((void **) &d_EE, size1);  // 设备(GPU)里分配数组EE的空间首地址和具体空间
   
   cudaMemcpy(d_A, h_A, size, cudaMemcpyHostToDevice);  //拷贝数据去gpu
   
   scan <<< d_n, THREADBLOCK_SIZE >>>(d_C, d_A,d_E, 2*THREADBLOCK_SIZE);
   scan1 <<< 1, d_n/2 >>>(d_EE, d_E,d_n);
   add <<< d_n, THREADBLOCK_SIZE >>>(d_C, d_EE, 2*THREADBLOCK_SIZE);
   
	 cudaMemcpy(h_C, d_C, size, cudaMemcpyDeviceToHost);   //拷贝数据回cpu
   
   
  
	for (int i = 0; i < 10  ; i++)
   {
   printf("%d",h_A[i]);
		
   }
	  cudaDeviceReset();
	
  
   
}