Что нужно сделать с этими строками в следующем файле arch.make?

Я хочу установить siesta (вычислительный код) для параллельной работы в Ubuntu 12.04. Существует файл arch.make, часть его содержимого выглядит следующим образом:

    .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

Итак, согласно этому. У меня есть несколько вопросов, пожалуйста:

1- что означают следующие строки? (что в них происходит?)(для второй строки я не знаю, что значит писать BLAS_LIBS и равно адресу.)

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

2-что следует писать после знака равенства в следующих строках?

 FPP=
  FPP_OUTPUT=
NETCDF_LIBS=

3-выражения на правой стороне знака равенства в следующей строке должны быть заменены чем-то? если да, что должно быть написано?!

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

Я знаю некоторые основы сценариев bash и знаком с командной строкой в ​​Linux. Я смотрел несколько учебных курсов по bash-скриптингу, но я все еще озадачен!!

Спасибо за любую помощь.

1 ответ

.SUFFIXES rule в Makefile определяет, какие неявные правила используются во время компиляции. Подробное объяснение здесь не по теме, но вы можете прочитать все, что вы хотите знать, в главе 2 " Правила" в " Управлении проектами О'Рейли с помощью GNU Make, третье издание" Роберта Мекленбурга.

Что касается присвоения переменных, таких как FPP, FPP_OUTPUT, NETCDF_LIBS вам нужно будет обратиться к собственной документации программного обеспечения, чтобы определить подходящие значения для них - мы можем догадаться, исходя из контекста, FPP расшифровывается как препроцессор Fortran (по аналогии с CPP) но это ни в коем случае не гарантируется.


Похоже, ваш основной вопрос звучит так: "Как мне создать программное обеспечение для вычислительной химии siesta на Ubuntu 12.04?", Вот что сработало для меня (YMMV - в зависимости от того, какое ранее установленное программное обеспечение установлено в вашей системе):

  1. Установите предварительные условия - для меня это был компилятор Fortran, а также обычные и MPI-версии библиотек BLAS и LAPACK, которые я сделал как

    sudo apt-get install gfortran libatlas-dev liblapack-dev libscalapack-mpi-dev
    
  2. Распакуйте программное обеспечение и перейдите к Obj каталог

    tar xf siesta-4.1-b1.tar.gz
    cd siesta-4.1-b1/Obj
    
  3. Как указано в Obj/README файл, запустите предоставленный скрипт для заполнения каталога,

    ../Src/obj_setup.sh
    
  4. В соответствии со сценарием запустите предоставленный сценарий настройки, чтобы создать подходящий arch.make файл

    ../Src/configure
    

    Если вы все еще заинтересованы в ответах на ваши вопросы (2) и (3) на данный момент, вы можете посмотреть в созданный arch.make файл, чтобы увидеть автоматически настроенные значения

  5. Сборка программного обеспечения

    На этом этапе вы должны быть готовы к make Однако, похоже, что шаг конфигурирования не совсем обо всем позаботится, так как он терпит неудачу с сообщением

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

    Хотя вы могли бы редактировать arch.make файл, ИМХО, для такого небольшого изменения проще передать определение переменной на make командная строка

    make "COMP_LIBS += libsiestaLAPACK.a"
    
  6. Если сборка завершится успешно, вы можете запустить предоставленные тесты, выбрав Obj/Tests каталог и работает make там

    cd Tests/
    make
    

Тесты могут занять значительно больше времени, чем сборка.

Другие вопросы по тегам