参考资料
数值实现
Julia 1.4.2/MATLAB 2019a
备用系统
Ubuntu 64
地球物理局 地震波动力学实验室 谱元组 译
# 声明
# 欢迎批评指正,禁止转载!
目 录
石中居士:地震波场正演模拟中的谱元法:基本原理与程序实现——目录关键词
#谱元法#
第2章 入门指南
注意:对于希望在Windows而不是Unix计算机上运行软件包的人,您可以安装Docker或VirtualBox(在后一种情况下,在VirtualBox中安装Linux),然后在其中轻松运行。
要下载SPECFEM2D
软件包,请输入以下命令:
git clone --recursive --branch devel
我们建议您将ulimit -S -s unlimited
添加到.bash_profile
文件中,和/或将limit stacksize unlimited
添加到.cshrc
文件中,以消除对Unix堆栈大小的任何潜在限制。
实现添加步骤之前,先安装vim。首先切换到根用户
输入密码,然后输入
确保网络通畅后,回车,确定。
对于Ubuntu可能需要新建一个.bash_profile。则输入:
进入到这个新文件中,输入
然后按ESC,再输入
回车,退出。输入
检查一下是否成功创建
然后,要为您的系统配置软件,请运行configure shell
脚本。该脚本将尝试猜测适合您系统的配置值。但是,至少建议您为Fortran编译器明确指定适当的命令名称(另一个选项是在.bash_profile
或.cshrc
文件中定义FC,CC和MPIF90):
./configure FC=gfortran CC=gcc
进入specfem2d文件夹
输入命令
./configure FC=gfortran CC=gcc
回车
如果要并行运行,即,使用多个处理器内核,则可以输入
./configure FC=gfortran CC=gcc MPIFC=mpif90 --with-mpi
如果愿意,您可以将上述GNU编译器(gfortran和gcc)替换为其他编译器。例如,对于Intel ifort和icc,请改用FC = ifort CC = icc
。
在运行配置脚本之前,您可能应该编辑文件,以确保它包含适用于系统的最佳编译器选项。已知问题或要检查的事项是:
- 英特尔ifort编译器:查看是否需要为计算机添加
-assume byterecl
。对于该编译器,我们注意到初始发行版有时会存在错误或问题,这些错误或问题在运行代码时可能导致错误的结果,因此,我们强烈建议使用已安装至少一个Service Pack或更新的版本。特别是,对于该编译器的版本17,用户报告了-assume buffered_io
选项的问题(使代码在运行时崩溃)。如果发现问题,请从文件中删除该选项,或将其更改为
-assume nobuffered_io
,然后重试。 - IBM编译器:查看是否需要为计算机添加
-qsave
或-qnosave
。 - Mac OS:您可能需要安装
XCODE
。 - IBM Blue Gene机器:请参考SPECFEM3D_Cartesian手册,其中包含有关如何在Blue Gene上运行的详细说明。
SPECFEM2D
软件包依靠SCOTCH
库对网格进行分区。 SCOTCH
库[Pellegrini and Roman,1996][1]提供了有效的静态映射、图形和网格划分例程。SCOTCH是一个免费软件包,由法国波尔多的Inria和LaBRI的François Pellegrini et al.开发,可以从网页Scotch: Project HomeSPECFEM2D
软件包依靠SCOTCH
库对网格进行分区。 SCOTCH
库[Pellegrini and Roman,1996][1]提供了有效的静态映射、图形和网格划分例程。SCOTCH是一个免费软件包,由法国波尔多的Inria和LaBRI的François Pellegrini et al.开发,可以从网页
上下载到。如果在系统上找不到SCOTCH
库,则该配置将绑定源代码提供的版本以进行编译。可以使用--with-scotch-dir
选项显式设置现有SCOTCH安装的路径。举个例子:
./configure FC=ifort MPIFC=mpif90 --with-mpi --with-scotch-dir=/opt/scotch
对于gfortran编译器,要改为
FC=gfortran
。
如果您使用Intel ifort编译器来编译代码,我们建议您使用Intel icc C编译器来编译Scotch,即,使用:
./configure CC=icc FC=ifort MPIFC=mpif90
有关SCOTCH安装的更多详细信息,请转到子目录并阅读
。您将来可能希望从
下载SCOTCH
的最新版本。由于SCOTCH
是最新的并且性能更好,因此已不再支持METIS图分区程序。
编译SCOTCH源代码时,如果收到诸如"ld: cannot find -lz"
之类的消息,则您的计算机上可能缺少Zlib压缩开发库,因此您需要安装它或要求系统管理员来这样做。在Linux机器上,该软件包通常称为"zlib1g-dev"
或类似名称。(因此"sudo apt-get install zlib1g-dev"
将安装它)。
您可以编辑Makefile
进行更具体的修改。特别是,有几种可用的选项:
-DUSE_MPI
使用MPI库进行编译。-DUSE_SCOTCH
启用图形分区器SCOTCH的使用。
完成这些步骤之后,返回到SPECFEM2D/
的主目录并键入
创建将放置在文件夹./bin/
中的所有可执行文件。
默认情况下,求解器以单精度运行。对于大多数应用程序来说,这很好,但是如果出于某种原因要以双精度运行求解器,请使用选项“ --enable-double-precision
”运行配置脚本。请记住,这当然会使总内存大小增加一倍,并且还将使求解器在许多处理器上速度降低约20%到30%。
如果您的编译器对代码中使用的use mpi
语句有问题,请使用根目录下名为的脚本,将所有脚本自动替换为包括
include ''
。
如果在Cray机器上配置代码时遇到问题,即,例如,如果从configure脚本中收到错误消息,请尝试导出以下两个变量:MPI_INC=$CRAY_MPICH2_DIR/include
和FCLIBS=""
,并在需要时提供更多详细信息,您可以参考utils/Cray_compiler_information目录。您还可以查看名为utils/Cray_compiler_information/的配置脚本。
可视化源代码的子例程调用树
诸如doxywizard之类的软件包可用于可视化源代码的子例程调用树。 Doxywizard
是用于配置和运行doxygen
的GUI前端。
成为代码开发人员,或对源代码进行少量修改
如果您想在代码中开发新功能,和/或想要进行小的更改、改进或错误修复,我们非常欢迎您做出贡献。为此,即,通过读/写访问来访问源代码的开发分支(以一种安全的方式,无需过多担心破坏程序包,有一个机器人称为BuildBot,负责检查和验证所有新贡献和更改),请访问此网页:
geodynamics/specfem2d要可视化源代码的调用树,可以在目录doc/call_trees_of_the_source_code中看到可用的Doxygen工具。
商业推广
封面:[2]
参考
- ^abF. Pellegrini and J. Roman. SCOTCH: A software package for static mapping by dual recursive bipartitioning of process and architecture graphs. Lecture Notes in Computer Science, 1067:493–498, 1996.
- ^