ACML consists of the following main components:
- A full implementation of Level 1, 2 and 3 Basic Linear Algebra Subroutines (BLAS), with key routines optimized for high performance on AMD Opteron™ processors.
- A full suite of Linear Algebra (LAPACK) routines. As well as taking advantage of the highly-tuned BLAS kernels, a key set of LAPACK routines has been further optimized to achieve considerably higher performance than standard LAPACK implementations.
- A comprehensive suite of Fast Fourier Transforms (FFTs) in both single-, double-, single-complex and double-complex data types.
- Fast scalar, vector, and array math transcendental library routines optimized for high performance on AMD Opteron processors.
- Random Number Generators in both single- and double-precision.
Depending on the compiler used and the architecture of the CPU, there is a corresponding library for each of them.
Four compilers are currently supported: Gfortran/GCC, Intel Ifort/ICC, Pathscale pathf90/pathcc, Portland pgf90/pgcc. For instance, gfortran64 directory contains ACML library to be linked with Gfortran compiler on a 64bits machine. pgi64_mp directory contains ACML library to be linked with Pathscale compiler on a 64bits using OpenMP directives.
To DYNAMICALLY access the library using Portland compiler from a Fortran program on a 64bits machine:
pgf90 -Wl,-rpath,/afs/crc.nd.edu/x86_64_linux/scilib/acml/current/pgi/pgi64/lib my_fortran_program.f90 -lacml
To STATICALLY access the library using Pathscale compiler from a Fortran program on a 64bits machine:
pathf90 /afs/crc.nd.edu/x86_64_linux/scilib/acml/current/path/pathscale64/lib/libacml.a my_fortran_program.f90
The advantage to compile dynamically the library is that you will not have to recompile your program when the library will be updated.