Abinit
👉Вернуться к списку инструкций
Abinit позволяет находить полную энергию, плотность заряда и электронную структуру систем, состоящих из электронов и ядер (молекул и периодических твердых тел), в рамках теории функционала плотности (DFT), используя псевдопотенциалы (или атомные данные PAW) и плосковолновую основу. Abinit также оптимизирует геометрию в соответствии с силами и напряжениями DFT, или выполняет моделирование молекулярной динамики с использованием этих сил, или генерирует фононы, рожденные эффективные заряды и тензоры диэлектриков на основе теории возмущений функционала плотности и многих других свойств. Возбужденные состояния и спектры могут быть вычислены в рамках теории возмущений многих тел (приближение GW и уравнение Бете-Солпитера). Для сильно коррелированных материалов доступны DFT +U и динамическая теория среднего поля.
Официальный сайт: https://www.abinit.org/
Доступные версии на суперкомпьютере НИУ ВШЭ
module load abinit/10.4.3 # Версия с поддержкой GPU
module load abinit/9.10.3 # Прошлая версия для GPU
module load abinit/10.2.5-cpu # Стабильная версия CPU-only
Обновление версий производится по запросу пользователей.
Тестовые исходные данные расположены на суперкомпьютере в каталоге /opt/software/abinit/tests.
Пользователи: Международная лаборатория суперкомпьютерного атомистического моделирования и многомасштабного анализа, любые подразделения НИУ ВШЭ.
Выполнение расчетов на суперкомпьютере
Для выполнения расчёта на суперкомпьютере необходимо подготовить скрипт-файл для очереди задач с запросом требуемых ресурсов (см. инструкцию по запуску задач на суперкомпьютере).
Запуск на GPU
Вычисления с использованием GPU поддерживаются в версии 10.4.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/10.4.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 производятся в версии 10.2.5-cpu.
В качестве входных данных будем использовать тот же файл.
Самый простой способ включить параллельные вычисления в 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)
# Планируем запустить задачу на 12 ядрах CPU, поэтому npband * npfft = 12.
Эти строки заменяются для ручного указания распределения вычислительных ресурсов. Это не единственный верный вариант, комбинации значений выделяемых ядер. Для выявления эффективного распределния ресурсов можно запустить задачу при различных парах (npband, npfft) и сравнить время вычислений. Более подробную информацию можно найти на сайте: 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=12 # Число MPI процессов = число ядер CPU
#SBATCH --mail-user=ваша_почта # Укажите ваш email для отправки уведомлений
#SBATCH --mail-type=END,FAIL # События, требующие уведомления
module load abinit/10.2.5-cpu # Загрузка модуля 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 и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.