How can I use oneAPI for building psi4 installation using CMake? I am trying to build this on my workstation with an intel octa-core processor. I want to use intel’s C/C++ compilers and MKL for psi4 and also link the same with numpy. Has anyone tried this before?
Depends on which oneAPI C/C++ compilers. If you get the Base Toolkit, that’ll provide
icpx. Maybe one person has built psi with these new compilers. The interest is there, but we haven’t devoted much attention to it. If you additionally install the HPC Toolkit, that’ll provide the classic compilers
icpc. No problem at all using these to build Psi4. I’ve done it plenty, and there’s no difference from Intel compilers gotten by other than oneapi means. It even comes with a conda environment for Py, numpy, etc. You can probably install
psi4-dev pkg into there and use the usual
psi4-path-advisor --intel to get a cmake configure line. Or use https://github.com/psi4/psi4meta/blob/master/conda-recipes/psi4-dev/src/psi4DepsMKLCache.cmake, the Intel, and the Deps cmake files to build your own line.
I have both the Base and HPC Toolkits installed, and now, I wonder if building psi4 with these compilers would be any different from the versions available on a conda environment. But, there seems to be some incentive with compilers(icx/icpx/dpcpp) provided by intel. (This is the nearest to a benchmark test that I could find online that compares different compilers: A Performance-Based Comparison of C/C++ Compilers | Colfax Research).
Just to get clarification on the last thing you’ve suggested, do you mean to use the following code in a .cmake with paths set to libraries in my oneAPI locations for the respective libraries?
set(LAPACK_LIBRARIES "/opt/intel/oneapi/lib/libmkl_rt@SHLIB_EXT@" CACHE STRING "") set(LAPACK_INCLUDE_DIRS "/opt/intel/oneapi/include" CACHE STRING "") set(OpenMP_LIBRARY_DIRS "/opt/intel/oneapi/lib" CACHE STRING "")
Also, what be the best to way to make sure the installation has good threaded BLAS/LAPACK libraries ? Is there a way to check for that?