在C / C ++中是否存在极其优化的memcpy2d?

时间:2014-02-27 02:40:45

标签: c++ c assembly 2d intel

我正在寻找能够使用SSD / MMX / 3DNow / SIMD(Whatever)将2D阵列快速复制到另一个(更大)2D阵列的东西。我不想实现自己,只是寻找一个高度优化的支持和维护解决方案。我在Linux上使用Clang(++)。

memcyp2Di(int *src, int *dest, int srcw, int srch, int destw, int desth, int destx, int desty)

2 个答案:

答案 0 :(得分:5)

通过Agner Fog查看Asmlib,它提供了一个极其优化的memcpy版本和其他常见的libc函数,这些函数是用汇编语言编写的,并使用CPU中可用的最佳SIMD指令集,从基本的SSE一直到例如,Haswell处理器中的最新AVX2和FMA3指令。

答案 1 :(得分:1)

Intel IPP library。它用于处理大型矩阵上的数学计算,但我很确定也有复制函数。该库初始化为使用每个函数的最快版本,具体取决于您的处理器,并使它保持最新,因此当新处理器问世时,它们最终会使用新指令实现这些功能,以使事情更快。