gpt4 book ai didi

c++ - std::vector 转换为 cl_float

转载 作者:行者123 更新时间:2023-11-28 07:27:42 25 4
gpt4 key购买 nike

我一直在努力将二维 vector 放入 openCL float 组中。

这样定义一个测试数组和一个动态 vector :

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*/

再多的指针也无法使这项工作成功。关于如何将动态 vector 放入 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);

非常感谢任何帮助。

最佳答案

指针不是数组。数组不是指针。 double ABCD[2][2]; 不是指向 double 的指针的长度为 2 的数组,指向 2 个 2 个 double 的数组;它是一个包含 4 个 double 的内存块,带有将索引对转换为正确索引的语法糖。

vectorvector 是完全不同的数据结构,不能解释为多维数组。 vector 仅支持一维数组。

input_float = Jacobian;     /*error C2440 no suitable conversion 
from std::vector to cl_float exists*/

你需要类似的东西

input_float = Jacobian[0][0];

vector 实例不会像内置数组那样自动退化为指针。

关于c++ - std::vector 转换为 cl_float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18424475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com