SLEEF stands for SIMD Library for Evaluating Elementary Functions. It implements manually vectorized versions of all C99 real floating point math functions. It can utilize SIMD instructions that are available on modern processors. SLEEF is designed to effciently perform computation with SIMD instructions by reducing the use of conditional branches and scatter/gather memory access. Our benchmarks show that the performance of SLEEF is comparable to that of the best commercial library.
Unlike closed-source commercial libraries, SLEEF is designed to work with various architectures, operating systems and compilers. It is distributed under the Boost Software License, which is a permissive open source license. SLEEF can be easily ported to other architectures by writing a helper file, which is a thin abstraction layer of SIMD intrinsics. SLEEF also provides dispatchers that automatically choose the best subroutines for the computer on which the library is executed. In order to further optimize the application code that calls SLEEF functions, link time optimization(LTO) can be used to reduce the overhead of functions calls, and the build system of SLEEF supports usage of LTO. The library also has a functionality to generate header files in which the library functions are all defined as inline functions. SLEEF can be used for GPGPU and WebAssembly with these header files. In addition to the vectorized functions, SLEEF provides scalar functions. Calls to these scalar SLEEF functions can be auto-vectorized by GCC.
The library contains implementations of all C99 real FP math functions in double precision and single precision. Different accuracy of the results can be chosen for a subset of the elementary functions; for this subset there are versions with up to 1 ULP error (which is the maximum error, not the average) and even faster versions with a few ULPs of error. For non-finite inputs and outputs, the functions return correct results as specified in the C99 standard. All the functions in the library are thoroughly tested and confirmed that the evaluation error is within the designed limit by comparing the returned values against high-precision evaluation using the GNU MPFR Library.
As of version 3.6, SLEEF also includes a quad-precision math library. This library includes fully vectorized IEEE 754 quadruple-precision (QP) functions that correspond to the standard C math functions. It also includes I/O functions for converting between QP numbers and strings.
SLEEF also includes a library of discrete Fourier transform(DFT). These subroutines are fully vectorized, heavily unrolled, and parallelized in such a way that modern SIMD instructions and multiple cores can be utilized for efficient computation. It has an API similar to that of FFTW for easy migration. The subroutines can utilize long vectors up to 2048 bits. The helper files for abstracting SIMD intrinsics are shared with SLEEF libm, and thus it is easy to port the DFT subroutines to other architectures. Preliminary results of benchmark are now available.
This library supports the following architectures :
The supported combinations of the architecture, operating system and compiler are shown in Table 1.1.
Table 1.1: Environment support matrix | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
The supported compiler versions are as follows.
*1 NEON has only single precision support. The computation results are not in full accuracy because NEON is not IEEE 754-compliant.
*2 LTO is not supported.
*3 AVX functions are not supported for Cygwin, because AVX is not supported by Cygwin ABI.
All functions in the library are thread safe unless otherwise noted.
Division of Information Science of Nara Institute of Science and Technology participates through Naoki Shibata. |
|
As the leading company in a wide range of information technologies, IBM participates through David Edelsohn. |
|
As the leading IP company in semiconductors design, ARM participates through Francesco Petrogalli. |
|
As the leading company in developing a video game engine, Unity Technologies participates through Alexandre Mutel. |
|
SLEEF is distributed under Boost Software License Version 1.0.
Boost Software License is OSI-certified.
See this page for more
information about Boost Software License.
See Changelog for older changes.