About the INCLUDE_ML variable used in makefile.include for vasp.6.5.0.

Queries about input and output files, running specific calculations, etc.


Moderators: Global Moderator, Moderator

Post Reply
Message
Author
hszhao.cn@gmail.com
Full Member
Full Member
Posts: 197
Joined: Tue Oct 13, 2020 11:32 pm

About the INCLUDE_ML variable used in makefile.include for vasp.6.5.0.

#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
Full Member
Posts: 197
Joined: Tue Oct 13, 2020 11:32 pm

Re: About the INCLUDE_ML variable used in makefile.include for vasp.6.5.0.

#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

Last edited by hszhao.cn@gmail.com on Sun Dec 29, 2024 5:46 am, edited 1 time in total.

andreas.singraber
Global Moderator
Global Moderator
Posts: 246
Joined: Mon Apr 26, 2021 7:40 am

Re: About the INCLUDE_ML variable used in makefile.include for vasp.6.5.0.

#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


Post Reply