Developer Guide for Intel® oneAPI Math Kernel Library for Linux*
Using a Custom Message-Passing Interface
While different message-passing interface (MPI) libraries are compatible at the application programming interface (API) level, they are often incompatible at the application binary interface (ABI) level. Therefore, Intel® oneAPI Math Kernel Library (oneMKL) provides a set of prebuilt BLACS libraries that support certain MPI libraries, but this, however, does not enable use of Intel® oneMKL with other MPI libraries. To fill this gap, Intel® oneMKL also includes the MKL MPI wrapper, which provides an MPI-independent ABI to Intel® oneMKL. The adaptor is provided as source code. To use Intel® oneMKL with an MPI library that is not supported by default, you can use the adapter to build custom static or dynamic BLACS libraries and use them similarly to the prebuilt libraries.
Building a Custom BLACS Library
The MKL MPI wrapper is located in the <mkl directory>/interfaces/mklmpi directory.
To build a custom BLACS library, from the above directory run the appropriate Make command, for example:
make libintel64
builds a static custom BLACS library libmkl_blacs_custom_lp64.a using the MPI compiler from the current shell environment. Look into the <mkl directory>/interfaces/mklmpi/makefile for targets and variables that define how to build the custom library. In particular, you can specify the compiler through the MPICC variable.
For more control over the building process, refer to the documentation available through the command
make help
Using a Custom BLACS Library
Use custom BLACS libraries exactly the same way as you use the prebuilt BLACS libraries, but pass the custom library to the linker. For example, instead of passing the libmkl_blacs_intelmpi_lp64.a library, pass libmkl_blacs_custom_lp64.a.