MUMPS

De WikiLICC
Ir para: navegação, pesquisa

Dicas para instalar MUMPS no linux.

  • Página oficial do MUMPS, : http://graal.ens-lyon.fr/MUMPS/
  • Baixe o arquivo MUMPS_4.10.0.tar.gz, descompacte, (troque 4.10.0 pela n.o da última versão), leia o README:
[user] wget http://mumps.enseeiht.fr/MUMPS_4.10.0.tar.gz
[user] tar zxvf MUMPS_4.10.0.tar.gz
[user] cd MUMPS_4.10.0
[user] more README

É necessário instalar os pacotes scalapack, blacs (prefiro eles contra mpich2)

[user] yum install scalapack-mpich2
[user] yum install blacs-mpich2 

Makefile.inc

  • Escolha o Makefile.inc apropriado, veja o exemplo simplificado (com gfortran e mpich2)
# compilei apenas o PORD, nao instalei o Metis
LPORDDIR = $(topdir)/PORD/lib/
IPORD    = -I$(topdir)/PORD/include/
LPORD    = -L$(LPORDDIR) -lpord

ORDERINGSF  = -Dpord
ORDERINGSC  = $(ORDERINGSF)

LORDERINGS  = $(LMETIS) $(LPORD) $(LSCOTCH)
IORDERINGSF = $(ISCOTCH)
IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)

PLAT   =
LIBEXT = .a
OUTC   = -o
OUTF   = -o
RM     = /bin/rm -f
CC     = gcc
FC     = gfortran
FL     = gfortran
AR     = ar vr
RANLIB = echo
# para MUMPS sequencial (nao usado)
INCSEQ = -I$(topdir)/libseq
LIBSEQ = -L$(topdir)/libseq -lmpiseq
# Para MUMPS usando mpich2 (NOTE que REPETE mpiblacs DUAS VEZES)
SCALAP = -L/usr/lib64/mpich2/lib -lscalapack -lmpiblacs -lmpiblacsF77init -lmpiblacs
INCPAR = -I/usr/include/mpich2-x86_64

LIBPAR = $(SCALAP)  -L/usr/lib64/mpich2/lib -lmpich

LIBBLAS  = -L/usr/lib64 -lblas -llapack
LIBOTHERS= -lpthread

CDEFS    = -DAdd_

OPTF     = -O -DALLOW_NON_INIT
OPTL     = -O
OPTC     = -O

INCS     = $(INCPAR)
LIBS     = $(LIBPAR)
LIBSEQNEEDED =

A linha SCALAP acima inclui -lmpiblacsF77init e repete -lmpiblacs para poder compilar os exemplos.

Compilar escolhendo a precisão (Z,D,S,C)

[user] make z

que criará em lib os arquivos

[user] ls lib
libzmumps.a libmumps_common.a libpord.a


Problemas

Ao renomear os nomes automaticamente com a opção -lblas (por exemplo) para libblas.so pode não existir o arquivo e existir algo como libblas.so.3. Uma solução é criar um link simbólico no diretório que está a libblas.so.3,

[user /usr/lib64] ln libblas.so.3 -s libblas.so