Что нужно сделать с этими строками в следующем файле 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 - в зависимости от того, какое ранее установленное программное обеспечение установлено в вашей системе):
Установите предварительные условия - для меня это был компилятор Fortran, а также обычные и MPI-версии библиотек BLAS и LAPACK, которые я сделал как
sudo apt-get install gfortran libatlas-dev liblapack-dev libscalapack-mpi-dev
Распакуйте программное обеспечение и перейдите к
Obj
каталогtar xf siesta-4.1-b1.tar.gz cd siesta-4.1-b1/Obj
Как указано в
Obj/README
файл, запустите предоставленный скрипт для заполнения каталога,../Src/obj_setup.sh
В соответствии со сценарием запустите предоставленный сценарий настройки, чтобы создать подходящий
arch.make
файл../Src/configure
Если вы все еще заинтересованы в ответах на ваши вопросы (2) и (3) на данный момент, вы можете посмотреть в созданный
arch.make
файл, чтобы увидеть автоматически настроенные значенияСборка программного обеспечения
На этом этапе вы должны быть готовы к
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"
Если сборка завершится успешно, вы можете запустить предоставленные тесты, выбрав
Obj/Tests
каталог и работаетmake
тамcd Tests/ make
Тесты могут занять значительно больше времени, чем сборка.