BigDFT c ускорением GPU

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

BigDFT

BigDFT – массово-параллельный электронный структурный код, основанный на теории функционала плотности (DFT). Он использует основное вейвлет-множество с возможностью применять метод линейного масштабирования. Вейвлеты образуют в вещественном пространстве основное множество, распределенное по адаптивной сетке (два уровня разрешения в нашей реализации). Псевдопотенциалы GTH и HGH используются для удаления электронов.

BigDFT доступен в ABINIT-версии v5.5 и выше, также можно загрузить автономную версию с веб-сайта. Решатель Пуассона основан на формализме функции Грина, периодических системах, поверхностях и изолированных системах. Возможно моделирование с явными граничными условиями.
Решатель Пуассона можно скачать, использовать самостоятельно и интегрировать в ABINIT, Octopus, and CP2K. Код, тьюториалы и документация доступна на BigDFT.

Установка

Вы можете скачать и установить BigDFT на аппаратной платформе или запустить контейнер с приложением из NVIDIA GPU Cloud.

Установка приложений в среде высокопроизводительных вычислений (HPC) может представлять собой трудную задачу. Контейнеры позволяют запускать приложение без его установки в системе. Это упрощает развертывание самой последней версии приложения и обеспечивает оптимизацию производительности.

Процесс запуска BigDFT из контейнера очень прост и займет всего несколько минут.

Запуск задач

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

  • Запустите BigDFT напрямую через команду запуска nvidia-docker.
  • Запустите BigDFT в интерактивном режиме в контейнере.
  • Запустите из веб-браузера с помощью Jupyter Notebook
  • Запустите с помощью /OpenMP/GPU

1. Запуск BigDFT из командной строки

Чтобы запустить контейнер BigDFT из интерфейса командной строки (CLI), потребуются входные файлы в вашем текущем каталоге в хост-системе. Затем вы можете использовать следующую команду, которая запустит BigDFT и сделают текующий рабочий каталог доступным в контейнере как “/results”:

nvidia-docker run -it --rm -v $(pwd):/results -w /results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bigdft

2. Запуск BigDFT в интерактивном режиме

В этом примере мы запустим BigDFT в интерактивном режиме и воспроизведем включенный в контейнер тест FeHyb.

Чтобы запустить контейнер MILC в интерактивном режиме, выполните следующую команду, которая запускает контейнер, а также монтирует ваш текущий каталог в /results, чтобы он был доступен внутри контейнера. (Смотрите параметры -v команды, приведенной ниже, чтобы настроить отображение локального каталога данных в один внутренний контейнер.)

команда запуска nvidia-docker --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bash

После запуска контейнера, вы перейдете в /directory. Теперь вы можете перейти на /docker/FeHyb/GPU, где вы найдете входные файлы (input.yaml, posinp.xyz, and psppar.Fe), и запустить тест.

cd /docker/FeHyb/GPU

bigdft

Результат вычисления можно найти в файле log.yaml file и таймингах time.yaml Эти файлы могут быть скопированы в /results, чтобы вы могли сохранить их в текущей папке в хост-системе.

3. Запустите с Jupyter Notebook

Команда по умолчанию запускает сервер Jupyter внутри контейнера и позволяет запускать интерактивные сеансы с помощью BigDFT. Доступ к серверу можно получить из любого веб-браузера. Для выполнения просто перенаправьте порт 8888 из контейнера на любой порт в хост-системе. Если вам нужен доступ с другого компьютера, порт должен быть открыт для соединений.

команда запуска nvidia-docker -p 8888:8888 -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

В этом примере мы затем можем запустить браузер и получить доступ к серверу из веб-браузера с адресом localhost:8888

“bigdft.” – пароль запускаемого сервера Jupyter. Пример блокнота доступен на /ContainerXP/H2O-Polarizability.ipynb

Подробнее документацию можно посмотреть здесь.

4. Запуск с MPI/OpenMPI/GPU

MVAPICH-GDR 2.3 установлен в контейнере и возможен запуск с mpirun -np процессами.

OpenMP активируется по умолчанию и использует все ядра из хост-системы. Чтобы воспользоваться интерфейсом передачи сообщений (MPI), необходимо установить более низкие значения (например, ncores/nprocesses) для OMP_NUM_THREADS.

Прямой запуск с 4-процессорным и 8-потоковым OpenMP на 32-ядерном узле:

nvidia-docker run -it --rm -e OMP_NUM_THREADS=8 -v

$(pwd):/results -w /results nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

mpirun -np 4 bigdft

Если на узле несколько GPU, каждый MPI процесс попытается задействовать свободный GPU; в случае если MPI процессов больше, чем GPU, то несколько процессов будет задействовать одинаковый GPU по кругу (рекомендуется использовать опцию -ipc = host для запуска контейнеров) Так как для вычислений PBE0 на NVIDIA® CUDA™-aware нужен MPI, возможно будет необходима настройка MV2_USE_CUDA to 1. Он выключен по умолчанию, так как может замедлять запуск не оснащенных GPU систем.

Для запуска multi-GPU с 4 процессами с использованием 32 ядер:

nvidia-docker run -it --rm --ipc=host -e MV2_USE_CUDA=1 -e OMP_NUM_THREADS=8 -v

$(pwd):/results -w /results nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

mpirun -np 4 bigdft

Тестовые сценарии

Контейнер BigDFT содержит входные файлы, чтобы тестировать поведение программного обеспечения с ускорением GPU или только с CPU

nvidia-docker run -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bash

После запуска контейнера вы перейдете в каталог. Далее вы можете перейти в /docker/FeHyb/GPU, где вы найдете входные файлы (input.yaml, posinp.xyz, and psppar.Fe), и запустить тест:

cd /ContainerXP/FeHyb/GPU

bigdft

cp log.yaml /results/log_gpu.yaml

cp time.yaml /results/time_gpu.yaml

cd /ContainerXP/FeHyb/NOGPU

bigdft

cp log.yaml /results/log_cpu.yaml

cp time.yaml /results/time_cpu.yaml

Сравнение двух типов запуска должно показать значительное ускорение GPU-версии.

Для более полного использования ресурсов хост-системы можно провести другие тесты. Больше тестов доступно в папке/docker/H2O_32.

Чтобы проверить, верен ли результат, файл log.yaml сравните с файлами log.ref.yaml, которые доступны в варианте CPU в тестовых папках. Чтобы выполнить простое сравнение, запустите:

python /usr/local/bigdft/lib/python2.7/site-packages/fldiff_yaml.py -d log.yaml -r

./log.ref.yaml -t ./tols-BigDFT.yaml

Правильный результат:

Результат проверки: успешно

РЕКОМЕНДОВАННЫЕ СИСТЕМНЫЕ КОНФИГУРАЦИИ

Контейнер с приложением VMD оптимизирован и протестирован для обеспечения надежной производительности на системах, оснащенных GPU NVIDIA®Pascal™ и NVIDIA Volta, с CUDA® 9 или более новой версии. VMD и все контейнеры HPC-приложений, доступные в репозитарии NVIDIA GPU Cloud, могут быть запущены на следующих системах:

  • Рабочая станция: оснащенная GPU NVIDIA Titan V и CPU x86
  • Системы NVIDIA® DGX™
  • HPC кластер, оснащенный GPU поколения Pascal/Volta, CUDA 9, CPU x86
  • Облачная платформа (AWS, Google Cloud Platform и другие)

ПОЛУЧИТЕ ДОСТУП К КОНТЕЙНЕРАМ GPU-УСКОРЕННЫХ ПРИЛОЖЕНИЙ С
 NVIDIA GPU Cloud.