Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用Eigen 库在 iPad 2 上进行一些计算。(即 cortex-a9)。似乎某些操作是使用NEON 指令矢量化的,而其他操作则不是。
我尝试过的向量化操作:点积、向量和矩阵加法和减法。
未矢量化的操作:矩阵乘法。
我在同一个项目和同一个文件中使用这些操作,所以编译器选项是相同的。我正在使用-O3 -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp.
-O3 -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp
我使用的所有矩阵都有动态大小。有什么我做错了,还是这是预期的行为?
谢谢。
当您使用-mfpu=neongcc/clang 时,将向量化整数运算,但不会向量化浮点,因为 NEON 不是 100% IEEE 投诉(它不支持非正规数)。您必须指定-ffast-math使用 NEON 使 gcc/clang 矢量化浮点代码。但是,您必须小心,因为-ffast-math可能会影响数值结果。
-mfpu=neon
-ffast-math