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

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

SPECFEM3D Globe

SPECFEM3D Globe имитирует распространение сейсмической волны в глобальном и континентальном масштабе. Это приложение позволяет исследователям анализировать влияние латеральных колебаний скорости сжатия, скорости сдвига, плотности, вращения и самогравитации на 3D-модель земной коры.

Последняя версия приложения 7.0 обеспечивает поддержку графических процессоров для аппаратных ускорителей OpenCL и CUDA.

SPECFEM3D GLOBE работает более чем в 25 раз быстрее на одном графическом ускорителе NVIDIA® Tesla® P100 GPU, помогая ученым проводить симуляции сейсмических данных за несколько часов, а не недель.

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

Установка

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

SPECFEM3D_GLOBE работает на любой платформе с поддержкой MPI. Мы предлагаем использовать следующую конфигурацию:

  • Операционная система: Centos 7 или более новая версия
  • CUDA 8.0 для графических процессоров с архитектурой NVIDIA Pascal™
  • Современный компилятор C и Fortran
  • Вам потребуется NVIDIA GPU с вычислительной возможностью не ниже 3.0.

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

   1. Скачайте исходный код  SPECFEM3D_Globe 7.0.0

   2. Извлеките пакет

tar xf SPECFEM3D_GLOBE_V7.0.0.tar.gz

3. Необходимые компиляторы

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

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

./configure --with-cuda=cuda5

Обратите внимание, что здесь мы настраиваем использование более современных привязок CUDA в CUDA 5.0 и более новых версиях.

  5. Сборка программы

make

Note in testing TESLA P100 GPUs with specfem3d_globe-7.0.0 it has been observed that the default configure and make steps described in the guide will lead to building a binary that uses CUDA nvcc flags “-gencode=arch=compute_35,code=\"sm_35,compute_35\" “. For running on P100 GPUs a user might normally edit the makefile generated by configure (or makefile.in prior to running configure) to the sm_60 is selected instead of sm_35. When this is done with specfem3d_globe-7.0.0 the resulting sm_60 binary actually slightly slower when running on P100 vs the default sm_35 binary. This is unexpected and under investigation.

Запуск задач

Запуск SPECFEM3D Globe представляет собой двухэтапный процесс. Для начала необходимо создать сетку, которая будет использоваться для решения окончательной проблемы. Затем нужно запустить решатель.

Обратите внимание, что, поскольку некоторые массивы статически имеют размер, если какие-либо изменения вносятся в DATA / Par_file (который устанавливает некоторые параметры), то программа должна быть перекомпилирована.

1. Обновите DATA/Par_file и оставшиеся файлы. 
Крайне важно для использования GPU установить для параметра GPU_MODE в DATA/Par_file значение .true

2. Пересоберите программу. Обратите внимание, что, так как программа использует массивы статического размера, то любые изменения в Par_file требуют пересборки программы.

make clean
make

3. Запустите построитель сетки (в этом случае мы работаем с 4 MPI-задачами на 4 GPU)

mpirun -np 4 bin/xmeshfem3D

4. Запустите основную программу

mpirun -np 4 bin/xspecfem3D

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

Этот раздел описывает процесс тестирования производительности вашей системы и демонстрирует производительность в типичной конфигурации.

1. Загрузите и установите программу, как описано в разделе «Установка»

2. Загрузите  файл tar с необходимыми файлами входных данных

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

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

tar -xf parfiles.tar

Это приведет к извлечению файлов данных в каталог DATA в и обновлению файлов STATIONS и CMTSOLUTION. Мы включаем файлы для 1 GPU, 2 GPU и 4 GPU и 36 СPU. Пример, который мы используем, является модифицированной версией примера «global_s362ani_shakemovie», который поставляется вместе с SPECFEM3D Globe. Размер проблемы был уменьшен, чтобы иметь возможность проводить вычисления на одном узле. Также обратите внимание, что существуют ограничения в количестве задач MPI, которые могут быть использованы. Переменные NPROC будут меняться в зависимости от того, используется ли 1 GPU (1x1), 2 GPU (2x1), 4 GPU (2x2) или 36 ядер CPU (6x6).

Основные изменения, внесенные в исходный Par_file:

NCHUNKS=1
NEX_XI=96
NEX_ETA=96
NPROC_XI=2      # note 2x2 corresponds to the 4 GPU case
NPROC_ETA=2
GPU_MODE=.true.      # note .false. Для вычислений на CPU

Эти изменения призваны уменьшить размер симуляции, включить / отключить ускорение GPU, а также отрегулировать количество MPI-процессов (1 на GPU), необходимых для каждого из тестовых случаев. Более подобную информацию можно найти в Par_file.

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

cd DATA

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

cp Par_file_96x96_100_4GPU Par_file

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

cd ..

8. Пересоберите программу и запустите построитель сетки. Так как программа использует массивы статического размера, каждые изменения, вносимые в Par_file, влекут за собой необходимость перекомпиляции программы.

make clean
make
mpirun -np 4 bin/xmeshfem3D

9. Запустите решатель

mpirun -np 4 bin/xspecfem3D

10. Посмотрите результат решателя, чтобы узнать, как много времени у программы ушло на решение задачи

tail OUTPUT_FILES/output_solver.txt

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

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

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

Производительность масштабирования SPECFEM3D Globe на нескольких GPU
Производительность масштабирования SPECFEM3D Globe на нескольких GPU
SPECFEM3D Globe получает на GPU ускорение в 25 раз

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

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

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

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