使用 Mathematical Acceleration Subsystem (MASS) 库

XL C/C++ 随附一组用于高性能数学计算的 Mathematical Acceleration Subsystem (MASS) 库。

MASS 库由 使用标量库, 中描述的标量 C/C++: 函数 的库组成,该库针对 使用向量库以及一组针对 使用 SIMD 库 中描述的特定体系结构调整的 SIMD 库中描述的特定体系结构调整了一组向量库。 在特定优化级别会自动调用标量库和向量库中包含的函数,但您也可以在程序中显式调用这些函数。 请注意,MASS 函数和系统库函数中的准确性和异常处理方式可能不同。

MASS 函数必须使用缺省舍入方式和浮点异常捕获设置运行。

当您使用下列任何一组选项来编译程序时:
  • -qhot -qignerrno -qnostrict
  • -qhot -qignerrno -qstrict=nolibrary
  • -qhot -O3
  • -O4
  • -O5
编译器会自动尝试通过调用等效的 MASS 向量函数 (函数 vdnintvdintvcosisinvscosisinvqdrtvsqdrtvrqdrtvsrqdrtvpopcnt4vpopcnt8vexp2vexp2m1vsexp2vsexp2m1vlog2vlog21pvslog2vslog21p除外) 对系统数学函数的调用进行矢量化。 如果不能矢量化,它会自动尝试调用等效的 MASS 标量函数。 对于自动向量化或标量化,编译器使用 XLOPT 库 libxlopt.a中包含的 MASS 函数的版本。

除上述任何选项集外,当 -qipa 选项生效时,如果编译器无法对其进行向量化,那么它会在决定调用 MASS 标量函数之前尝试内联这些函数。

使用 MASS 编译和链接程序 描述了如何编译和链接使用 MASS 库的程序,以及如何选择性地将 MASS 标量库函数与常规系统库配合使用。