来自复杂主机数据的阵列火力阵列
Arrayfire array from complex host data
我在从主机数据初始化 arrayfire 数组时遇到问题。
以下代码不会为我链接:
constexp int mNumEigenInfos = 100;
std::complex<float> mEigenVectors[mNumEigenInfos][6];
af::array mEigenVectorsArray = af::array((dim_t)6,(dim_t)(mNumEigenInfos),reinterpret_cast<float2*>(mEigenVectors));
给我一个错误:
undefined reference to `af::array::array<float2>(long long, long long, float2 const*, af_source)'
现在,如果我将reinterpret_cast从 float2* 更改为 float*:
constexp int mNumEigenInfos = 100;
std::complex<float> mEigenVectors[mNumEigenInfos][6];
af::array mEigenVectorsArray = af::array((dim_t)6,(dim_t)(mNumEigenInfos),reinterpret_cast<float*>(mEigenVectors));
它链接很好。通过在线阅读,我认为我应该将复杂数据视为cuComplex(转换为float2或cuComplex会产生完全相同的错误,因为它们是同一件事(。
我觉得我在这里犯了一个愚蠢的错误,但似乎无法弄清楚。
我应该如何从 std::复杂的主机数据初始化数组?
感谢您的帮助
这有点类似于问题af::array::d evice 不适用于复杂数组,请查看 - 唯一的区别是复杂数据的传递方向。
以下内容应该可以正常工作,因为std::complex
应该与 ABI 兼容af::cfloat
。
af::array mEigenVectorsArray =
af::array((dim_t)6, (dim_t)(mNumEigenInfos),
reinterpret_cast<af::cfloat>(mEigenVectors));
ArrayFire API 不会有float2
类型的函数符号,但它将有类型为af::cfloat
的函数符号。我认为,即使是cuFloatComplext
或float2
也应该与 ABI 兼容af::cfloat
。因此,重新解释-投射到af::cfloat
是应该做的。
相关文章:
- 来自复杂主机数据的阵列火力阵列
- 将一个阵列中的数据存储到另外两个阵列中不起作用
- 将数据定向到不存在的阵列中
- 如何将来自文本文件的数据读取到结构的int阵列中
- 将数据从阵列火阵列传输到犰狳结构
- 将普通的旧数据阵列视为std ::阵列
- C 2D char阵列有时会在随机位置复制数据
- 将数据存储到多维阵列中
- 如何初始化具有零值的结构的数据成员阵列
- 将数据从STD ::向量传递到GLSL中的均匀阵列
- 管理多维阵列的课程!我该如何管理单元格中的不同数据类型
- OpenGL:从数据阵列生成2D纹理以显示在四边形上
- 具有两种不同数据类型的2d阵列
- 快速访问阵列中的数据
- 将大型Malloc阵列数据成功分配到内存后丢失
- 如何在"unsigned char"阵列上存储_m128 SSE 寄存器数据?
- 数据未存储在阵列中
- 高效地将多个一维阵列中的数据收集到单个一维阵列中
- 利用GDAL/OGR库实现二维地理参考栅格数据阵列的栅格数据重投影
- 从Oracle PL/SQL中获取数据到主机阵列