现在,开始阅读此《GPU Ready Apps Guide》(GPU Ready 应用程序指南)。
SPECFEM3D Cartesian 用于在任何类型的六面体协调网格(结构化或非结构化)中模拟声学(流体)、弹性(固体)、耦合声学/弹性、多孔弹性或地震波传播。例如,它可以对地震后地震波在沉积盆地或任何其他区域地质模型中的传播进行建模。它也可用于非破坏性实验或海洋声学。
与仅使用 CPU 的系统相比,SPECFEM3D Cartesian 在 NVIDIA® Tesla® P100 节点上可以实现不低于 38 倍的速度提升,使用户能够将模拟运行时间从几周缩短为几小时。
应将 SPECFEM3D_Cartesian 移植到任何安装有最新 C 和 Fortran 编译器及最新 MPI 实现的并行平台。
(可选)可以使用 git 获取源代码。
1.下载 SPECFEM3D_Cartesian 源代码。可以使用以下命令获取最新版本
git clone --recursive --branch devel
2. 确保 nvcc、gcc 和 gfortran 在系统上可用并且位于您的路径中。如果不可用,请联系系统管理员。除了使用 MPI mpicc 进行构建外,mpif90 必须存在于您的路径中。
还需要注意仅 CPU 运行的性能,且数据库生成步骤对所选择的编译器很敏感。例如,对于数据库生成步骤,PGI 编译器的速度远快于 gfortran,而对于 xspecfem3d 模拟,运行仅 CPU 用例时前者的速度仅略快于后者。在 GPU 用例中则不会对 xspecfem3d 模拟产生严重影响。
3.配置软件包
./configure --with-cuda=cuda8
请注意,这将为计算能力 6.0 或更高版本的设备构建可执行程序。
5.构建程序
make
在 Par_data 中设置 GPU_MODE = .true.,
否则程序将无法在 GPU 上运行。
运行任务的过程分为三个阶段。这里我们以运行 4 项任务为例。请注意,应使用相同的 MPI 任务数运行所有 3 个阶段。对于 GPU 运行,您将对每个 GPU 使用 1 项 MPI 任务。对于仅 CPU 运行,您通常将对每个核心使用 1 项 MPI 任务。需要针对每个不同的用例修改 Par_file 和 Mesh_Par_file。
1.运行内部网格化
mpirun -np 4 ./bin/xmeshfem3D
2.生成数据库
mpirun -np 4 ./bin/xgenerate_databases
3. 运行模拟
mpirun -np 4 ./bin/xspecfem3D
本节将介绍测试系统性能的过程,并展示典型配置的性能。此处描述的示例基于“specfem3d/EXAMPLES/meshfem3D_examples/simple_model”中找到的“简单模型”示例。
tar -xzvf SPECFEM3D_Cartesian_GPU_READY_FILES_v2.tgz
3. 将 input_cartesian_v4.tar 复制您的根 specfem3d 安装文件夹
本节提供了不同的单节点和多节点系统的预期性能基准测试。