Using the Custom Shared Object Builder

To build a custom shared object, use the following command:

make target [<options>]

The following table lists possible values of target and explains what the command does for each value:

Value

Comment

libia32

The builder uses static Intel MKL interface, threading, and core libraries to build a custom shared object for the IA-32 architecture.

libintel64

The builder uses static Intel MKL interface, threading, and core libraries to build a custom shared object for the Intel® 64 architecture.

soia32

The builder uses the single dynamic library libmkl_rt.so to build a custom shared object for the IA-32 architecture.

sointel64

The builder uses the single dynamic library libmkl_rt.so to build a custom shared object for the Intel® 64 architecture.

help

The command prints Help on the custom shared object builder

The <options> placeholder stands for the list of parameters that define macros to be used by the makefile. The following table describes these parameters:

Parameter [Values]

Description

interface = {lp64|ilp64}

Defines whether to use LP64 or ILP64 programming interfacefor the Intel 64architecture.The default value is lp64.

threading = {parallel|sequential}

Defines whether to use the Intel MKL in the threaded or sequential mode. The default value is parallel.

cluster = {yes|no}

(For libintel64 only) Specifies whether Intel MKL cluster components (BLACS, ScaLAPACK and/or CDFT) are needed to build the custom shared object. The default value is no.

blacs_mpi = {intelmpi|mpich2|msmpi}

Specifies the pre-compiled Intel MKL BLACS library to use. Ignored if 'cluster=no'. The default value is intelmpi.

blacs_name = <lib name>

Specifies the name (without extension) of a custom Intel MKL BLACS library to use. Ignored if 'cluster=no'. 'blacs_mpi' is ignored if 'blacs_name' was explicitly specified. The default value is mkl_blacs_<blacs_mpi>_<interface>.

mpi = <lib name>

Specifies the name (without extension) of the MPI library used to build the custom DLL. Ignored if 'cluster=no'. The default value is impi.

export = <file name>

Specifies the full name of the file that contains the list of entry-point functions to be included in the shared object. The default name is user_example_list (no extension).

name = <so name>

Specifies the name of the library to be created. By default, the names of the created library is mkl_custom.so.

xerbla = <error handler>

Specifies the name of the object file <user_xerbla>.o that contains the error handler of the user. The makefile adds this error handler to the library for use instead of the default Intel MKL error handler xerbla. If you omit this parameter, the native Intel MKL xerbla is used. See the description of the xerbla function in the Intel MKL Developer Reference to develop your own error handler.

MKLROOT = <mkl directory>

Specifies the location of Intel MKL libraries used to build the custom shared object. By default, the builder uses the Intel MKL installation directory.

All of the above parameters are optional. However, you must make the system and c-runtime (crt) libraries and link.exe available by setting the PATH and LIB environment variables appropriately. You can do this in the following ways:

  • Manually
  • If you are using the Intel compiler, use the compilervars.sh script with the appropriate 32-bit (x86) or 64-bit (x64 or amd-64) architecture flag.

In the simplest case, the command line is:

make ia32

and the missing options have default values. This command creates the  mkl_custom.so library . The command takes the list of functions from the user_list file and uses the native Intel MKL error handler xerbla.

Here is an example of a more complex case:

make intel64 export=my_func_list.txt name=mkl_small xerbla=my_xerbla.o

In this case, the command creates the mkl_small.so library. The command takes the list of functions from my_func_list.txt file and uses the error handler of the user my_xerbla.o.

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

For more complete information about compiler optimizations, see our Optimization Notice.
Select sticky button color: 
Orange (only for download buttons)