次のスニペット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";