Модуль MKL не найден при попытке запустить рабочий процесс вставки лития Atomate2 в VASPPython

Программы на Python
Ответить
Anonymous
 Модуль MKL не найден при попытке запустить рабочий процесс вставки лития Atomate2 в VASP

Сообщение Anonymous »

Я запускаю рабочий процесс Atomate2 для вставки лития в мой материал на Bridges2, но VASP вообще не работает. Я использую Atomate0.0.22 в Python3.10, так как в версии 0.0.23 были проблемы с Python3.11 и библиотекой pymatgen.
Я преодолел длинную череду проблем с модулями, но теперь застрял, потому что у меня есть правильный модуль mkl, но он говорит, что mkl «не найден», а VASP вообще не запускается (нет vasprun.xml).
Я относительно новичок к вычислительным рабочим процессам, поэтому я уверен, что где-то допустил ошибку. Некоторые способы устранения неполадок, которые я пробовал, и информация о модулях приведены ниже.
Мой код Python:

Код: Выделить всё

#!/jet/home/PATH
"""
Automated Li insertion workflow for MOFs using Atomate2 v0.0.22.
"""

from pathlib import Path
from pymatgen.core import Structure
from atomate2.vasp.sets.core import RelaxSetGenerator, StaticSetGenerator
from atomate2.vasp.jobs.core import RelaxMaker, StaticMaker
from atomate2.vasp.flows.electrode import ElectrodeInsertionMaker
from jobflow import run_locally

from atomate2.vasp.jobs.base import BaseVaspMaker

# ============================================================
# VASP RUN COMMAND
# ============================================================
BaseVaspMaker.run_vasp_cmd = ["vasp_std"]

# ============================================================
# USER SETTINGS
# ============================================================
STRUCTURES_DIR = Path(".")
ENCUT = 520
EDIFF = 1e-5
KPOINTS_DENSITY = 300

LDAUU = {"Mn": 3.9, "Fe": 5.3, "Co": 3.32, "Ni": 6.2, "Cu": 4.0}
LDAUJ = {el: 0.0 for el in LDAUU}
MAGMOM = {"Mn": 5.0, "Fe": 5.0, "Co": 3.0, "Ni": 2.0, "Cu": 1.0,
"N": 0.6, "C": 0.6, "O": 0.6, "Li": 1.0, "Na": 1.0}

IONS_TO_INSERT = ["Li"]
N_STEPS = 10
INSERTIONS_PER_STEP = 1
# ============================================================
# INPUT SETS
# ============================================================
relax_set = RelaxSetGenerator(
user_incar_settings={
"ENCUT": ENCUT,
"EDIFF": EDIFF,
"ISIF": 3,
"ISPIN": 2,
"LDAU": True,
"LDAUTYPE": 2,
"LDAUU": LDAUU,
"LDAUJ": LDAUJ,
"MAGMOM": MAGMOM,
},
user_kpoints_settings={"grid_density": KPOINTS_DENSITY},
user_potcar_functional="PBE",
)

static_set = StaticSetGenerator(
user_incar_settings={
"ENCUT": ENCUT,
"EDIFF": EDIFF,
"IBRION": -1,
"NSW": 0,
"ISPIN": 2,
"LDAU": True,
"LDAUTYPE": 2,
"LDAUU": LDAUU,
"LDAUJ": LDAUJ,
"MAGMOM": MAGMOM,
},
user_kpoints_settings={"grid_density": KPOINTS_DENSITY},
user_potcar_functional="PBE",
)

# ============================================================
# MAKERS
# ============================================================
relax_maker = RelaxMaker(input_set_generator=relax_set)
static_maker = StaticMaker(input_set_generator=static_set)
# ============================================================
# MAIN WORKFLOW
# ============================================================
def main():
flows = []

cif_files = sorted(STRUCTURES_DIR.glob("*.cif"))
if not cif_files:
print(f"No CIF files found in {STRUCTURES_DIR}.  Exiting.")
return

for cif_file in cif_files:
print(f"Preparing workflow for {cif_file.name}")
try:
structure = Structure.from_file(cif_file)
except Exception as e:
print(f"Failed to read {cif_file}: {e}")
continue

for ion in IONS_TO_INSERT:
insertion_maker = ElectrodeInsertionMaker(
relax_maker=relax_maker,
static_maker=static_maker,
name=f"{ion} insertion: {cif_file.stem}"
)

try:
flow = insertion_maker.make(
structure,
inserted_element=ion,
n_steps=N_STEPS,
insertions_per_step=INSERTIONS_PER_STEP
)
if flow is not None:
flows.append(flow)
else:
print(f"Warning: flow is None for {cif_file.name} ({ion})")
except Exception as e:
print(f"Failed to create workflow for {cif_file.name} ({ion}): {e}")

if not flows:
print("No valid workflows created. Exiting.")
return

print(f"Running {len(flows)} workflows locally...")
run_locally(flows, create_folders=True)
print("Workflows executed. Check job_* folders for outputs.")

# ============================================================
# ENTRY POINT
# ============================================================
if __name__ == "__main__":
main()
Мой сценарий задания:

Код: Выделить всё

#!/bin/bash
#SBATCH -N 1
#SBATCH -n 128
#SBATCH -p RM
#SBATCH -A PROJECT NAME
#SBATCH --job-name=AtomateMOF
#SBATCH -t 48:00:00
#SBATCH --mail-type=ALL
#SBATCH --mail-user=EMAIL
module purge
module load intel-oneapi
module load mkl/2020.4.304
module load VASP/6.4.1-intel

# Diagnostics
module list
which vasp_std
ldd $(which vasp_std) | grep -i mkl
ldd $(which vasp_std) | grep "not found"
echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH"

source ~/atomate2/miniconda3/etc/profile.d/conda.sh
conda activate atomate2
export OMP_NUM_THREADS=1
export PMG_VASP_PSP_DIR=/PATH_TO_POTCARs
export VASP_CMD="srun --mpi=pmi2 vasp_std"

echo "Running Atomate2 workflow..."
export JOBFLOW_JOB_DIR_FORMAT="{job.name}"
python atomatecode.py
Файл ошибки:

vasp_std: ошибка при загрузке общих библиотек: libmkl_intel_lp64.so.1: невозможно открыть файл общего объекта: такого файла или каталога нет

Пути, содержащие отсутствующий файл ошибки:

Код: Выделить всё

/opt/packages/oneapi/v2023.2.0/mkl/2023.2.0/lib/intel64/libmkl_intel_lp64.so
/opt/packages/oneapi/v2023.2.0/mkl/2023.2.0/lib/intel64/libmkl_intel_lp64.so.2
/opt/packages/oneapi/v2023.2.0/intelpython/python3.9/envs/2023.2.0/lib/libmkl_intel_lp64.so
/opt/packages/oneapi/v2023.2.0/intelpython/python3.9/envs/2023.2.0/lib/libmkl_intel_lp64.so.2
/opt/packages/oneapi/v2023.2.0/intelpython/python3.9/lib/libmkl_intel_lp64.so
/opt/packages/oneapi/v2023.2.0/intelpython/python3.9/lib/libmkl_intel_lp64.so
Фрагмент файла Slurm.out:

Код: Выделить всё

FileNotFoundError: [Errno 2] No such file or directory: '/PATH/atomate2/job_2026-01-16-19-08-04-366717-37923/vasprun.xml'
Validation failed: VasprunXMLValidator
2026-01-16 14:08:14,928 INFO relax 0/10 failed with exception:
...
Failed to load vasprun.xml
Проблемы модуля в среде:

Код: Выделить всё

[snakaza@bridges2-login012 atomate2]$ module purge
[snakaza@bridges2-login012 atomate2]$ module load intel/2021.10.0
Lmod Warning:  The "intel" and "intelmpi" module names are being split into more granular modules starting with version 2023.2.0 of Intel OneAPI.  Components
are now available in separate, correspondingly named modules:

intel-compiler (Intel's modern LLVM-based compilers: icx, icpx, ifx, dpcpp)
intel-icc (Intel's classic compilers: icc, icpc, ifort)
intel-mpi (mpicc, mpicxx, mpiexec, mpirun)
intel-advisor (advisor, advixe-*)
intel-debugger (gdb-oneapi)
intel-inspector (inspxe-*)
intel-vtune (amplxe-*, vtune-*)
intel-ippcp-intel64 (libcrypto_*, libippcp)
etc.

A comprehensive "intel-oneapi" module is also provided to load the full suite.

Please update your scripts to load "intel-compiler", "intel-icc", "intel-mpi", and/or other tools under the new module names instead of "intel" and "intelmpi".

While processing the following module(s):
Module fullname  Module Filename
---------------  ---------------
intel/2021.10.0  /opt/modulefiles/production/intel/2021.10.0.lua

[snakaza@bridges2-login012 atomate2]$ module load mkl/2020.4.304
[snakaza@bridges2-login012 atomate2]$ module load intel-mpi/2021.10.0
[snakaza@bridges2-login012 atomate2]$ module load VASP/6.4.1-intel
[snakaza@bridges2-login012 atomate2]$ ldd $(which vasp_std) | grep "not found"
libmkl_intel_lp64.so.1 => not found
libmkl_intel_thread.so.1 => not found
libmkl_core.so.1 => not found
libmkl_scalapack_lp64.so.1 => not found
libmkl_blacs_intelmpi_lp64.so.1 => not found
Выше приведены дополнительные не найденные модули libmkl. Я пробовал изменить загруженный модуль на intel-icc, как он предлагает, но это неизвестно и выдает ошибку. Когда я проверяю список модулей, я получаю:

Код: Выделить всё

[snakaza@bridges2-login012 atomate2]$ module list

Currently Loaded Modules:
1) intel-advisor/2023.2.0       6) intel-compiler/2023.2.1        11) intel-dpct/2023.2.0           16) intel-ipp-intel64/2021.9.0  21) mkl/2020.4.304
2) intel-ccl/2021.10.0          7) intel-dal/2023.2.0             12) intel-dpl/2022.2.0            17) intel-itac/2021.10.0        22) intel-mpi/2021.10.0
3) intel-tbb/2021.10.0          8) intel-debugger/2023.2.0        13) intel-icc/2023.2.1            18) intel-mkl/2023.2.0          23) VASP/6.4.1-intel
4) intel-compiler-rt/2023.2.1   9) intel-dev-utilities/2021.10.0  14) intel-inspector/2023.2.0      19) intel-vtune/2023.2.0
5) intel-oclfpga/2023.2.1      10) intel-dnnl/2023.2.0            15) intel-ippcp-intel64/2021.8.0  20) intel/2021.10.0
Несколько mkl разных лет, но автоматически загружается другой модуль mkl 2023 года (не могу понять откуда), и, возможно, именно это вызывает проблему?

Подробнее здесь: https://stackoverflow.com/questions/798 ... orkflow-on
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»