---
title: 选项 -fsimdmath,-msimdmath64
description: "-fsimdmath选项用于使能矢量化mathlib数学库。启用该选项后，编译器在矢量化阶段会自动寻找可使用矢量化数学库的代码片段，并在确认有性能收益时生成包含矢量化数学函数的相关矢量化代码。该选项适用于C、C++和Fortran语言前端。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0033.html
sourcePath: /source/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0033.html
indexId: 92b7df053a5ebef188c1b1a9886702c4814fe774196547951b2408993729146771
---
# 选项 -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-2025.03-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1/include目录下提供simdmath.h头文件，在gcc-12.3.1-2025.03-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1/finclude目录下提供simdmath_f.h头文件。这两个头文件分别是C/C++ 和 Fortran中包括当前mathlib支持的所有矢量化数学库函数（共11个）的simd声明。如果只想使能部分矢量化函数，可将头文件中相应的函数声明删除。
  选项： -lmathlib -fsimdmath -lm


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