所以我的问题是,我将一个变量按值(它是一个浮点数)从我的 C 代码中的一个函数传递给另一个函数。由于某种原因,通过后变量为 0。我有多个其他浮点数按值传递,它们不是 0(都在同一个函数调用中),所以我不明白为什么会这样。它可能就像我没有看到的一些错字一样简单:
int cuda_call(float *h_DataA, float *h_Kernel, int numSmooths, float kernelSum, int KERNEL_R, int KERNEL_W, int DATA_W){
printf("\n What am I here?: %f \n", kernelSum);
convolutionProgram(h_DataA, h_Kernel, numSmooths, kernelSum, KERNEL_R, KERNEL_W, DATA_W);
return 1;
}
extern "C" void convolutionProgram(float *h_DataA, float *h_Kernel, int numSmooths, float kernelSum, int KERNEL_R, int KERNEL_W, int DATA_W);
void convolutionProgram(float *h_DataA, float *h_Kernel, int numSmooths, float kernelSum, int KERNEL_R, int KERNEL_W, int DATA_W){
printf("\n what am I now? %f \n", kernelSum);
float
*d_DataA,
*d_DataB,
*d_Temp,
*d_Kernel;
.......
}
当我在被调用函数中得到第二个打印时,它是 0。