我一直在努力将二维向量放入 openCL 浮点数组。
像这样定义一个测试数组和一个动态向量:
double ABCD[2][2]; //Works
vector< vector<float> > Jacobian(0, vector<float>(0)); //Doesn't work
cl_float *input_float; //openCL Input Array
我在 C++ 程序中使用 Jacobian 进行了大量工作,最终需要将其传递给 openCL 程序。
input_double = *ABCD; //works fine in the openCL program
input_float = Jacobian; /*error C2440 no suitable conversion
from std::vector to cl_float exists*/
没有多少玩指针可以使这项工作。关于如何将动态向量放入 cl_float 结构的任何想法?恕我直言,缺乏文档。
最终,我将它放在它自己的缓冲区中,并在 GPU 中处理它。
inMapPtr = clEnqueueMapBuffer(
commandQueue,
inplaceBuffer,
CL_FALSE,
CL_MAP_WRITE,
0,
SIZE_F,
0,
NULL,
&inMapEvt,
&status);
memcpy(inMapPtr, input_float, SIZE_F);
任何帮助深表感谢。