o que deve ser feito com estas linhas no seguinte arquivo arch.make?

0

Eu quero instalar o siesta (um código computacional) para rodar paralelo no Ubuntu 12.04. Existe um arquivo arch.make que faz parte do seu conteúdo:

    .SUFFIXES:
  .SUFFIXES: .f .F .o .a .f90 .F90

  SIESTA_ARCH=x86_64-unknown-linux-gnu--unknown

  FPP=
  FPP_OUTPUT=
  FC=/opt/pool/openmpi/bin/mpif90
  RANLIB=ranlib

  SYS=nag

  SP_KIND=4
  DP_KIND=8
  KINDS=$(SP_KIND) $(DP_KIND)

  FFLAGS=-g -O2
  FPPFLAGS= -DFC_HAVE_FLUSH -DFC_HAVE_ABORT -DGRID_DP -DPHI_GRID_SP -DMPI
  LDFLAGS=

  ARFLAGS_EXTRA=

  FCFLAGS_fixed_f=
  FCFLAGS_free_f90=
  FPPFLAGS_fixed_F=
  FPPFLAGS_free_F90=

  LIBPATH=/opt/pool/scalapack_installer-1.8.0

  BLAS_LIBS=/usr/lib/libf77blas.a /usr/lib/atlas/libblas.a
  LAPACK_LIBS=/usr/lib/atlas/liblapack.a
  BLACS_LIBS= -L$(LIBPATH) -lblacsF77 -lblacsC -lblacs
  SCALAPACK_LIBS=-lscalapack

  COMP_LIBS=

  NETCDF_LIBS=
  NETCDF_INTERFACE=

  LIBS=$(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS) $(NETCDF_LIBS) -lpthread

  #SIESTA needs an F90 interface to MPI
  #This will give you SIESTA's own implementation
  #If your compiler vendor offers an alternative, you may change
  #to it here.
  MPI_INTERFACE=libmpi_f90.a
  MPI_INCLUDE=./include

Então, de acordo com isso. Eu tenho algumas perguntas, por favor:

1- o que as seguintes linhas significam? (o que acontece neles?) (para a segunda linha, eu não sei o que significa escrever BLAS_LIBS e igual a um endereço.)

.SUFFIXES: .f .F .o .a .f90 .F90
BLAS_LIBS=/usr/lib/libf77blas.a /usr/lib/atlas/libblas.a

2-o que deve ser escrito após o sinal de igual nas seguintes linhas?

 FPP=
  FPP_OUTPUT=
NETCDF_LIBS=

3 - as expressões no lado direito do sinal de igual na linha seguinte devem ser substituídas por algo? se sim, o que deve ser escrito?!

LIBS=$(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS) $(NETCDF_LIBS)

Eu sei algumas noções básicas de bash scripting e familiarizado com a linha de comando no linux. Eu assisti a vários cursos de treinamento sobre script bash, mas ainda estou perplexo!

Obrigado por qualquer ajuda.

    
por P.A.M 29.09.2016 / 21:03

1 resposta

2

Uma regra .SUFFIXES em um Makefile determina quais regras implícitas são usadas durante a compilação. Uma explicação detalhada estaria fora do tópico aqui, mas você pode ler tudo o que você quer saber no Capítulo 2 Regras em O'Reilly's Gerenciando projetos com o GNU Make, terceira edição Por Robert Mecklenburg .

Em relação às atribuições de variáveis, como FPP , FPP_OUTPUT , NETCDF_LIBS , você precisará consultar a documentação do software para determinar os valores adequados para elas - podemos adivinhar com base em contexto que FPP representa um pré-processador Fortran (por analogia com CPP ), mas isso não é garantido de forma alguma.

Sua pergunta básica parece ser "Como eu construo o software de química computacional da siesta no Ubuntu 12.04?" . Aqui está o que funcionou para mim (YMMV - dependendo do software pré-existente instalado no seu sistema):

  1. Instale os pré-requisitos - para mim, estes eram um compilador Fortran, além de versões regulares e MPI das bibliotecas BLAS e LAPACK, o que eu fiz como

    sudo apt-get install gfortran libatlas-dev liblapack-dev libscalapack-mpi-dev
    
  2. Descompacte o software e mude para o diretório Obj

    tar xf siesta-4.1-b1.tar.gz
    cd siesta-4.1-b1/Obj
    
  3. Conforme indicado no arquivo Obj/README , execute o script fornecido para preencher o diretório

    ../Src/obj_setup.sh
    
  4. Conforme sugerido pelo script, execute o script de configuração fornecido para criar um arquivo arch.make adequado

    ../Src/configure
    

    Neste momento, se ainda tiver interesse nas respostas às suas perguntas (2) e (3), você poderá ver o arquivo arch.make criado para ver os valores configurados automaticamente

  5. Construa o software

    Neste ponto, você deve estar pronto para make , mas parece que a etapa de configuração não cuida de tudo, já que falha com a mensagem

    SIESTA: dc_lapack.a has been deprecated in favor of:
      COMP_LIBS += libsiestaLAPACK.a
    Please update your arch.make file accordingly...
    

    Embora você possa editar o arquivo arch.make , IMHO é mais simples para uma mudança tão pequena passar a definição da variável na linha de comando make

    make "COMP_LIBS += libsiestaLAPACK.a"
    
  6. Se a construção for concluída com êxito, você poderá executar os testes fornecidos alterando para o diretório Obj/Tests e executando make there

    cd Tests/
    make
    

Os testes podem levar consideravelmente mais tempo que a compilação.

    
por steeldriver 30.09.2016 / 14:27