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 command builds static libraries for processors that use the IA-32 architecture. The builder uses the interface, threading, and computational libraries.

libintel64

The command builds static libraries for processors that use the Intel® 64 architecture. The builder uses the interface, threading, and computational libraries.

soia32

The command builds dynamic libraries for processors that use the IA-32 architecture. The builder uses the Single Dynamic Library (SDL) libmkl_rt.so.

sointel64

The command builds dynamic libraries for processors that use the Intel® 64 architecture. The builder uses SDL libmkl_rt.so.

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.

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 user's error handler. 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 Reference Manual on how 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 the above parameters are optional.

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 for processors using the IA-32 architecture. The command takes the list of functions from the user_list file and uses the native Intel MKL error handler xerbla.

An example of a more complex case follows:

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

In this case, the command creates the mkl_small.so library for processors using the IA-32 architecture. The command takes the list of functions from my_func_list.txt file and uses the user's error handler my_xerbla.o.

The process is similar for processors using the Intel® 64 architecture.

Optimization Notice

Intel® compilers, associated libraries and associated development tools may include or utilize options that optimize for instruction sets that are available in both Intel® and non-Intel microprocessors (for example SIMD instruction sets), but do not optimize equally for non-Intel microprocessors. In addition, certain compiler options for Intel compilers, including some that are not specific to Intel micro-architecture, are reserved for Intel microprocessors. For a detailed description of Intel compiler options, including the instruction sets and specific microprocessors they implicate, please refer to the "Intel® Compiler User and Reference Guides" under "Compiler Options". Many library routines that are part of Intel® compiler products are more highly optimized for Intel microprocessors than for other microprocessors. While the compilers and libraries in Intel® compiler products offer optimizations for both Intel and Intel-compatible microprocessors, depending on the options you select, your code and other factors, you likely will get extra performance on Intel microprocessors.

Intel® compilers, associated libraries and associated development tools 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 Intel® Streaming SIMD Extensions 2 (Intel® SSE2), Intel® Streaming SIMD Extensions 3 (Intel® SSE3), and Supplemental Streaming SIMD Extensions 3 (Intel® 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.

While Intel believes our compilers and libraries are excellent choices to assist in obtaining the best performance on Intel® and non-Intel microprocessors, Intel recommends that you evaluate other compilers and libraries to determine which best meet your requirements. We hope to win your business by striving to offer the best performance of any compiler or library; please let us know if you find we do not.

Notice revision #20110307

See Also


Submit feedback on this help topic