The CSF2 has been replaced by the CSF3 - please use that system! This documentation may be out of date. Please read the CSF3 documentation instead. To display this old CSF2 page click here. |
AMD Core Math Library (ACML)
Overview
ACML provides a free set of thoroughly optimized and threaded math routines for HPC, scientific, engineering and related compute-intensive applications.
The ACML should be used with the AMD Open64 compiler.
Restrictions on Use
There are no restrictions on accessing the ACML but please read the AMD ACML End User License Agreement (pdf).
Set Up Procedure
Before using ACML load the appropriate module according to the target AMD architecture and serial/parallel nature.
Platform | modulefile |
---|---|
Single-threaded | module load libs/open64/acml/5.3.1 |
Single-threaded (64bit integers) | module load libs/open64/acml/5.3.1_int64 |
Single-threaded | module load libs/open64/acml/5.1.0 |
Multi-threaded | module load libs/open64/acml/5.3.1_mp |
Multi-threaded (64bit integers) | module load libs/open64/acml/5.3.1_mp_int64 |
Multi-threaded | module load libs/open64/acml/5.1.0_mp |
Single-threaded with FMA4 support (Bulldozer) | module load libs/open64/acml/5.3.1_bd |
Single-threaded with FMA4 support (Bulldozer, 64bit integers) | module load libs/open64/acml/5.3.1_bd_int64 |
Single-threaded with FMA4 support (Bulldozer) | module load libs/open64/acml/5.1.0_bd |
Multi-threaded with FMA4 support (Bulldozer) | module load libs/open64/acml/5.3.1_bd_mp |
Multi-threaded with FMA4 support (Bulldozer, 64bit integers) | module load libs/open64/acml/5.3.1_bd_mp_int64 |
Multi-threaded with FMA4 support (Bulldozer) | module load libs/open64/acml/5.1.0_bd_mp |
In both cases the environment variables ACMLROOT
and BLASLIB
will be set for use in command-lines or in a Makefile for convenience.
FMA4 support refers to the fused multiply-add instructions available in the Bulldozer (Interlagos) nodes.
Linking against ACML
Static libacml.a
and dynamic libacml.so
libraries are available. Multi-threaded libraries are named libacml_mp.a
and libacml_mp.so
. Do not add _fma4
or _bd
to the library names – the choice of bulldozer or not is made in the directory names set by the modulefile.
Once you have loaded the appropriate modulefile the following compilation examples can be used:
# First start an interactive session on a bulldozer node qrsh -l bulldozer -l inter # Load the compiler modulefile module load compilers/amd/4.5.2.1 # Load the ACML modulefile (see above) module load .... # Single-threaded FORTRAN openf90 -o mycode.exe mycode.f -L$ACMLROOT/lib -lacml # Multi-threaded FORTRAN (notice the -mp flag to enable OpenMP and the acml_mp library name) openf90 -o my_omp_code.exe -mp my_omp_code.f -L$ACMLROOT/lib -lacml_mp # Single-threaded C (note additional libraries required) opencc -o mycode.exe mycode.c -I$ACMLROOT/include -L$ACMLROOT/lib -lacml -lfortran -lffio -lm -lrt # Multi-threaded C (notice the -mp flag to enable OpenMP and the acml_mp library name) opencc -o my_omp_code.exe -mp my_omp_code.c -I$ACMLROOT/include -L$ACMLROOT/lib -lacml_mp -lfortran -lffio -lm -lrt
If using the environment variables in a Makefile then you should use $(ACMLROOT)
because Makefiles require environment variable names to be enclosed in parentheses. For example:
mycode.exe: mycode.f openf90 -o $@ -L$(ACMLROOT)/lib -lacml $<
Further Inforamtion
The AMD AMD ACML pages provides further documentation and help on all aspects of the ACML.
Updates
None.