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

De WikiLICC
Ir para: navegação, pesquisa
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''')
  # Nao instalei o Metis
+
  # 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 = .a
+
  LIBEXT = .a
  OUTC   = -o
+
  OUTC   = -o
  OUTF   = -o
+
  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 = -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
 
   
 
   
  CDEFS   = -DAdd_
+
  CDEFS   = -DAdd_
 
   
 
   
  OPTF   = -O -DALLOW_NON_INIT
+
  OPTF     = -O -DALLOW_NON_INIT
  OPTL   = -O
+
  OPTL     = -O
  OPTC   = -O
+
  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