我想将 float2 值复制回 CPU。GPU 端的结果是正确的,但 CPU 端的结果有些不正确。有人可以帮帮我吗
显卡代码
#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);
}
中央处理器代码
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 );
内部printf
GPU 内核打印正确的结果,但主机端结果不正确。
感谢您的帮助