Mathematical Acceleration Subsystem (MASS) for Blue Gene/L consists of libraries of mathematical intrinsic functions tuned specifically for optimum performance on Blue Gene/L.
These libraries and functions:
Include both scalar and vector functions.
Are thread-safe.
Offer improved performance over their corresponding standard system library routines.
Are intended for use in C, C++, and Fortran applications where slight differences in accuracy or handling of exceptional values can be tolerated.
Note: The MASS libraries for BlueGene/L are preliminary versions provided as a convenience to users, and have not yet been tested as thoroughly as the MASS libraries for other platforms
Mathematical Acceleration Subsystem for Blue Gene/L includes the items described below:
Scalar libraries
The MASS scalar library, libmass.a, contains an accelerated set of frequently-used math intrinsic functions in the standard system library, plus the added functions dnint for C/C++ and rsqrt for Fortran. The scalar libraries can be used with either Fortran, C, or C++ applications and will run under Linux on Blue Gene/L. When called from C or Fortran, the scalar MASS functions accept double-precision arguments and return a double-precision result.
The library contains the following scalar functions:
| Scalar Library Functions |
|
| atan | atan2 | cos | cosh |
| cosisin | dnint | exp | expm1 |
| log | log1p | pow (C/C++) | rsqrt |
| sin | sincos | sinh | sqrt |
| tan | tanh | x**y (Fortran) | |
Back to top
Vector libraries
The vector library, libmassv.a, can be used with either Fortran, C, or C++ applications.
| Vector Library Double-Precision Functions |
|
| vacos | vacosh | vasin | vasinh |
| vatan2 | vatanh | vcbrt | vcos |
| vcosh | vcosisin | vdint | vdiv |
| vdnint | vexp | vexpm1 | vlog |
| vlog10 | vlog1p | vpopcnt4 | vpopcnt8 |
| vpow | vqdrt | vrcbrt | vrec |
| vrqdrt | vrsqrt | vsin | vsincos |
| vsinh | vsqrt | vtan | vtanh |
| |
| Vector Library Single-Precision Functions |
|
| vsacos | vsacosh | vsasin | vsasinh |
| vsatan2 | vsatanh | vscbrt | vscos |
| vscosh | vscosisin | vsdiv | vsexp |
| vsexpm1 | vslog | vslog10 | vslog1p |
| vspow | vsqdrt | vsrcbrt | vsrec |
| vsrqdrt | vsrsqrt | vssin | vssincos |
| vssinh | vssqrt | vstan | vstanh |
The MASS vector functions accept double-precision (or single-precision) vector input and output arguments, and an integer vector-length parameter. All the functions in the BlueGene/L MASS library are consistent, in the sense that a given input value will always produce the same result, regardless of its position in the vector, and regardless of the vector length.
Back to top
MASS vector functions source library
Successful use of the MASS vector libraries is contingent on the user vectorizing the application. To assist in that effort, the MASS vector Fortran and C/C++ source libraries are provided to enable application developers to write portable vector code that can run on non-Blue Gene/L systems where the MASS libraries are not available.
The source library, libmassv.f, includes Fortran versions of all the vector functions in the MASS vector libraries.
The source library, libmassv.c, includes C/C++ versions of all the vector functions in the MASS vector libraries.
The syntax for the vector functions is visible in libmassv.f and libmassv.c, and the user can write code using these functions to obtain code that may port to systems other than the Blue Gene/L, pSeries and RS/6000 systems. The user can then use the faster MASS vector libraries with that same code when running on a Blue Gene/L, pSeries or RS/6000 system.
Back to top