Queries about input and output files, running specific calculations, etc.
Moderators: Global Moderator, Moderator
-
hszhao.cn@gmail.com
- Full Member
- Posts: 197
- Joined: Tue Oct 13, 2020 11:32 pm
#1
Post
by hszhao.cn@gmail.com » Sun Dec 22, 2024 5:47 am
Hi there,
See below:
Code: Select all
werner@x13dai-t:~/Public/hpc/vasp/src/vasp.6.5.0$ ug -r INCLUDE_ML arch/
arch/makefile.include.gnu_ompi_aocl:#INCLUDE_ML = -I${AMDBLIS_ROOT}/include/blis -I${AMDLIBFLAME_ROOT}/include
arch/makefile.include.aocc_ompi_aocl:#INCLUDE_ML = -I${AMDBLIS_ROOT}/include/blis -I${AMDLIBFLAME_ROOT}/include
arch/makefile.include.nvhpc_ompi_mkl_omp:#INCLUDE_ML =
arch/makefile.include.oneapi:#INCLUDE_ML =
arch/makefile.include.nvhpc:#INCLUDE_ML =
arch/makefile.include.intel:#INCLUDE_ML =
arch/makefile.include.oneapi_omp_off:#INCLUDE_ML =
arch/makefile.include.nec_aurora:#INCLUDE_ML = -I$(NLC_ROOT)/include
arch/makefile.include.oneapi_omp:#INCLUDE_ML =
arch/makefile.include.nvhpc_ompi_mkl_omp_acc:#INCLUDE_ML =
arch/makefile.include.intel_ompi_mkl_omp:#INCLUDE_ML =
arch/makefile.include.nvhpc_omp:#INCLUDE_ML =
arch/makefile.include.gnu_omp:#INCLUDE_ML = -I$(OPENBLAS_ROOT)/include
arch/makefile.include.aocc_ompi_aocl_omp:#INCLUDE_ML = -I${AMDBLIS_ROOT}/include/blis -I${AMDLIBFLAME_ROOT}/include
arch/makefile.include.nvhpc_omp_acc:#INCLUDE_ML =
arch/makefile.include.gnu_ompi_mkl_omp:#INCLUDE_ML =
arch/makefile.include.nvhpc_acc:#INCLUDE_ML =
arch/makefile.include.gnu_ompi_aocl_omp:#INCLUDE_ML = -I${AMDBLIS_ROOT}/include/blis -I${AMDLIBFLAME_ROOT}/include
arch/makefile.include.gnu:#INCLUDE_ML = -I$(OPENBLAS_ROOT)/include
arch/makefile.include.intel_omp:#INCLUDE_ML =
Why does this variable have an empty value in some of the above files?
Regards,
Zhao
-
hszhao.cn@gmail.com
- Full Member
- Posts: 197
- Joined: Tue Oct 13, 2020 11:32 pm
#2
Post
by hszhao.cn@gmail.com » Sun Dec 29, 2024 5:45 am
After a second thought, looking at the patterns in these makefile includes, I can explain why the INCLUDE_ML variable is empty in some cases:
1. The INCLUDE_ML variable appears to be related to the inclusion of specific math library headers:
- For AMD builds (aocl): Points to BLIS and LibFLAME headers
- For GNU with OpenBLAS: Points to OpenBLAS headers
- For NEC Aurora: Points to NLC headers
2. The variable is empty (#INCLUDE_ML =) in cases where:
- Intel/OneAPI builds are used (they use MKL which typically doesn't require explicit include paths)
- NVIDIA HPC SDK builds (nvhpc) are used (likely using their built-in math libraries)
The empty value makes sense in these cases because:
- These builds are using math libraries that are either:
- Integrated into the compiler suite itself
- Accessible through default include paths
- Handled through different mechanisms (like linking flags)
So the empty value isn't an oversight - it's intentional based on the specific build configuration and how each compiler/platform handles its math library dependencies.
Regards,
Zhao
-
andreas.singraber
- Global Moderator
- Posts: 246
- Joined: Mon Apr 26, 2021 7:40 am
#3
Post
by andreas.singraber » Wed Jan 08, 2025 10:27 am
Hello Zhao!
Sorry for the late reply! Your assessment of the specific INCLUDE_ML contents is correct. For some compiler/library combinations additional paths are required and hence the field is sometimes empty and sometimes pre-filled with example paths.
Please note that the whole block
Code: Select all
# For machine learning library vaspml (experimental)
#CPP_OPTIONS += -Dlibvaspml
...
...
#INCLUDE_ML =
is only used for compiling the experimental C++ machine learning library in src/vaspml which is not yet enabled by default. In the future this will allow to compile an additional library libvaspml which, if linked to LAMMPS, allows to run VASP machine learning force fields directly from LAMMPS. In principle this is already possible in VASP.6.5.0, however, it is not well-tested and hence was not yet advertised. Instructions on how to preview this feature will follow soon (and I will make a note of it in this topic as well). Anyway, for now and for normal VASP usage it is neither required nor recommended to enable this section in the makefile.include templates.
All the best,
Andreas Singraber