INTEL MKL: undefined symbol

Hi @Rui_Feng,
MKL does not cost anything for private/academic use but it is not open source.

  • You can download it here: https://www.intel.com/content/www/us/en/develop/documentation/get-started-with-mkl-for-dpcpp/top.html
  • The installer is just a bash script with GUI so you need to make it executable befro running.
  • The OneAPI thing is much bigger than what you actually need. So, you can select before install what you want (which is basically the IntelMKL) and deselect the rest.
  • After installing you need to set the environment variables as it is usually installed under /opt.
    This can be done by something like source /opt/intel/oneapi/setvars.sh intel64. You can put it in bashrc/zshrc such that you don’t need to do that every time.
  • To configure OGS with MKL, you can do something like cmake -DMKL_DIR="/opt/intel/oneapi/mkl/2021.4.0" -DOGS_USE_MKL="ON" -DCMAKE_BUILD_TYPE="Release" -G Ninja .. (replace MKL_DIR by the actual MKL_DIR and ... by the OGS source dir.
  • If you did not do the source command before, you can compile OGS directly, otherwise you need to deselect MKL for BLAS in order to not run into problems as state above. This can be done by ccmake .., then you can toggle into advanced mode by typing t. There you can delete the strings for all BLAS related variables. After that you can re-run configure by typing c once or twice until it is possible to type g for generating. After compilation Pardiso should work as Linear solver.
1 Like