来自复杂主机数据的 Arrayfire 数组
Arrayfire array from complex host data
我在从主机数据初始化 arrayfire 数组时遇到问题。
以下代码不会 link 我:
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));
link没问题。通过在线阅读,我认为我应该将复杂数据视为 cuComplex(转换为 float2 或 cuComplex 会给出完全相同的错误,因为它们是同一件事)。
我觉得我在这里犯了一个愚蠢的错误,但似乎无法弄清楚。
我应该如何从 std::complex 主机数据初始化 arrayfire 数组?
感谢您的帮助
这有点类似于问题请看一下-唯一的区别是复杂数据的传递方向。
以下内容应该可以正常工作,因为 std::complex
应该与 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
也应该与 af::cfloat
兼容。因此,应该将重新解释转换为 af::cfloat
。
我在从主机数据初始化 arrayfire 数组时遇到问题。
以下代码不会 link 我:
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));
link没问题。通过在线阅读,我认为我应该将复杂数据视为 cuComplex(转换为 float2 或 cuComplex 会给出完全相同的错误,因为它们是同一件事)。
我觉得我在这里犯了一个愚蠢的错误,但似乎无法弄清楚。
我应该如何从 std::complex 主机数据初始化 arrayfire 数组?
感谢您的帮助
这有点类似于问题
以下内容应该可以正常工作,因为 std::complex
应该与 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
也应该与 af::cfloat
兼容。因此,应该将重新解释转换为 af::cfloat
。