Mudanças entre as edições de "MUMPS"

De WikiLICC
Ir para: navegação, pesquisa
m
m (Makefile.inc)
 
(9 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
 
  # compilei apenas o PORD, nao instalei o Metis
Linha 35: Linha 38:
 
  INCSEQ = -I$(topdir)/libseq
 
  INCSEQ = -I$(topdir)/libseq
 
  LIBSEQ = -L$(topdir)/libseq -lmpiseq
 
  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 -llapack
+
  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
 
   
 
   
Linha 54: Linha 57:
 
  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)
 
Compilar escolhendo a precisão (Z,D,S,C)
 
  [user] make z
 
  [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