0

我正在使用Eigen 库在 iPad 2 上进行一些计算。(即 cortex-a9)。似乎某些操作是使用NEON 指令矢量化的,而其他操作则不是。

我尝试过的向量化操作:点积、向量和矩阵加法和减法。

未矢量化的操作:矩阵乘法。

我在同一个项目和同一个文件中使用这些操作,所以编译器选项是相同的。我正在使用-O3 -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp.

我使用的所有矩阵都有动态大小。有什么我做错了,还是这是预期的行为?

谢谢。

4

1 回答 1

0

当您使用-mfpu=neongcc/clang 时,将向量化整数运算,但不会向量化浮点,因为 NEON 不是 100% IEEE 投诉(它不支持非正规数)。您必须指定-ffast-math使用 NEON 使 gcc/clang 矢量化浮点代码。但是,您必须小心,因为-ffast-math可能会影响数值结果。

于 2013-06-10T14:36:12.367 回答