float2の値をCPUにコピーして戻したいのですが。結果はGPU側では正しいですが、CPU側では結果がどのように正しくないかがわかります。誰か助けてくれませんか
GPUコード
#pragma OPENCL EXTENSION cl_amd_printf : enable
__kernel void matM(__global float* input, int width, int height, __global float2* output){
int X = get_global_id(0);
float2 V;
V.x = input [X];
V.y = input [X];
output[X] = V;
printf("%f\t %f\n",output[X].x,output[X].y);
}
CPUコード
output = clCreateBuffer(context, CL_MEM_WRITE_ONLY, sizeof(cl_float2) * wid*ht, NULL, NULL);
clEnqueueReadBuffer( commands, output,CL_TRUE, 0, sizeof(cl_float2) * wid *ht, results, 0, NULL, NULL );
内部GPUカーネルはprintf
正しい結果を出力しますが、ホスト側の結果は正しくありません。
助けてくれてありがとう