0

在下面的代码片段中,我尝试printf()在代码中使用来尝试打印input[i]计算结果,以便我可以看到它工作正常。

然而,这并没有像我希望的那样工作,因为引号printf()与内核的字符串格式混淆,因此整个程序将无法编译。我尝试使用转义字符\",它确实允许我为内核键入字符串,但是编译时会给我预期的表达式和缺少字符的错误。

有谁知道如何解决这个问题?这是检查内核代码结果的最佳方法吗?

    const char *KernelSource =         "\n"
"__kernel void relax(                    \n"
"   __global double* input,                \n"
"   __global double* output,               \n"
"   __global int N)             \n"
"{                                        \n"
"   int i = get_global_id(0);             \n"
"   if(i > 0 && i < N-1){                         \n"
"       input[i] = 0.25*input[i-1]+0.5*input[i]+0.25*input[i+1];  \n"
"       printf("input[%d] %f \n", i, input[i] )\n"
"   }                                        \n"
"}                                        \n"
"\n";
4

1 回答 1

5

您需要转义引号,并且需要转义格式字符串内部的\\n

"       printf(\"input[%d] %f \\n\", i, input[i] )\n"
于 2012-10-31T13:24:24.387 回答