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

CP2K

👉Вернуться к списку инструкций

CP2K - это открытый программный пакет для квантовой химии и физики твердого тела, предназначенный для выполнения атомистического моделирования твердотельных, жидких, молекулярных, периодических, материальных, кристаллических и биологических систем.

Доступные версии на супекомпьютере НИУ ВШЭ
module load cp2k/v2025.1       # версия 2025 года
module load cp2k/v2023.1       # версия 2023 года без GPU
module load cp2k/v2023.1_cuda  # версия 2023 года с GPU

module load cp2k/2026.1_gpu # версия с поддержкой GPU для очереди Rocky
module load cp2k/2026.1_cpu # версия CPU-only для очереди Rocky

Обновление версий производится по запросу пользователей.
Тестовые исходные данные и sbatch-скрипты расположены на суперкомпьютере в каталоге /opt/el9/hse/software/cp2k/cp2k-2026.1/tests.
Пользователи: Международная лаборатория суперкомпьютерного атомистического моделирования и многомасштабного анализа, любые подразделения НИУ ВШЭ.

Выполнение расчётов на суперкомпьютере

CP2K поддерживает параллелизм как внутри одного узла с использованием нитей, так и на нескольких узлах с использованием MPI. Соответствующие модули автоматически подключаются при использовании модуля CP2K.
Точность вычислений на GPU выбирается с помощью конфигурационного файла запуска. Используются флаги PRECISION_HS, PRECISION_GS, PRECISION_WF, с помощью которых указываются точности для разных типов расчётов: AUTO, FP32, FP64.
Вычисления одинарной точности (FP32) в два раза быстрее, чем в двойной точности (FP64). Если не знаете, что выбрать, укажите AUTO.
Для выполнения расчёта на суперкомпьютере необходимо подготовить скрипт-файл для очереди задач с запросом требуемых ресурсов (см. инструкцию по запуску задач на суперкомпьютере).

Запуск на GPU (рекомендуется)

В данном примере, для расчёта будет выделено 4 CPU и 1 GPU на одном вычислительном узле.

Содержимое файла cp2k-gpu.sbatch:

#!/bin/bash
#SBATCH --job-name=cp2k-gpu-2026      # Название задачи
#SBATCH --time=24:00:00               # Максимальное время выполнения
#SBATCH --nodes 1                  # Все ядра CPU будут выделены на одном узле
#SBATCH --ntasks 1 # Количество MPI процессов
#SBATCH --cpus-per-task=4 # Количество ядер CPU на MPI-процесс
#SBATCH --gpus-per-task=1 # Количество GPU
#SBATCH --partition rocky # Очередь для запуска
#SBATCH --output=cp2k_2026_gpu-%j.out # Лог работы программы
#SBATCH --error=cp2k_2026_gpu-%j.err # Лог ошибок
#SBATCH --mail-user=ваша_почта        # Укажите ваш email для отправки уведомлений (если нужно)
#SBATCH --mail-type=END,FAIL          # События, требующие уведомления

module purge # Очистка загруженных модулей module load cp2k/2026.1_gpu # Загрузка модуля для GPU

# Переменные среды для OpenMP
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export OMP_PROC_BIND=close
export OMP_PLACES=cores
export OMP_STACKSIZE=512M

# Переменные среды для удобства запуска
WORKBASE="/home/rmishenin/cp2k_test_${SLURM_JOB_ID}"
TESTBASE="$CP2K_ROOT/tests/QMMM/QS"
WORKTESTBASE="$WORKBASE/QS"
WORKDIR="$WORKTESTBASE/regtest-gapw"
INPUT="C11H24-qmmmgapwall-gauss-0.inp"

# Копирование файлов примера
mkdir -p "$WORKBASE"
cp -r "$TESTBASE" "$WORKBASE/"
cd "$WORKDIR"
mpirun --bind-to none -np $SLURM_NTASKS cp2k.psmp -i "$INPUT" -o C11H24-qmmmgapwall-gauss-0-module-test.out

Запуск на CPU

В данном примере, для расчёта будет выделено 4 CPU на одном вычислительном узле.

Содержимое файла cp2k-cpu.sbatch:
#!/bin/bash
#SBATCH --job-name=cp2k-cpu-2026      # Название задачи
#SBATCH --time=24:00:00               # Максимальное время выполнения
#SBATCH --nodes 1                  # Все ядра CPU будут выделены на одном узле
#SBATCH --ntasks 1 # Количество MPI процессов
#SBATCH --cpus-per-task=4 # Количество ядер CPU на MPI-процесс
#SBATCH --partition rocky # Очередь для запуска
#SBATCH --output=cp2k_2026_cpu-%j.out # Лог работы программы
#SBATCH --error=cp2k_2026_cpu-%j.err # Лог ошибок
#SBATCH --mail-user=ваша_почта        # Укажите ваш email для отправки уведомлений (если нужно)
#SBATCH --mail-type=END,FAIL          # События, требующие уведомления

module purge # Очистка загруженных модулей module load cp2k/2026.1_cpu # Загрузка модуля для GPU

# Переменные среды для OpenMP
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export OMP_PROC_BIND=close
export OMP_PLACES=cores
export OMP_STACKSIZE=512M

# Переменные среды для удобства запуска
WORKBASE="/home/rmishenin/cp2k_test_${SLURM_JOB_ID}"
TESTBASE="$CP2K_ROOT/tests/QMMM/QS"
WORKTESTBASE="$WORKBASE/QS"
WORKDIR="$WORKTESTBASE/regtest-gapw"
INPUT="C11H24-qmmmgapwall-gauss-0.inp"

# Копирование файлов примера
mkdir -p "$WORKBASE"
cp -r "$TESTBASE" "$WORKBASE/"
cd "$WORKDIR"
mpirun --bind-to none -np $SLURM_NTASKS cp2k.psmp -i "$INPUT" -o C11H24-qmmmgapwall-gauss-0-module-test.out

Для постановки задачи в очередь выполните команду sbatch cp2k-cpu.sbatch
Не забудьте скорректировать параметры в скрипте для своих расчетов! 
Посмотреть состояние своих задач можно с помощью команды mj
Сообщения, выводимые в процессе работы CP2K, будут записаны в файл slurm-00000.out (где 00000 - номер задачи в очереди).

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


 

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