中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

选项 -fsimdmath和-msimdmath64

说明

-fsimdmath选项使能矢量化mathlib数学库。打开此选项则编译器会在矢量化阶段自动寻找可以使用矢量化版本数学库的机会。找到有收益的可矢量化代码段之后生成包含矢量化数学函数的相关矢量化代码。此选项适用于C、C++ 和 Fortran 语言前端。

-msimdmath-64使能64bit位宽的矢量化数学函数接口生成,此选项缺省关闭。由于当前mathlib中并不提供64bit位宽的矢量化数学函数的实现,因此如果直接打开此选项可能导致链接错误。为了方便直接使能mathlib中提供的128bit位宽的数学库,又不至于消减开源原有的功能,设置了该选项。如果有需要使用64bit位宽的矢量化数学库,可以寻找实现,并指定相关数学库的情况下使用。

使用方法

  • 想要使能mathlib提供的全部矢量化数学库接口,在命令行加上-fsimdmath -O3或-fsimdmath -ftree-vectorize即可,其中-O3-ftree-vectorize都是为了开启矢量化优化遍,这是矢量化数学库起效的前提。
  • 编译器在gcc-12.3.1-2024.12-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1/include目录下提供simdmath.h头文件,在gcc-12.3.1-2024.12-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1/finclude目录下提供simdmath_f.h头文件。这两个头文件分别是C/C++ 和 Fortran中包括当前mathlib支持的所有矢量化数学库函数(共11个)的simd声明。如果只想使能部分矢量化函数,可将头文件中相应的函数声明删除。

    选项: -lmathlib -fsimdmath -lm

  • 使能矢量化数学库并非将所有数学函数都以矢量化方式实现,有部分场景无法调用矢量化函数,会出现矢量与标量数学函数同时调用的情况。