Mudanças entre as edições de "MUMPS"
De WikiLICC
m |
m (→Makefile.inc) |
||
(12 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 7: | Linha 7: | ||
[user] cd MUMPS_4.10.0 | [user] cd MUMPS_4.10.0 | ||
[user] more README | [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''') | * 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/ | LPORDDIR = $(topdir)/PORD/lib/ | ||
IPORD = -I$(topdir)/PORD/include/ | IPORD = -I$(topdir)/PORD/include/ | ||
Linha 21: | Linha 24: | ||
IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH) | IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH) | ||
− | PLAT | + | PLAT = |
− | LIBEXT | + | LIBEXT = .a |
− | OUTC | + | OUTC = -o |
− | OUTF | + | OUTF = -o |
− | RM = /bin/rm -f | + | RM = /bin/rm -f |
− | CC = gcc | + | CC = gcc |
− | FC = gfortran | + | FC = gfortran |
− | FL = gfortran | + | FL = gfortran |
− | AR = ar vr | + | AR = ar vr |
RANLIB = echo | RANLIB = echo | ||
+ | |||
# para MUMPS sequencial (nao usado) | # para MUMPS sequencial (nao usado) | ||
− | INCSEQ | + | INCSEQ = -I$(topdir)/libseq |
− | LIBSEQ | + | LIBSEQ = -L$(topdir)/libseq -lmpiseq |
− | + | ||
# Para MUMPS usando mpich2 ('''NOTE que REPETE mpiblacs DUAS VEZES''') | # Para MUMPS usando mpich2 ('''NOTE que REPETE mpiblacs DUAS VEZES''') | ||
− | SCALAP = -L/usr/lib64/mpich2/lib -lscalapack -lmpiblacs -lmpiblacsF77init -lmpiblacs | + | SCALAP = -L/usr/lib64/mpich2/lib -lscalapack -lmpiblacs -lmpiblacsF77init -lmpiblacs |
INCPAR = -I/usr/include/mpich2-x86_64 | INCPAR = -I/usr/include/mpich2-x86_64 | ||
LIBPAR = $(SCALAP) -L/usr/lib64/mpich2/lib -lmpich | LIBPAR = $(SCALAP) -L/usr/lib64/mpich2/lib -lmpich | ||
− | LIBBLAS = -L/usr/lib64 -lblas | + | LIBBLAS = -L/usr/lib64 -lblas -llapack |
− | LIBOTHERS = -lpthread | + | LIBOTHERS= -lpthread |
− | CDEFS | + | CDEFS = -DAdd_ |
− | OPTF | + | OPTF = -O -DALLOW_NON_INIT |
− | OPTL | + | OPTL = -O |
− | OPTC | + | OPTC = -O |
− | INCS = $(INCPAR) | + | INCS = $(INCPAR) |
− | LIBS = $(LIBPAR) | + | LIBS = $(LIBPAR) |
LIBSEQNEEDED = | 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 |
Edição atual tal como às 11h43min de 19 de abril de 2013
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