我正在使用 Eigen库在iPad 2上进行一些计算。(即cortex-a9)。似乎某些操作使用 NEON指令进行矢量化,而其他操作则不是。
我尝试过的矢量化操作:点积,矢量和矩阵加法和减法。
无法进行矢量化的操作:矩阵乘法。
我在同一个项目和同一个文件中使用这些操作,因此编译器选项是相同的。我正在使用-O3 -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp
。
我使用的所有矩阵都有动态尺寸。有什么我做错了,或者这是预期的行为?
感谢。
答案 0 :(得分:0)
使用-mfpu=neon
时,gcc / clang将向量化整数运算,但不会浮点运算,因为NEON不是100%IEEE投诉(它不支持非正规数)。您必须指定-ffast-math
以使用NEON生成gcc / clang向量化浮点代码。但是,您必须小心,因为-ffast-math
会影响数值结果。