标准::向量转换为cl_float
std::vector conversion to cl_float
我一直在努力将二维向量放入 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++程序中使用雅可比程序做很多工作,最终需要将其传递给 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);
任何帮助都非常感谢。
指针
不是数组。数组不是指针。 double ABCD[2][2];
不是指向 2 个 2 double
s 的数组的指针数组double
;它是一个 4 double
秒的单个内存块,带有语法糖,可将一对索引转换为正确的索引。
vector
s 的vector
是完全不同的数据结构,不能解释为多维数组。 vector
仅支持一维数组。
input_float = Jacobian; /*error C2440 no suitable conversion
from std::vector to cl_float exists*/
你需要类似的东西
input_float = Jacobian[0][0];
vector
实例不会像内置数组那样自动衰减为指针。
以下代码有效:
int i = 0;
for (int x = 0; x <= 2; x++) // loop 3 times for three lines
{
for (int y = 0; y <= 2; y++) // loop for the three elements on the line
{
input_float[i] = Jacobian[x][y]; // copy to input_float
i++;
}
}
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 没有从阵列<float>到阵列<int>的可行转换
- 数组下标的类型"float*[float]"无效
- 没有合适的构造函数可以从"float"转换为"_D3DCOLORVALUE"
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 将 **float array 从 C++ Dll 传递给 python
- 使用 cl 构建代码并连接到 sqlite 库
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- float* 已在 Gameobject.obj 中定义
- 如何将 qml 的文本转换为 float 和 int
- 为什么将 1 添加到 numeric_limits<float>::min() 返回 1?
- MSYS2 MinGW64 在 Windows 上构建 GMP/MPFR 作为静态库,并将它们链接到使用 CL 编译的
- 有没有比static_cast更优雅的从int到float的演员阵容<float>?
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- NMAKE:致命错误 U1077:cl.exe 和 nmake.exe 返回代码'0x2'
- OPENCL 警告:不兼容的指针类型将'float __global[16]'传递给类型为 '__global float4 的参数 *
- 错误:无法将"float*"转换为"float"
- Clang-CL 警告 strnicmp 已弃用,请使用 ISO C 并C++符合标准的名称_strnicmp