La bibliothèque MUMPS propose, entre autres, une méthode de résolution directe (décomposition LU) dans un contexte de mémoire distribuée (Message Passing Interface). Elle propose également une parallélisation mixte ou hybride (mémoire partagée /mémoire distribuée).
MUMPS peut être utilisée également dans la construction de pré-conditionneurs dans le cadre des méthodes de Krylov (méthodes itératives), ou dans la résolution des problèmes locaux issus d’une méthode de décomposition de domaine par exemple.
Les versions installées sur Olympe
Version 5.3.5
Les bibliothèques:
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.3.5-i4/lib libcmumps.a libdmumps.a libmumps_common.a libpord.a libsmumps.a libzmumps.a
Les includes:
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.2.1-i4/include cmumps_c.h cmumps_struc.h dmumps_root.h mumps_compat.h smumps_c.h smumps_struc.h zmumps_root.h cmumps_root.h dmumps_c.h dmumps_struc.h mumps_c_types.h smumps_root.h zmumps_c.h zmumps_struc.h
Version 5.2.1
Les librairies :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.2.1-i4/lib libcmumps.a libdmumps.a libmumps_common.a libpord.a libsmumps.a libzmumps.a
Les includes :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.2.1-i4/include cmumps_c.h cmumps_struc.h dmumps_root.h mumps_compat.h smumps_c.h smumps_struc.h zmumps_root.h cmumps_root.h dmumps_c.h dmumps_struc.h mumps_c_types.h smumps_root.h zmumps_c.h zmumps_struc.h
Environnement de compilation:
compilateur/lib MKL ; lib. MPI
[@olympelogin1 mumps]$ module li intel/18.2 et intelmpi/18.2
Version 5.1.2
Les librairies :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.1.2-i4/lib libdmumps.a libmumps_common.a libpord.a
Les includes :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.1.2-i4/include cmumps_c.h cmumps_struc.h dmumps_root.h mumps_compat.h smumps_c.h smumps_struc.h zmumps_root.h cmumps_root.h dmumps_c.h dmumps_struc.h mumps_c_types.h smumps_root.h zmumps_c.h zmumps_struc.h
Environnement de compilation:
compilateur/lib MKL ; lib. MPI :
[@olympelogin1 mumps]$ module li intel/18.2 et intelmpi/18.2
les Lib. parmetis et pt-scotch ont été utilisées pour sa compilation :
/usr/local/mumps/parmetis-4.0.3/ /usr/local/mumps/parmetis-4.0.3-intel-i4/ /usr/local/mumps/scotch_6.0.6/ /usr/local/mumps/scotch_6.0.6/-intel-i4/
Version 5.6.0
Les librairies :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.6.0-i4/lib libdmumps.a libmumps_common.a libpord.a
Les includes :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.6.0-i4/include cmumps_c.h cmumps_struc.h dmumps_root.h mumps_compat.h smumps_c.h smumps_struc.h zmumps_root.h cmumps_root.h dmumps_c.h dmumps_struc.h mumps_c_types.h smumps_root.h zmumps_c.h zmumps_struc.h
Environnement de compilation:
compilateur/lib MKL ; lib. MPI :
[@olympelogin1 mumps]$ module li intel/18.2 et intelmpi/18.2
les Lib. parmetis et pt-scotch ont été utilisées pour sa compilation :
/usr/local/mumps/parmetis-4.0.3/ /usr/local/mumps/parmetis-4.0.3-intel-i4/ /usr/local/mumps/scotch_6.0.6/ /usr/local/mumps/scotch_6.0.6-intel-i4/
Version 5.6.0-i8,
Version compilée avec des entiers 64bit.
Les librairies :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.6.0-i8/lib libdmumps.a libmumps_common.a libpord.a
Les includes :
[@olympelogin1 ~]$ls /usr/local/mumps/MUMPS_5.6.0-i8/include cmumps_c.h cmumps_struc.h dmumps_root.h mumps_compat.h smumps_c.h smumps_struc.h zmumps_root.h cmumps_root.h dmumps_c.h dmumps_struc.h mumps_c_types.h smumps_root.h zmumps_c.h zmumps_struc.h
Environnement de compilation:
compilateur/lib MKL ; lib. MPI :
[@olympelogin1 mumps]$ module li intel/18.2 et intelmpi/18.2
les Lib. parmetis et pt-scotch ont été utilisées pour sa compilation :
/usr/local/mumps/parmetis-4.0.3-intel-i8/ /usr/local/mumps/scotch_6.0.6-intel-i8/
Aide Makefile:
Nous proposons ici une manière d’intégrer la lib. MUMPS dans vos Makefile :
#V5.2.1 MUMPSDIR = /usr/local/mumps/MUMPS_5.2.1-i4 LIBMUMPSDIR = $(MUMPSDIR)/lib # Variable pour les include. Variable à intégrer dans vos options de compilation de votre Makefile INCMUMPSDIR = $(MUMPSDIR)/include SCOTCHDIR = /usr/local/mumps/scotch_6.0.6-intel-i4 LSCOTCH = -L$(SCOTCHDIR)/lib -lesmumps -lptscotch -lptscotcherr -lscotch -lscotcherr LMETISDIR = /usr/local/mumps/parmetis-4.0.3 LMETIS = -L$(LMETISDIR)/build/Linux-x86_64/libmetis -lmetis LPARMETIS = -L$(LMETISDIR)/build/Linux-x86_64/libparmetis -lparmetis LPORDDIR = $(MUMPSDIR)/PORD/lib/ LPORD = -L$(LPORDDIR) -lpord LORDERINGS = $(LPARMETIS) $(LMETIS) $(LPORD) $(LSCOTCH) LIBPAR = -lmkl_scalapack_lp64 -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -Wl,--end-group -openmp -lpthread LIBMUMPS_COMMON = $(LIBMUMPSDIR)/libmumps_common.a #Version double précision LIBDMUMPS = $(LIBMUMPSDIR)/libdmumps.a $(LIBMUMPS_COMMON) #la variable $(LIBMUMPS) est à ajouter à la commande de link de votre Makefile : LIBMUMPS = $(LIBDMUMPS) $(LORDERINGS) $(LIBPAR)