Introduction to AMD CPU Foundation Libraries

Discussion created by jesse_amd Employee on Apr 25, 2018

The foundation libraries include a suite of mathematical libraries that form a key component in most scientific and high-performance computing (HPC) applications that target the data centers. The libraries are optimized to help achieve the best performance on the Zen core architecture of EPYC™ processors.


AMD CPU Foundation Libraries are comprised of five different packages

  1. BLIS (BLAS Library) - BLIS is a portable open-source software framework for instantiating high-performance Basic Linear Algebra Subprograms (BLAS) functionality
  2. libFLAME (LAPACK) - libFLAME is a portable library for dense matrix computations that provides much of the functionality present in Linear Algebra Package (LAPACK). In combination with the BLIS library, which is optimized for the AMD EPYC™ processor family, libFLAME enables running high performing LAPACK functionalities on an AMD platform
  3. AMD Random Number Generator Library - AMD Random Number Generator Library is a pseudorandom number generator library. It provides a comprehensive set of statistical distribution functions and various uniform distribution generators, or base generators, including Wichmann-Hill and Mersenne Twister. The library contains five base generators and twenty-three distribution generators.
  4. AMD Secure RNG - The AMD Secure Random Number Generator (RNG) is a library that provides APIs to access the random numbers generated by AMD's hardware random number generator implementation. These are more robust random numbers that are suitable for cryptographic applications.
  5. libM (Math Library) - AMD libM is a software library containing a collection of basic math functions optimized for x86-64 processor-based machines. It provides many routines from the list of standard C99 math functions. Applications can link into AMD libM library and invoke math functions instead of compiler's math functions for better accuracy and performance.


Also, FFTW (Fast Fourier Transform in the West), a popular open-source FFT library has been tuned for AMD EPYC™ processors and is supported by its maintainer Matteo Frigo. The FFTW library consists of a comprehensive collection of fast C routines for computing the discrete Fourier transform (DFT) and various special cases thereof.


In the latest 0.95 beta release, AMD has built on the features and performance of the previous version by further optimizing some of the key routines of the libraries as well as adding new functionality. Here are the main highlights of the latest 0.95 beta release:


BLIS (BLAS Library)

  • Fine-tuned multithread performance of level 3 BLAS for AMD EPYC™ family processors
  • Enhanced optimizations of level 2 BLAS routines, SGEMV and DGEMV
  • Minimized BLIS framework overhead for small matrix sizes


libM (AMD Core Math Library)

  • Introduced a fast version of power function (fastpow) for double precision
  • Enhanced optimization of single precision logf performance


AMD Random Number Generator Library

  • Introduced a new API to generate random numbers seeded by the hardware generated Secure Random Number Generator (SRNG). The function uses the AMD Secure RNG library to seed the Mersenne Twister base generator and generates uniform distribution random numbers.


libFLAME (LAPACK Library)

  • Includes few build improvements and cross-compilation fixes


More details on the functionalities provided by the libraries and optimizations of the current AMD CPU Libraries v0.95 beta release with download instructions can be found on the developer site.