编译时报错“cannot convert parameter 1 from 'int *' to 'int &'”
我在测试下,从0到某个整数值的累加结果,在main函数中,有如下定义:
int limit = 0, begNum = 0, stepSize ;
cout<<"步數限制 ? 以及 起始步長(隨後遞增1)?"<<endl;
cin>>limit>>stepSize;
int &sum = begNum;
int *pSum = &begNum;
sum1(sum, limit, stepSize);
cout<<"在CPU端進行運算"<<sum<<endl;
//重設sum值
begNum = 0;
sum2(pSum,limit, stepSize);
准备把开始的begSum值用指针pSum值传进去GPU来做。
下面是sum2的定义:
__host__ void sum2(int *eSum, int endSum, int step){
dim3 blockSize(100,1,1);
dim3 threadSize(100,1,1);
int *d_sum;
cudaMalloc((void**)&d_sum,sizeof(int));
cudaMemcpy(d_sum, eSum, sizeof(int),cudaMemcpyHostToDevice);
kernel1<<<blockSize, threadSize>>>(d_sum, endSum,step);
cudaMemcpy(eSum, d_sum, sizeof(int),cudaMemcpyDeviceToHost);
cudaFree(d_sum);
}
sum2的内核代码如下所示:
__global__ void kernel1(int *eSum, int endSum, int step){
int idex = threadIdx.x + blockDim.x * blockIdx.x;
if(idex < endSum){
(*eSum) += step++;
}
}
它最后报错是:
error C2664: 'sum2' : cannot convert parameter 1 from 'int *' to 'int &'
请问下,这个想法,是怎么回事呢?