我正在使用英特尔 IPP 进行信号处理。顶级函数使用 std::vectorstd::complex > 数据类型,而英特尔 IPP 等效项是 Ipp32fc[]。 Ipp32fc 数据类型定义为
typedef struct {
Ipp32f re;
Ipp32f im;
} Ipp32fc;
据我所知,Ipp32f 数据类型只是一个 C/C++ 浮点数。到目前为止,我一直在使用 for 循环进行复制,考虑到我正在处理的符号率,它会严重挤压处理器。我尝试过使用标准 memcpy 但运气不佳。
欢迎所有建议。
有一个名为 ippsCopy_32f 的函数,它将内容从一个向量复制到另一个向量。也许您可以尝试使用复制功能,看看是否有帮助。请参阅以下链接,该链接可帮助您获取有关 IPP 开发人员参考指南中向量初始化函数部分中各个函数的更多详细信息。 https://www.intel.com/content/www/us/en/develop/documentation/ipp-dev-reference/top/volume-1-signal-and-data-processing/vector-initialization-functions/vector -初始化函数-1/copy.html
我是 C++ 的初学者,但似乎
std::complex<float>
与 Ipp32fc
具有实际上相同的数据,并且类似地 std::complex<double>
与 Ipp64fc
相同。我的意思是可以使用 reinterpret_cast
转换指针,并且可以使用 memcpy
将数据从一个容器复制到另一个容器。