在 std::complex 向量和英特尔 IPP 复杂数组之间复制的有效方法

Efficient way of copying between std::complex vector and Intel IPP complex array

我正在为信号使用英特尔 IPP processing.The 顶级函数正在使用 std::vectorstd::complex > 数据类型,而英特尔 IPP 等价物是 Ipp32fc[]。 Ipp32fc 数据类型定义为

typedef struct {
Ipp32f re;
Ipp32f im;
} Ipp32fc;

据我所知,Ipp32f 数据类型只是一个 C/C++ 浮点数。到目前为止,我一直在使用 for 循环进行复制,考虑到我正在处理的符号率,它对处理器的占用很大。我曾尝试使用标准的 memcpy 但运气不佳。

欢迎所有建议。

有一个名为 ippsCopy_32f 的函数,它将内容从一个向量复制到另一个向量。也许您可以尝试使用复制功能,看看是否有帮助。请参阅下面的 link,它可以帮助您获得有关 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-initialization-functions-1/copy.html