我想在 Ubuntu 12.04 中安装 siesta (一个计算代码) 来并行运行。有一个 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
Makefile 中的规则.SUFFIXES
决定了编译期间使用哪些隐式规则。这里不打算详细解释,但你可以在第 2 章中阅读你想知道的一切规则在 O'Reilly 的使用 GNU Make 管理项目,第三版,作者:Robert Mecklenburg。
关于变量的分配,例如,,FPP
您需要参考软件自己的文档来确定这些变量的合适值 - 我们可能会FPP_OUTPUT
NETCDF_LIBS
猜测基于FPP
代表 Fortran 预处理器的上下文(类似于CPP
),但这绝不是保证。
你的潜在问题似乎是“如何在 Ubuntu 12.04 上构建 siesta 计算化学软件?”。以下是对我有用的方法(YMMV - 取决于您的系统上安装了哪些预先存在的软件):
安装先决条件 - 对我来说,这些是 Fortran 编译器,以及 BLAS 和 LAPACK 库的常规和 MPI 版本,我按照如下方式进行操作
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
测试可能比构建花费更多的时间。