SPECFEM3D Cartesian с ускорением на GPU

Ознакомьтесь с Руководством для быстрого запуска и начните работу.

SPECFEM3D Cartesian

SPECfEM3D Cartesian моделирует акустическое (текучее), упругое (твердотельное), связанное акустическое / упругое, упруго деформируемое распространение сейсмических волн в любом типе сетки гексаэдров (структурированных или нет). Эта программа может, к примеру, моделировать распространение сейсмических волн в осадочных бассейнах или любых других геологических моделях после землетрясений. Также она может быть использована для проведения испытаний без разрушения образцов или исследования акустики океана.

SPECFEM3D Cartesian работает до 38 раз быстрее на NVIDIA® Tesla® P100 по сравнению с CPU-системой, позволяя проводить симуляции всего за несколько часов, а не недель.

SPECFEM3D Cartesian получает на GPU ускорение в 38 раз

Установка

Системные требования

SPECFEM3D_Cartesian портируется на любую платформу параллельных вычислений с современными компиляторами C и Fortran и последней версией MPI.

По желанию для получения исходного кода можно использовать git.

Инструкции по загрузке и установке

   1. Скачайте  исходный код SPECFEM3D_Cartesian. Самую последнюю версию можно получить при помощи

git clone --recursive --branch devel

You can also find instructions to get earlier/release versions and user manual and various user resources from: https://geodynamics.org/cig/software/specfem3d/

2. Убедитесь, что в вашей системе доступны nvcc, gcc и gfortran. Если они недоступны, обратитесь к системному администратору. Помимо MPI mpicc, сборка должна содержать mpif90.

Обратите также внимание на то, что производительность выполняемых на CPU задач, а также шаг генерации базы данных чувствительны к выбранному компилятору. Компилятор PGI намного быстрее, чем gfortran, например, для генерации базы данных и немного быстрее при проведении симуляций xspecfem3d только на CPU. Это не оказывает существенного влияния на производительность моделирования xspecfem3d на GPU.

3. Настройте пакет

./configure --with-cuda=cuda8

Обратите внимание, что это создаст исполняемый файл для устройств с вычислительной способностью 6.0 или выше.

  5. Соберите программу

make

Запуск задач

Running jobs requires modifying the parameter files that define the simulation. There is a specific example described in the benchmarking section based on the “simple model” example found in “specfem3d/EXAMPLES/meshfem3D_examples/simple_model”.

The parameter files are found in the “DATA” folder. Make sure that DATA/Par_file and DATA/meshfem3D_files/Mesh_Par_file are set correctly. Note particularly that the number of MPI tasks (NPROC) must be set in DATA/Par_file and the number of tasks in each direction (NPROC_XI and NPROC_ETA) must be set in DATA/meshfem3D_files/Mesh_Par_file. It is also important that

Для параметра GPU_MODE необходимо установить значение = .true.

в Par_data или программа не будет работать на GPU.

Запуск задач является трехступенчатым процессом. Здесь мы приводим пример выполнения четырех задач. Обратите внимание, что все 3 этапа должны запускаться с одинаковым количеством задач MPI. Для вычислений на GPU используйте одну задачу 1 MPI на GPU. Для вычислений на 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

Тесты производительности

This section walks through the process of testing the performance on your system and shows performance on a typical configuration. The example described here is based on the “simple model” example found in “specfem3d/EXAMPLES/meshfem3D_examples/simple_model”.

1. Download and install the program as described in the Installation section

2. Download the SPECFEM3D_Cartesian_GPU_READY_FILES_v2.tgz and extract the file. This file includes example scripts that build specfem3d and run this example by running “build_run_specfem3d_cartesian.sh”. It would need small modifications to paths/env modules etc used to run on different system. The remaining steps below describe step by step running the 4 GPU test case specifically. The included scripts will run cases for 1,2,4 GPUs and 32 or 36 CPU cores and can be reviewed for additional details.

tar -xzvf SPECFEM3D_Cartesian_GPU_READY_FILES_v2.tgz

3. Скопируйте папку input_cartesian_v4.tar в корневую папку specfem3d

cp input_cartesian_v4.tar specfem3d

4. Перейдите в корневой каталог SPECFEM

cd specfem3d

5. Извлеките файлы Par_files из файла tar.

tar -xvf input_cartesian_v4.tar

This will extract variations of the data files into the DATA and DATA/Meshfem3D_files directory in your SPECFEM3D Cartesian installation, and update the STATIONS, FORCE SOLUTION and CMTSOLUTION files. We include files for 1 GPU, 2 GPUs and 4 GPUs and for 36 CPUs. The problem size has been increased slightly to increase the run time. Note also that there are restrictions in the number of MPI tasks that can be used. More information can be found in the DATA/Par_file. The NPROC variables will change depending on whether the run uses 1 GPU (1x1), 2 GPUs (2x1), 4 GPUs (2x2) or 36 CPU cores (9x4). Also note that the example described below corresponds to mesh size 288x256 for the 36 core CPU. Example files included in the input_cartesian.tar file also include Mesh_Par_file examples for 256x256 which can be used for a 32 core CPU case. Other variations could be created for different core counts. The rules for valid sizes as described in the Mesh_Par_file.

Par_file:

NPROC              = 4     # changes depending on num GPUs or cpu cores used
NSTEP              = 10000
DT                 = 0.01
GPU_MODE           = .true.     # change to .false. For cpu only run

DATA/meshfem3D_files/Mesh_Par_file:
NEX_XI             = 288
NEX_ETA            = 256
# number of MPI processors along xi and eta (can be different)
NPROC_XI           = 2     # 2x2 for 4 GPU example
NPROC_ETA          = 2
NREGIONS           = 4
# define the different regions of the model as :
#NEX_XI_BEGIN #NEX_XI_END #NEX_ETA_BEGIN #NEX_ETA_END #NZ_BEGIN #NZ_END #material_id
1      288      1     256      1      4      1
1      288      1     256      5      5      2
1      288      1     256      6      15     3
14     25       7     19       7      10     4

6. Перейдите в каталог DATA

cd DATA

7. Скопируйте файл, соответствующий количеству графических процессоров, которые вы хотите запустить в Par_file

cp Par_file_4_proc Par_file

8. Перейдите в каталог the meshfem3D_files

cd meshfem3D_files

9. Скопируйте файл, соответствующий количеству графических процессоров, которые вы хотите запустить в Mesh_par_file

cp Mesh_Par_file_4_proc_288x256 Mesh_Par_file

10. Вернитесь в основной каталог

cd ../..

11. Удалите старые файлы OUTPUT_FILES и DATABASES_MPI. Заметьте, что вы можете сохранить их в новое место, но последующие выполнения задач будут перезаписывать файлы в папке OUTPUT_FILES.

rm OUTPUT_FILES -r
mkdir OUTPUT_FILES
rm DATABASES_MPI -r
mkdir DATABASES_MPI

12. Запустите внутренний построитель сеток

mpirun -np 4 ./bin/xmeshfem3D

13. Сгенерируйте базу данных

mpirun -np 4 ./bin/xgenerate_databases

14. Запустите симуляцию

mpirun -np 4 ./bin/xspecfem3D

15. Просмотрите файл output_solver.txt из папки OUTPUT_FILES. Показателем производительности является «Общее потраченное время», указанное в этом файле.

grep "Total elapsed time" OUTPUT_FILES/output_solver.txt

Обратите внимание, что построитель сетки и генерация базы данных не поддерживают ускорения на GPU. На практике сетка выполняется один раз, а затем может использоваться для нескольких симуляций. Вот почему в тесте производительности учитывается только время работы решателя.

Ожидаемые результаты производительности

В этом разделе представлены ожидаемые показатели производительности для разных систем с одним и несколькими узлами.

Производительность масштабирования SPECFEM3D Cartesian на нескольких GPU
SPECFEM3D получает на GPU ускорение в 38 раз
Ускорение SPECFEM3D Cartesian в 10-40 раз

Рекомендованные системные конфигурации

Конфигурация аппаратного обеспечения

PC

Parameter
Specs

CPU Architecture

x86

System Memory

16-32GB

CPUs

2 (10+ cores, 2 GHz)

GPU Model

GeForce® GTX TITAN X

GPUs

1-4

Servers

Parameter
Specs

CPU Architecture

x86

System Memory

64GB

CPUs/Node

2 (10+ cores, , 2+ GHz)

Total # of Nodes

1

GPU Model

NVIDIA®Tesla® P100,
Tesla® K80

GPUs/Node

1-4

Конфигурация программного обеспечения

Software stack

Parameter
Version

OS

CentOS 7.3

GPU Driver

375.20 or newer

CUDA Toolkit

8.0 or newer

PGI Compliers

16.9

Соберите свою идеальную систему прямо сегодня