arm cortex-m3 gnu gcc 快速开发指南_SPECFEM2D用户手册——第2章 入门指南

参考资料

数值实现

Julia 1.4.2/MATLAB 2019a

备用系统

Ubuntu 64

地球物理局 地震波动力学实验室 谱元组 译

# 声明
# 欢迎批评指正,禁止转载!

目 录

石中居士:地震波场正演模拟中的谱元法:基本原理与程序实现——目录
0815f422253da12679849ed06618490a.png

关键词

#谱元法#


第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文件中定义FCCCMPIF90):

./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安装的更多详细信息,请转到子目录并阅读。您将来可能希望从

Static Mapping, Graph, Mesh and Hypergraph Partitioning, and Parallel and Sequential Sparse Matrix Ordering Package
ea8c0e884c5fef358eff0d72e18c64e6.png

下载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/includeFCLIBS="",并在需要时提供更多详细信息,您可以参考utils/Cray_compiler_information目录。您还可以查看名为utils/Cray_compiler_information/的配置脚本。

可视化源代码的子例程调用树

诸如doxywizard之类的软件包可用于可视化源代码的子例程调用树。 Doxywizard是用于配置和运行doxygen的GUI前端。

成为代码开发人员,或对源代码进行少量修改

如果您想在代码中开发新功能,和/或想要进行小的更改、改进或错误修复,我们非常欢迎您做出贡献。为此,即,通过读/写访问来访问源代码的开发分支(以一种安全的方式,无需过多担心破坏程序包,有一个机器人称为BuildBot,负责检查和验证所有新贡献和更改),请访问此网页:

geodynamics/specfem2d
975bc2886f584f95c1ee7d919f1f9acc.png

要可视化源代码的调用树,可以在目录doc/call_trees_of_the_source_code中看到可用的Doxygen工具。


商业推广


封面:[2]

参考

  1. ^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.
  2. ^
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值