Developer Guide

  • 2021.1
  • 12/04/2020
  • Public Content

Linking with
Cluster Software

Intel® oneAPI Math Kernel Library
ScaLAPACK, Cluster FFT, and Cluster Sparse Solver support MPI implementations identified in the
Intel® oneAPI Math Kernel Library
Release Notes
To link a program that calls ScaLAPACK, Cluster FFT, or Cluster Sparse Solver, you need to know how to link a message-passing interface (MPI) application first.
Use mpi scripts to do this. For example, mpicc or mpif77 are C or FORTRAN 77 scripts, respectively, that use the correct MPI header files. The location of these scripts and the MPI library depends on your MPI implementation. For example, for the default installation of MPICH
are the compiler scripts and
is the MPI library.
Check the documentation that comes with your MPI implementation for implementation-specific details of linking.
To link with ScaLAPACK, Cluster FFT, and/or Cluster Sparse Solver, use the following
general form
<MPI linker script>
<files to link>
-L <MKL path>
[<MKL cluster library>]        \
<BLACS> <MKL core libraries>
where the placeholders stand for paths and libraries as explained in the following table:
<MKL cluster library>
One of libraries for ScaLAPACK or Cluster FFT and appropriate architecture and programming interface (LP64 or ILP64). Available libraries are listed in Appendix C: Directory Structure in Detail. For example, for the LP64 interface, it is
. Cluster Sparse Solver does not require an additional computation library.
The BLACS library corresponding to your architecture, programming interface (LP64 or ILP64), and MPI used. Available BLACS libraries are listed in Appendix C: Directory Structure in Detail.
Specifically, choose
one of
<MKL core libraries>
Processor optimized kernels, threading library, and system library for threading support, linked as described in Listing Libraries on a Link Line.
<MPI linker script>
A linker script that corresponds to the MPI version.
For example, if you are using Intel MPI, want to statically link with ScaLAPACK using the LP64 interface, and have only one MPI process per core (and thus do not use threading), specify the following linker options:
$MKLPATH/libmkl_scalapack_lp64.a $MKLPATH/libmkl_blacs_intelmpi_lp64.a $MKLPATH/libmkl_intel_lp64.a $MKLPATH/libmkl_sequential.a $MKLPATH/libmkl_core.a -static_mpi
-lpthread -lm
Grouping symbols
are required for static linking.
Use the Using the Link-line Advisor to quickly choose the appropriate set of
<MKL cluster Library>
, and
<MKL core libraries>
Optimization Notice
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804
This notice covers the following instruction sets: SSE2, SSE4.2, AVX2, AVX-512.

Product and Performance Information


Performance varies by use, configuration and other factors. Learn more at