C++特征库针对不同的体系结构(如SSE、NEON等)进行矢量化。他们在文档中提到,特征向量化不依赖于编译器。但是,大多数现代编译器,如gcc,如果使用-O3标志启用向量化标志,就会自动进行矢量化。
所以我的问题是,当编译器自动为我们做这件事时,为什么特征库或其他库会进行硬编码矢量化呢?
发布于 2016-07-08 09:31:39
的确,编译器在自动矢量化方面越来越好,对于像2*A-4*B这样的基本系数运算,像Eigen这样的库不能比最近的编译器做得更好。然而,对于稍微复杂的表达式,如矩阵积、缩减、转换、幂等,编译器不能做太多的事情。另一方面,特征可以利用表达语义的高级知识显式地向量化它们。此外,复杂的标量类型不是由编译器矢量化的。您可以通过禁用Eigen的显式向量化(-DEIGEN_DONT_VECTORIZE)来自行检查。
https://stackoverflow.com/questions/38250620
复制相似问题