Abinit
👉Вернуться к списку инструкций
Abinit позволяет находить полную энергию, плотность заряда и электронную структуру систем, состоящих из электронов и ядер (молекул и периодических твердых тел), в рамках теории функционала плотности (DFT), используя псевдопотенциалы (или атомные данные PAW) и плосковолновую основу. Abinit также оптимизирует геометрию в соответствии с силами и напряжениями DFT, или выполняет моделирование молекулярной динамики с использованием этих сил, или генерирует фононы, рожденные эффективные заряды и тензоры диэлектриков на основе теории возмущений функционала плотности и многих других свойств. Возбужденные состояния и спектры могут быть вычислены в рамках теории возмущений многих тел (приближение GW и уравнение Бете-Солпитера). Для сильно коррелированных материалов доступны DFT +U и динамическая теория среднего поля.
Официальный сайт: https://www.abinit.org/
Доступные версии на суперкомпьютере НИУ ВШЭ
module load abinit/9.10.3 # Версия с поддержкой GPU
module load abinit/9.8.4 # Версия CPU-only
Тестовые исходные данные расположены на суперкомпьютере в каталоге /opt/software/abinit/tests.
Пользователи: Международная лаборатория суперкомпьютерного атомистического моделирования и многомасштабного анализа, любые подразделения НИУ ВШЭ.
Выполнение расчетов на суперкомпьютере
Для выполнения расчёта на суперкомпьютере необходимо подготовить скрипт-файл для очереди задач с запросом требуемых ресурсов (см. инструкцию по запуску задач на суперкомпьютере).
Запуск на GPU (рекомендуется)
Вычисления с использованием GPU поддерживаются в версии 9.10.3.
Тестовая задача: Исследование распараллеливания k-точек/плоских волн/полос. Эта задача, запущенная на 1 GPU и 1 ядре CPU, ускоряется в 2 раза, по сравнению с запуском на 12 ядрах CPU.
Создайте директорию, в которой будете работать и скопируйте тестовый входной файл:
mkdir abinit_gpu && cd "$_"
cp /opt/software/abinit/tests/tutoparal/Input/tparal_bandpw_01.abi .
Отредактируйте входной файл tparal_bandpw_01.abi:
mcedit tparal_bandpw_01.abi
Добавьте следующие строки в раздел Parallelization:
use_gpu_cuda 1 # Флаг, включающий использование GPU
gpu_linalg_limit 0 # Порог, выше которого операции линейной (и матричной) алгебры выполняются на GPU
Удалите строки, вписанные по умолчанию, а именно:
autoparal 1
max_ncpus 64
Содержимое файла abinit-gpu.sbatch:
#!/bin/bash #SBATCH --job-name=abinit-gpu # Название задачи #SBATCH --time=01:00:00 # Максимальное время выполнения
#SBATCH --error=abinit-%j.err # Файл для вывода ошибок
#SBATCH --output=abinit-%j.log # Файл для вывода результатов
#SBATCH --nodes=1 # Число используемых узлов
#SBATCH --gpus=1 # Число используемых GPU
#SBATCH --constraint="type_a|type_c|type_b" # Предпочтительные типы вычислительных узлов
#SBATCH --mail-user=ваша_почта # Укажите ваш email для отправки уведомлений
#SBATCH --mail-type=END,FAIL # События, требующие уведомления
module load abinit/9.10.3 # Загрузка модуля Abinit, поддерживающего вычисления на GPU
export ABI_PSPDIR=/opt/software/abinit/tests/Psps_for_tests/ # Псевдопотенциалы для запуска тестовых файлов
abinit tparal_bandpw_01.abi # Запуск Abinit с входными данными тестовой задачи
# Рекомендации по запуску:
# Один вычислительный узел типа A/B/C, 1 ядро CPU, 1 GPU.
Для постановки задачи в очередь выполните команду sbatch abinit-gpu.sbatch
Посмотреть состояние своих задач можно с помощью команды mj.
Результат вычислений будет сохранен в файл tparal_bandpw_01.abo. Сообщения, выводимые в процессе работы Abinit, будут записаны в файл abinit-00000.err (где 00000 - номер задачи в очереди). Результат выполнения скрипта будет сохранён в файл abinit-00000.log (где 00000 - номер задачи в очереди).
Запуск на CPU
Если все GPU заняты, Вы можете запускать задачу на CPU. Задача, запущенная без GPU ускорителя, будет выполняться дольше, однако, для коротких и учебных задач быстрый запуск может быть важнее увеличения времени выполнения.
Вычесления на CPU производятся в версии 9.8.4.
В качестве входных данных будем использовать тот же файл.
Самый простой способ включить параллельные вычисления в Abinit это добавить переменную paral_kgb во входной файл.
Создайте директорию, в которой будете работать и скопируйте тестовый входной файл:
mkdir abinit_cpu && cd "$_"
cp /opt/software/abinit/tests/tutoparal/Input/tparal_bandpw_01.abi .
Отредактируйте входной файл tparal_bandpw_01.abi:
mcedit tparal_bandpw_01.abi
Добавьте строку в раздел Parallelization:
paral_kgb 1 # Флыг для запуска параллельных вычислений
и замените строки
autoparal 1
max_ncpus 64
на
npband 6 # Число процессов для зон (bands)
npfft 2 # Число процессов для плоских волн (plane-waves/FFT)
Эти строки заменяются для ручного указания распределения вычислительных ресурсов. Это не единственный верный вариант, комбинации значений выделяемых ядер могут быть следующими: (12x1), (6x12) - для 12 процессов; (64x1), (32x2), (16x4), (8x8), (4x16) - для 64 процессов и т. д.. Для выявления эффективного распределния ресурсов можно запустить задачу при различных пар и сравнить время вычислений. Более подробную информацию можно найти на сайте: https://docs.abinit.org/tutorial/paral_bandpw/
Содержимое файла abinit-cpu.sbatch:
#!/bin/bash #SBATCH --job-name=abinit-cpu # Название задачи #SBATCH --time=01:00:00 # Максимальное время выполнения
#SBATCH --error=abinit-%j.err # Файл для вывода ошибок
#SBATCH --output=abinit-%j.log # Файл для вывода результатов
#SBATCH --nodes=1 # Число используемых узлов
#SBATCH --ntasks=32 # Число MPI процессов = число ядер CPU
#SBATCH --mail-user=ваша_почта # Укажите ваш email для отправки уведомлений
#SBATCH --mail-type=END,FAIL # События, требующие уведомления
module load abinit/9.8.4 # Загрузка модуля abinit CPU-only
export ABI_PSPDIR=/opt/software/abinit/tests/Psps_for_tests/ # Псевдопотенциалы для запуска тестовых файлов
abinit tparal_bandpw_01.abi # Запуск Abinit с входными данными тестовой задачи
# Рекомендации по запуску: один вычислительный узел, 8-12 ядер CPU.
Для постановки задачи в очередь выполните команду sbatch abinit-cpu.sbatch
Посмотреть состояние своих задач можно с помощью команды mj.
Результат вычислений будет сохранен в файл tparal_bandpw_01.abo. Сообщения, выводимые в процессе работы Abinit, будут записаны в файл abinit-00000.err (где 00000 - номер задачи в очереди). Результат выполнения скрипта будет сохранён в файл abinit-00000.log (где 00000 - номер задачи в очереди).
Здесь представлен пример запуска параллельной задачи на суперкомьютере. Более подробную информацию можно найти на сайте: https://docs.abinit.org/tutorial/
Визуализация результатов
Для визуализации результатов вычислений программой Abinit есть пакет AbiPy. Инструкцию по установке можно найти в репозитории, инструкцию по использованию в документации. Также есть пример работы с этим пакетом в jupyter notebook.
При визуализации плотности (density) могут возникнуть проблемы, как их решить написано далее.
Результаты вычислений, связанные с плотностью будут в файле с суффиксом DEN. Для работы с данными из файла нужно расширение этого файла .nc. Для этого в консоли на кластере вызовите утилиту cut3d
cut3d
Вас попросят ввести имя файла, введите название найла с суффиксом DEN. В случае примера это будет файл tparal_bandpw_01o_DEN.
Далее нужно выбрать одну из опций, которой Вы желаете воспользоваться. Нам нужно выбрать 15
Далее введите имя выходного файла с расширением .nc. Для примера введем tparal_bandpw_01o_DEN.nc. Теперь файл tparal_bandpw_01o_DEN.nc есть в Вашей текущей директории.
Теперь откроем JupyterLab для исследования результатов при помощи пакета AbiPy. Выше была ссылка на пример работы в jupyter notebook, где можно подробнее изучить работу с этим пакетом. Для дальнейшей визуализайии структуры элементов на необходимо получить файл расширением .xsf. Для этого воспользуемся функцией из библиотеки AbiPy:
from abipy import abilab
from abipy.iotools.xsf import xsf_write_structure_and_data_to_path
abilab.enable_notebook() # Это строка сообщает AbiPy, что работа идет внутри jupyter notebook
with abilab.abiopen("tparal_bandpw_01o_DEN.nc") as denfile:
density = denfile.density
xsf_write_structure_and_data_to_path('density.xsf', density.structure, density.datar)
Скопируйте полученный файл density.xsf себе на локальную машину. Чтобы визуализировать молекулы или сложные структуры необходимо установить пакет VESTA. Откройте в нем файл расширением .xsf. Получится следующая визуализация данных из файла:
Полезные ссылки
- Официальный сайт Abinit
- Учебные материалы
- Список переменных Abinit
- Инструкция по работе с VESTA:
- Инструкция по работе с системой HPC TaskMaster
Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.