Developer Guide

Contents

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® MKL
provides a set of prebuilt BLACS libraries that support certain MPI libraries, but this, however, does not enable use of
Intel® MKL
with other MPI libraries. To fill this gap,
Intel® MKL
also includes the MKL MPI wrapper, which provides an MPI-independent ABI to
Intel® MKL
. The adaptor is provided as source code. To use
Intel® MKL
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
nmake
command.
For example: the command
n
make libintel64
builds a static custom BLACS library
mkl_blacs_custom_lp64.
lib
using the
default MPI compiler on your system
. 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
n
make help

Using a Custom BLACS Library

In the case of static linking, 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
mkl_blacs_intelmpi_lp64.
lib
static
library, pass
mkl_blacs_custom_lp64.
lib
.
To use a dynamic custom BLACS library:
  1. Link your application the same way as when you use the prebuilt BLACS library.
  2. Call the
    mkl_set_mpi
    support function or set the
    MKL_BLACS_MPI
    environment variable to one of the following values:
    • CUSTOM
      to load a custom library with the default name
      mkl_blacs_custom_lp64.dll
      or
      mkl_blacs_custom_ilp64.dll
      , depending on whether the BLACS interface linked against your application is LP64 or ILP64.
    • <dll_name>
      to load the specified BLACS DLL.
      Intel® MKL
      looks for the specified DLL either in the directory with
      Intel® MKL
      dynamic libraries or in the directory with the application executable.
      For a description of the
      mkl_set_mpi
      function, see the
      Intel® MKL
      Developer Reference
      .

Product and Performance Information

1

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