GROMACS с ускорением на GPU

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

GROMACS

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

GROMACS работает до 3-х раз быстрее на системах, оснащенных NVIDIA GPU, по сравнения с CPU-системами. Это позволяет выполнять моделирование методом молекулярной динамики всего за несколько часов, а не дней.

GROMACS работает до 3-х раз быстрее на системах с NVIDIA GPU

Установка

ПО GROMACS (версия 5.1.2) можно скачать на вебсайте GROMACS. На примере ниже показано, командная строка заменяет “VERSION” на 5.1.2 или любую другую версию ПО GROMACS, которую вы хотите использовать. С момента написания этой статьи была выпущена новая версия ПО GROMACS, 5.1.4, которая показала более высокую производительность по сравнению с версией 5.1.2.

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

Для настройки (с CMake) и сборки версии с поддержкой ускорения на GPU требуется следующее программное обеспечение:

  • CMake
  • NVIDIA CUDA®*
  • GCC*
  • MPI (Необходим, только если требуется версия для запуска на нескольких узлах).

*Рекомендуется использовать самую последнюю версию CUDA (в настоящее время это версия 7.5) и самую последнюю версию GCC, поддерживаемую установленной версией CUDA.

$ wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-VERSION.tar.gz
$ tar -xzvf gromacs-VERSION.tar.gz
$ mkdir gromacs-VERSION-build
$ cd gromacs-VERSION-build
$ CC=gcc CXX=g++ cmake <GROMACS_SRC_DIR> -DGMX_OPENMP=ON -DGMX_GPU=ON -
DGPU_DEPLOYMENT_KIT_ROOT_DIR=<GDK_PATH> -DGMX_BUILD_OWN_FFTW=ON -
DGMX_PREFER_STATIC_LIBS=ON -DCMAKE_BUILD_TYPE=Release -
DCMAKE_INSTALL_PREFIX=<GROMACS_INSTALL_DIR>

ОПЦИИ CMAKE (CROSS PLATFORM MAKE)

Замените на путь к исходному каталогу GROMACS, например, ../gromacs-5.1.2. - место установки GPU Deployment Kit.

Вы можете автоматически настроить частоту GPU для оптимальной производительности GROMACS 5.1 через NVML. Для сборки опциональной поддержки NVML требуется  GPU Deployment Kit (GDK).

После загрузки и установки замените на путь до директории gdk. (Вы можете удалить опцию -DGPU_DEPLOYMENT_KIT_ROOT_DIR= , если устанавливаете GDK в каталог по умолчанию.) также необходимо заменить на желаемый каталог установки, например, /opt/gromacs.

Другие параметры настраиваются с помощью опций CMake, например, включение поддержки OpenMP с помощью -DGMX_OPENMP=ON. С помощью опции конфигурации -DGMX_BUILD_OWN_FFTW=ON скачайте и скомпилируйте FFTW. Это гарантирует выбор верных флагов оптимизации для FFTW. Как вариант, вы можете использовать указанную установку FFTW. Подробнее смотрите в разделе FFTW  в руководстве по установке GROMACS. Более подробную информацию о каждой из опций читайте в  Руководстве пользователя GROMACS.

GROMACS с MPI

Чтобы произвести сборку и установить GROMACS с поддержкой MPI, необходимо добавить в командную строку "-DGMX_MPI=ON".

$ CC=mpicc CXX=mpicxx cmake <GROMACS_SRC_DIR> -DGMX_OPENMP=ON -DGMX_GPU=ON
-DGPU_DEPLOYMENT_KIT_ROOT_DIR=<GDK_PATH> -DGMX_MPI=ON -DGMX_BUILD_OWN_FFTW=ON -DGMX_PREFER_STATIC_LIBS=ON -
DCMAKE_BUILD_TYPE=Release -DGMX_BUILD_UNITTESTS=ON -DCMAKE_INSTALL_PREFIX=<GROMACS_INSTALL_DIR>

СБОРКА И УСТАНОВКА

Для сборки и установки GROMACS используйте следующую команду:

$ make
$ sudo make install

Чтобы проверить корректность GROMACS после установки, добавьте в команду настройки -DREGRESSIONTEST_DOWNLOAD=ON и запустите “make check” перед “make install”. Вы также можете воспользоваться командой “make -jN”, где N - число ядер на вашей платформе.

Дополнительную информацию по установке читайте в  руководстве по установке GROMACS.

Запуск задач

GROMACS предлагает скрипты для настройки окружения для разных оболочек. Чтоб настроить PATH и другие переменные окружения, используйте командную строку, которая показана ниже.

    $ source <GROMACS_INSTALL_DIR>/bin/GMXRC

Если вы проводите сборку как обычной, так и версии приложения с поддержкой MPI, как показано выше, вы найдете “gmx” и “gmx_mpi” в папке bin. В примерах, приведенных в этом руководстве, используются наборы данных "воды" из  GROMACS ftp. Запуск GROMACS с этими данными требует подготовки данных, как описано ниже. Дополнительную информацию о подготовке данных для запуска GROMACS можно найти  здесь.

Чтобы запустить GROMACS, выполните следующие шаги:

Шаг 1. Подготовьте данные с помощью grompp (препроцессор GROMACS) 

a. В случае использования версии для работы на одном узле: $ gmx grompp -f

Шаг 2. Запустите mdrun

a. В случае использования версии пакета для вычислений на одном узле $ gmx mdrun 
b. В случае использования версии с поддержкой MPI (np = #GPUs): $ mpirun –np gmx_mpi mdrun

В кластерах с небольшим количеством узлов эти настройки обычно обеспечивают довольно хорошую производительность. Однако некоторые изменения настроек обычно повышают производительность симуляций в GROMACS. Ручная настройка более важна на кластерах с большим количеством узлов. Более подробную информацию вы можете найти в  руководстве пользователя GROMACS , опубликованных статьях и  рассылке пользователям gmx.

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

ПАРАМЕТРЫ ПРОВЕДЕНИЯ ТЕСТИРОВАНИЯ ПРОИЗВОДИТЕЛЬНОСТИ

При запуске тестов для оценки производительности GROMACS, используйте следующие параметры командной строки:

1. –resethway:  В начале каждой симуляции в GROMACS задается доменная декомпозиция и уравновешивается нагрузка между доступными CPU и GPU. Это замедляет выполнение несколько первых сотен итераций. Так как моделирование в реальном времени длится довольно долго, это никак не влияет на общую производительность рабочего процесса. Чтобы максимально сократить время, необходимое для достижения стабильной производительности во время тестирования, необходимо задать параметр –resethway. -resethway сбрасывает все счетчики производительности, когда половина итераций выполнена, что позволяет оценить реальную производительность приложения. Обратите внимание, что если вы сбрасываете счетчик, когда распределитель нагрузки PME все еще активен, на экране всплывет сообщение об ошибке: «При попытке сбросить счетчики mdrun на шаге xxxxxxx настройка PME была все еще активна». Чтобы избежать этого, вы можете увеличить время выполнения шага, повысив значение параметра -maxh или добавив -nsteps для увеличения числа шагов моделирования.

2. -maxh:  Управление максимальным временем, которое длится моделирование. mdrun выполняет достаточное число временных шагов, чтобы моделирование длилось не менее заданного времени. Этому параметру нужно задать довольно высокое значение, чтобы добиться стабильной производительности. Приемлемое значение обычно равняется 5 минутам = 0.08333. Для ограничения времени выполнения моделирования используется этот параметр или параметр “nsteps”, описанный ниже.

3. –noconfout:  Отключение создания файла confout.gro, которое может занять довольно много времени, например, на параллельных файловых системах. Так как в реальном моделировании такое происходит нечасто, этот параметр нужно отключить во время тестирования.

4. -v : Введите более подробную информацию в командую строку или лог-файл md.log. Указанная информация значительно помогает настроить производительность GROMACS.

5. -nb:  Этот параметр "подсказывает" GROMACS, какой процессор использовать для определенных вычислений, CPU или GPU

6. -nsteps:  число шагов моделирования. Отменяет исходное значение в файле mdp. Этот параметр также можно использовать вместо maxh для управления общим временем моделирования.

Производительность указывается после завершения моделирования в лог-файле, а также через консольный вывод. Производительность измеряется в нс/день (чем выше, тем лучше). 

Зайдите на страницу с документацией GROMACS , чтобы найти более подробную информацию о параметрах командной строки.

НАСТРОЙКА ПРОИЗВОДИТЕЛЬНОСТИ

Чтобы понять, как формируется производительность GROMACS, необходимо понять основные принципы выполнения задач в GROMACS. Ниже вы можете ознакомиться с упрощенным описанием этого процесса. GROMACS выполняет четыре типа задач:

1. PP: Расчет короткодействующих сил невалентных взаимодействий или взаимодействий частиц (PP)

2. PME: Расчет аппроксимации для дальнодействующих сил невалентных взаимодействий 

3. Bonded (B): Расчет силы валентных взаимодействий

4. Другое: Моделирование с применением граничных условий, определение ориентации атомов, списка соседей и многое другое.

GPU-ускоренная версия GROMACS ускоряет выполнение самых времязатратных PP-задач, выполняя расчеты для этих задач на GPU. Остальные задачи выполняются на CPU. PP-задачи могут выполняться параллельно с другими задачами, в то время как задачи типа "Другие" в большей степени зависят от результатов задач PP, PME и Bonded. Таким образом, версия приложения для GPU выполняет задачи PME и Bonded на CPU, в то время как GPU используется для PP-задач:

GROMACS переносит выполнение РР-задач, требующих большого объема вычислений, на GPU

Путем масштабирования расстояния, выше которого сила обрабатывается частью длинного диапазона, GROMACS может переключать выполнение задачи с CPU (задача PME) на GPU (задача PP) (автоматическое включение может отключить с помощью переключателя командной строки -tunepme ). Из-за ограничений точности это невозможно осуществить по-другому. Например, в случае, если GPU выполняет PP-задачу быстрее, чем CPU (смотрите Рисунок ниже), GROMACS переносит выполнение задачи с CPU на GPU, что приводит к сокращению времени выполнения программы.

GROMACS переносит выполнение задач на GPU для ускорения процесса моделирования

PP-задача имеет сложность O(m*n), а PME-задача - сложность O(n log(n)), где n – это количество частиц, а m – размер списка соседей. Обычно значение m равняется 200 – 400, что намного меньше, чем n.

Дя настройки производительности GROMACS можно использовать следующие настройки.

КОНФИГУРАЦИЯ ЗАПУСКА

GROMACS использует MPI и OpenMP, чтобы использовать все доступные ресурсы GPU и CPU в кластере. Оптимальные конфигурации запуска зависят от вводных данных и сетевых возможностей. Конфигурации варьируются от одного MPI-процесса на логическое ядро с одним OpenMP потоком до одного MPI процесса на узел, который использует все доступные ядра узла. Чтобы выбрать оптимальную конфигурацию запуска, вы можете руководствоваться следующими советами:

  • При использовании одного сокета (или иногда двух) CPU параллелизация OpenMP обычно более эффективна, чем MPI
  • При использовании нескольких сокетов CPU или нескольких узлов, параллелизация MPI и OpenMP (гибридная) с использованием 2-4 OpenMP потоков на MPI-ранг более эффективна, чем только параллелизация MPI
  • При большом числе узлов эффективнее использовать больше OpenMP потоков на MPI-ранг. Время, затрачиваемое на передачу данных, отображается в лог-файле md.log (смотрите Скрипт 1 «Оценка времени на передачу данных в md.log»).
Computing: Num Ranks Num Threads Call Count Wall time (s) Giga-Cycles total sum %
[…]
Comm. coord. 2 10 252681 63.467 3808.202 3.6
[…]
Comm. energies. 2 10 25917 1.108 66.457 0.1
Total 1782.537 106957.655 100.0
Breakdown of PME mesh computation
[…]
PME 3D-FFT Comm. 2 10 518322 126.829 7610.103 7.1
[…]

Скрипт 1 «Оценка времени на передачу данных в md.log»

В случае использования пакета с поддержкой MPI число MPI–рангов можно контролировать при помощи программы запуска (параметр –np), а число OpenMP потоков – с помощью параметра командной строки mdrun –ntomp или переменной окружения OMP_NUM_THREADS. Версия программы для вычисления на одном узле использует потоки MPI и OpenMP. В этой версии число OpenMP потоков также можно контролировать при помощи параметра командной строки –ntomp, а число MPI-рангов – с помощью –ntmpi. В GPU-ускоренной версии GROMACS для использования всех доступных GPU необходим хотя бы один MPI-ранг на GPU.

ПРИВЯЗКА ПОТОКОВ\ПРОЦЕССОВ

OpenMP-потоки и MPI-процессы должны быть корректно привязаны к ядрам/потокам системы. Это можно сделать либо с помощью используемой программы запуска mpi, либо с помощью GROMACS. По умолчанию GROMACS пытается автоматически привязать потоки, однако в случае, если программа загрузки MPI уже привязала некоторые потоки или число логических ядер не совпадает с общим числом потоков, эта функция отключается. В этом случае привязку можно включить с помощью опции –pin on, если она не осуществляется программой запуска MPI или системой пакетной обработки.

SMT/ГИПЕРПОТОЧНОСТЬ

Использование всех логических ядер в системе (SMT, или гиперпоточность) обычно обеспечивает небольшой прирост производительности.

GPU BOOST

Графические ядра GROMACS используют не весь потенциал GPU. Поэтому мы рекомендуем самостоятельно повысить тактовую частоту GPU до возможного максимума. Начиная с версии GROMACS 5.1, это выполняется автоматически с помощью исполняемого файла gmx, если параметры разгона имеют значение UNRESTRICTED. В таком случае вы увидите сообщение: «Изменение тактовой частоты GPU для Tesla K80 до (2505,875)»

Если параметры разгона имеют значение RESTRICTED, GROMACS выдает предупреждение:

«Невозможно изменить тактовую частоту GPU до оптимального значения из-за недостаточных полномочий». Текущие значения - (2505,562). Максимальные значения - (2505,875) Используйте sudo nvidia-smi -acp UNRESTRICTED или свяжитесь с администратором, чтобы изменить параметры разгона карты.

Вы можете воспользоваться технологией

$ sudo nvidia-smi -acp UNRESTRICTED

чтобы изменить параметры разгона на UNRESTRICTED.

Если ваша сборка GROMACS не содержит GDK, вы получите следующее предупреждение:

ПО GROMACS было сконфигурировано без поддержки NVML, поэтому не может использовать повышение тактовой частоты
GPU Tesla K80 для повышения производительности.
Перекомпилируйте программу с библиотекой NVML (совместимой с используемым драйвером) или установите тактовую частоту вручную.

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

$ nvidia-smi -ac 2505,875       # это максимальная частота для GPU K80

Дополнительную информацию о повышении тактовой частоты GPU читайте в разделе  Повышение производительности при помощи GPU Boost и Autoboost для Tesla K80.

ОБНОВЛЕНИЯ СПИСКА СОСЕДЕЙ

При использовании схемы Верле (которая необходима для ускорения на GPU) интервал обновления списка соседей выбирается произвольно. Если поиск списка соседей занимает много времени, то интервал обновления для списка соседей можно увеличить. Время поиска списка соседей указывается в md.log (смотрите Скрипт 2 «Учет времени поиска списка соседей в md.log»). Необходимое повышение радиуса обрезания списка выполняется атоматически. Поскольку список соседей высчитывается на CPU и больший радиус обрезания соседей приводит к росту вычислений силы, повышение nstlist переносит часть задач с CPU на GPU. Кроме того, для вычисления списка соседей необходима коммуникация между MPI-рангами.

Computing: Num
Nodes
Num
Threads
Call
Count
Wall time
(s)
Giga-Cycles total sum %
[…]
Neighbor search 2 10 6480 32.464 1947.963 1.8
[…]
Total 1782.537 106957.655 100.0

БАЛАНСИРОВКА НАГРУЗКИ

[…]
Force evaluation time GPU/CPU: 4.972 ms/5.821 ms = 0.854
For optimal performance this ratio should be close to 1!
[…]

Скрипт 3 «Результат балансировки нагрузки PME-PP в md.log»

Как описано выше, нагрузку между узлами, обрабатывающими задачи PME и PP, можно регулировать. Балансировка включается по умолчанию, отключить ее можно при помощи параметра –notunepme. Результаты балансровки нагрузки между задачами PP (на GPU) и PME (на CPU) указываются в файле md.log (смотрите Скрипт 3 «Результат балансировки нагрузки PME-PP в md.log»)

ОТДЕЛЬНЫЕ РАНГИ PME

Проблемы с вычислениями методом PME

Breakdown of PME mesh computation
PME redist. X/F 2 10 518322 167.004 10020.730 9.4
PME spread/gather 2 10 518322 429.501 25771.381 24.1
PME 3D-FFT 2 10 518322 123.600 7416.369 6.9
PME 3D-FFT Comm. 2 10 518322 126.829 7610.103 7.1
PME solve Elec 2 10 259161 13.470 808.259 0.8

Скрипт 4 «Учет времени на выполнение задач PME в md.log»

Обработка несвязанных взаимодействий больщого радиуса с PME – сложная задача, требующая выполнения 3D FFT (БПФ). Так как задачи PP и PME не зависят друг от друга, GROMACS поддерживает создание так называемых отдельных PME-узлов (процессов, которые выполняют только задачи PME) с целью сократить нагрузку на сеть. По умолчанию число PME-рангов определяется автоматически, только когда GPU не используются. Это можно настроить с помощью параметра –npme. Если время передачи PME-задачи, отображаемое в md.log высокое, стоит задуматься об использовании отдельных PME-узлов. Обычно это происходит при использовании 3-4 и более вычислительных узлов.

Существует два разных варианта сопоставления рангов MPI с узлами PP и PME, которые интересны для ускоренного запуска GROMACS на GPU:

  • Узлы PME чередуются с так называемыми узлами PP. это повышает нагрузку на сеть, но помогает полностью использовать ресурсы. Параметр командной строки: -ddorder interleave (по умолчанию для ускоренного запуска GPU).
  • Узлы PME группируются близко друг к другу. Это снижает нагрузку на сеть, но оставляет некоторые ресурсы GPU неиспользованными. Параметр командной строки - –ddorder pp_pme (по умолчанию для запуска на CPU).

СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ GPU НЕСКОЛЬКИМИ ПРОЦЕССАМИ
И MULTI PROCESS SERVICE (MPS)

Во многих ситуациях совместное использование GPU несколькими MPI-рангами может повысить производительность.

В случае вычислений на одном узле в версии GROMACS без MPI, это возможно за счет использования -ntmpi и параметров, а также простой настройки -ntmpi на запуск 2 или более MPI-рангов на GPU.

На нескольких узлах с пакетом GROMACS с MPI совместное использование ресурсов GPU возможно на GPU с вычислительной способностью не ниже 3.5 через Multi Process Service (MPS). Для этого необходимо перевести используемые GPU в режим requires to set exclusive process и запустить функция управления MPS на каждом узле (nvidia-cuda-mps-control):

#!/bin/bash
sudo nvidia-smi -c 3
nvidia-cuda-mps-control -decho " -started nvidia-cuda-mps-control on `hostname`"

Скрипт-образец для старта MPS на одном узле

#!/bin/bash
echo quit | nvidia-cuda-mps-control
sudo nvidia-smi -c 0
echo " stopping MPS on `hostname`"

Скрипт-образец для остановки MPS на одном узле

Больше информации о MPS можно найти  здесь.

ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ

Существуют и более производительные настройки декомпозиции домена. Для работы с неоднородными системами их использование может обеспечить прирост производительности. Более подробную информацию можно найти в Руководстве пользователя GROMACS или через список рассылки пользователей GROMACS.

Отказ от ответственности

*GROMACS предлагает множество опций для настройки производительности обработки разных вводных данных на разных системах и архитектурах. Эти инструкции затрагивают аспекты, важные для GPU-ускоренной версии GROMACS.

ПОШАГОВЫЕ ПРИМЕРЫ

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

Чтобы начать работу, скачайте данные и разархивируйте их.

$ wget ftp://ftp.gromacs.org/pub/benchmarks/water_GMX50_bare.tar.gz
$ tar -zxvf water_GMX50_bare.tar.gz

Набор данных содержит данные типа "вода" в папках с названиями 0384, 0768 и 1536. Название папки соответствует числу атомов в тысячах, т.е. папка 0768 содержит 256 тысяч молекул воды и 768 тысяч атомов. Первый шаг - подготовьте данные с помощью grompp.

К примеру, чтобы запустить кейс 1536, используйте следующие команды. Используйте pme.mdp, если вы хотите использовать метод Эвальда (PME). Запуск команды, приведенной ниже, сгенерирует файл topol.tpr, который используется в качестве вводного для GROMACS mdrun.

$ cd water-cut1.0_GMX50_bare/1536
$ gmx grompp -f pme.mdp

Ниже представлено несколько вариаций запуска GROMACS с/без GPU на 1 или 2-х узлах. Представлена выборка кейсов, запущенных для сбора и оценки результатов в конце этого раздела.

Число используемых в примерах MPI-рангов зависит от числа GPU в системе и числа MPI-рангов на GPU. Во многих случаях запуск более 1 MPI-ранга на GPU помогает повысить производительность. Также это можно сделать, используя MPI-поток при расчетах на одном узле или используя CUDA MPS при расчетах на нескольких узлах. Дополнительную информацию о CUDA MPS можно найти в этом руководстве.

Предлагается использовать от 2 до 6 OMP потоков для каждого ранга при вычислениях на GPU. -ntomp или переменная OMP_NUM_THREADS используются, чтобы задать желаемое число OMP потоков на ранг. Опытным путем вы сможете определить соотношение числа MPI-рангов и числа потоков на ранг, которое обеспечит максимальную производительность на вашей системе.

В примерах 1, 2 и 4 были использованы 2 графических ускорителя Tesla K80, что равняется 4 GPU (2 карты K80) на узел.

5 примеров запущены на узлах с 2 CPU Haswell

  • всего 32 ядра
  • гиперпоточность отключена

Пример 1. Параметры запуска (ntmpi и ntomp) не указаны, поэтому GROMACS автоматически решит, сколько MPI-рангов на GPU и OMP потоков на ранг запустить.

Запустите задачу на одном узле с 4 GPU и позвольте GROMACS самостоятельно определить параметры запуска (ntmpi, ntomp).

$ GROMACS_BIN_DIR/gmx mdrun -resethway -noconfout -nsteps 4000 -v -pin on -nb gpu

Если у вас есть время, попытайтесь использовать доступные комбинации MPI-рангов на GPU и OMP потоков на ранг, чтобы увидеть, какая комбинация обеспечит лучшую производительность. Доступные варианты зависят от общего числа ядер CPU и числа GPU на узел. К примеру, если ваша система оснащена 4 GPU на узел и 32 ядрами CPU, вы можете испытать предложенные ниже комбинации, чтобы посмотреть, какая из них обеспечит лучшую производительность.

-ntmpi 4 -ntomp 8 # 1 rank per GPU with 8 threads per rank
-ntmpi 8 -ntomp 4 # 2 MPI ranks per GPU with 4 threads per rank
-ntmpi 16 -ntomp 2 # 4 MPI ranks er GPU with 2 threads per rank

Параметры из примеров 2-5 для выбранных вводных данных обеспечивают лучшую производительность.

Пример 2. Запустите задачу на одном узле с 4 GPU, 4 OMP потока на ранг, 8 рангов, 2 MPI-ранга на GPU с MPI-потоком

$ GROMACS_BIN_DIR/gmx mdrun -ntmpi 8 -ntomp 4 -resethway -noconfout -nsteps 4000 -v -pin on -nb gpu

Пример 3. Запустите один узел только с CPU, 1 OMP-поток на ранг, 32 ранга с использованием MPI-потока

$ $GROMACS_BIN_DIR/gmx mdrun -ntmpi 32 -ntomp 1 -resethway -noconfout -nsteps 4000 -v -pin on -nb cpu

Пример 4. Запустите на 2-х узлах с 4 GPU на узел 2 OMP-потока на ранг, 16 рангов на узел, 4 MPI-ранга на GPU, используя CUDA MPS:

$ OMP_NUM_THREADS=2 mpirun -np 32 $GROMACS_BIN_DIR/gmx_mpi mdrun -resethway -noconfout -nb gpu -nsteps 8000 -v -pin on

Пример 5. Запустите на 2 узлах только с CPU 1 OMP-поток на ранг, 32 ранга на узел

$ OMP_NUM_THREADS=1 mpirun -np 64 $GROMACS_BIN_DIR/gmx_mpi mdrun -resethway -noconfout -nb cpu -nsteps 8000 -v -pin on

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

В этом разделе представлена производительность нескольких GPU в одном узле. Кроме того, тест показывает производительность одного, двух и четырех узлов с использованием двух карт Tesla P100 для каждого узла. Каждая карта P100 имеет один GPU с архитектурой Pascal. Все запуски были выполнены с использованием разных командных строек, как описано выше, для размеров данных 0768, 1536 и 3072.

Производительность на одном узле, 768 тысяч атомов
Производительность на одном узле, 1,5 миллиона атомов
Производительность на одном узле, 3 миллиона атомов
Масштабируемая производительность, 3 миллиона атомов

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

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

PC

Parameter
Specs

CPU Architecture

x86

System Memory

16-32GB

CPUs

8 Cores, 8 GHz
10 Cores, 2.2 GHz
16 Cores, 2GHz

GPU Model

NVIDIA TITAN X

GPUs

1-2 TITAN X

Servers

Parameter
Specs

CPU Architecture

x86

System Memory

32GB

CPUs/Nodes

2 (16+ cores, 2+ GHz)

GPU Model

NVIDIA® Tesla® P100

GPU/Node

1-2 Tesla GPU cards

Interconnect

InfiniBand

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

Software stack

Parameter
Version

OS

Linux

GPU Driver

352.79 or newer

CUDA Toolkit

7.5 or newer

Compiler

GCC 5.0

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