OpenCL:使用 CL_MEM_COPY_HOST_PTR 的错误值
OpenCL: Wrong Values using CL_MEM_COPY_HOST_PTR
不幸的是我写了下面的代码
//host
float filter[9] =
{ 1, 2, 1,
0, 0, 0,
-1, -2, -1
};
cl::Buffer Filter(m_prog.getContext(),
CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, 9 * sizeof(float), filter);
//..
//device
foo(..., __constant float * filter,...)
{
printf("%i %i %i %i %i %i %i %i %i\n", filter[0], filter[1], filter[2],
filter[3], filter[4], filter[5], filter[6], filter[7], filter[8]);
我得到以下输出
0 1072693248 0 1073741824 0 1072693248 0 0 0
我哪里做错了?
您使用了错误的 printf 转换说明符。正确应该是:
printf("%f %f %f %f %f %f %f %f %f\n", filter[0], filter[1], filter[2],
filter[3], filter[4], filter[5], filter[6], filter[7], filter[8]);
不幸的是我写了下面的代码
//host
float filter[9] =
{ 1, 2, 1,
0, 0, 0,
-1, -2, -1
};
cl::Buffer Filter(m_prog.getContext(),
CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, 9 * sizeof(float), filter);
//..
//device
foo(..., __constant float * filter,...)
{
printf("%i %i %i %i %i %i %i %i %i\n", filter[0], filter[1], filter[2],
filter[3], filter[4], filter[5], filter[6], filter[7], filter[8]);
我得到以下输出
0 1072693248 0 1073741824 0 1072693248 0 0 0
我哪里做错了?
您使用了错误的 printf 转换说明符。正确应该是:
printf("%f %f %f %f %f %f %f %f %f\n", filter[0], filter[1], filter[2],
filter[3], filter[4], filter[5], filter[6], filter[7], filter[8]);