• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

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 "$_"
c /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 --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. Получится следующая визуализация данных из файла:
density_abinit

Полезные ссылки

 


 

Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.