したがって、私の問題は、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;
.......
}
呼び出された関数でその 2 番目の出力に到達するまでに、それは 0 です。