Librairie MAGMA
Article mis en ligne le 20 juillet 2021
dernière modification le 10 décembre 2021
Le projet MAGMA développe une librairie d’Algèbre LInéaire Dense similaire à LAPACK mais pour des architectures hétérogènes ou hybrides : Multicore+GPU
Plusieurs module sont disponibles suivant les compilations (Intel, gnu) les librairies Blas (MKL, OpenBlas) et la représentation des entiers (4 ou 8 octets)
Toutes les librairies MAGMA ci-dessous sont compilée en cuda 11.0 qui vient avec le module nvidia/nvhpc/20.9-working .
- MAGMA : Compilation intel+MKL integer 32 bit (4 octets)
module purge
module load magma/2.5.4-cuda-intel-mkl-int32
module li
Currently Loaded Modulefiles:
1) intel/18.2 2) nvidia/nvhpc/20.9-working 3) magma/2.5.4-cuda-intel-mkl-int32
# Pour linker avec compilateur intel
-lmagma_sparse -lmagma -lmkl_intel_lp64 -mkl=parallel
- MAGMA : Compilation intel+MKL integer 64 bit (8 octets)
module purge
module load magma/2.5.4-cuda-intel-mkl-int64
module li
# Pour linker avec compilateur intel
-lmagma_sparse -lmagma -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl
- MAGMA : Compilation PGI+MKL integer 32 bit (4 octets)
module purge
module load magma/2.5.4-cuda-pgi-mkl-int32
module li
Currently Loaded Modulefiles:
1) intel/18.2 2) cuda/11.0 3) gcc/7.3.0 4) pgi/19.10 5) magma/2.5.4-cuda-pgi-mkl-int32
# Pour compiler/ linker avec compilateur pgi
-I$MAGMADIR/include -I$CUDADIR/include -L$CUDADIR/lib64/ -L$CUDAMATH/lib64 -L$MKLROOT/lib/intel64 -L$MAGMADIR/lib
-lmagma -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lpthread -lstdc++ -lm -lcusparse -lcudart -lcudadevrt -lcublas -lcublasLt
- MAGMA : Compilation PGI+MKL integer 64 bit (8 octets)
module purge
module load magma/2.5.4-cuda-pgi-mkl-int64
module li
Currently Loaded Modulefiles:
1) intel/18.2 2) cuda/11.0 3) gcc/7.3.0 4) pgi/19.10 5) magma/2.5.4-cuda-pgi-mkl-int64
# Pour compiler/ linker avec compilateur pgi
-I$MAGMADIR/include -I$CUDADIR/include -L$CUDADIR/lib64/ -L$CUDAMATH/lib64 -L$MKLROOT/lib/intel64 -L$MAGMADIR/lib
-lmagma -lmkl_intel_lp64 -ilmkl_intel_thread -lmkl_core -lpthread -lstdc++ -lm -lcusparse -lcudart -lcudadevrt -lcublas -lcublasLt
- MAGMA : Compilation gnu9+MKL integer 64 bit (8 octets)
module purge
module load magma/2.5.4-cuda-gnu9-mkl-int64
export MAGMADIR=/usr/local/magma/gnu-mkl/2.5.4/int64/install/
# Pour Compiler et Linker avec compilateur GNU
gfortran -m64 -I${MKLROOT}/include -g -fopenmp -I${MAGMADIR}/include -c test_LU.F90
gfortran -fopenmp -g -pg -DADD_ -lmagma -Wl,--no-as-needed -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl -o exec.x test_LU.o
- MAGMA : Compilation gnu9+Openblas integer 32 bit (4 octets)
module purge
module load magma/2.5.4-cuda-gnu9-openblas-int32
#Pour compiler et Linker avec compilateur GNU et OpenBlas
export MAGMADIR=/usr/local/magma/gnu-openblas/2.5.4/int32/install
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${MAGMADIR}/lib
gfortran -m64 -I${MKLROOT}/include -g -fopenmp -I${MAGMADIR}/include -c test_LU.F90
gfortran -cpp -DAdd_ -g -fopenmp -L$MAGMADIR/lib -lmagma_sparse -lmagma -lopenblas -lgomp -lpthread -lm -ldl -o exec.x test_LU.o