在2006 年 11 月关于使用vDSP对代码进行矢量化的一篇有用但有些过时的文章中,作者发表了以下声明:
需要记住的重要一点是,只有步幅等于 1 的操作才能交付极快的矢量化代码。
今天仍然如此吗?即使在具有更强大矢量内在函数的更新的英特尔处理器上?
我之所以问是因为我正在编写一些矩阵数学例程,并且刚刚开始将它们全部切换为使用类似于 Fortran的列优先排序,以便更容易地与MATLAB、BLAS和LAPACK兼容。但现在我发现我对vDSP的一些调用需要处理不再连续的向量……</p>
目前,这些vDSP调用是我的代码执行的瓶颈例程。并不是说这将永远如此,但至少现在我不想放慢它们的速度,只是为了让对其他库的调用更简单。
我现在最常调用的vDSPvDSP_distancesq
例程是为了以防万一。