Using the Custom
Shared Object Builder
Shared Object
BuilderTo 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® oneAPI Math Kernel Library shared object for the IA-32 architecture.
|
libintel64 | The builder uses static
Intel® oneAPI Math Kernel Library 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
placeholder stands for the list of parameters that define macros to be used by the makefile. The following table describes these parameters:
<options>
Parameter [Values]
| Description
|
---|---|
interface
= {lp64|ilp64} | Defines
whether to use LP64 or ILP64 programming interfacefor the Intel 64 architecture. The default value is
lp64 .
|
threading = {parallel|sequential} | Defines whether to use the
Intel® oneAPI Math Kernel Library parallel .
|
cluster = {yes|no} | (For
libintel64 only) Specifies whether
Intel® oneAPI Math Kernel Library no .
|
blacs_mpi = {intelmpi|msmpi} | Specifies the pre-compiled
Intel® oneAPI Math Kernel Library 'cluster=no' . The default value is
intelmpi .
|
blacs_name = <lib name> | Specifies the name (without extension) of a custom
Intel® oneAPI Math Kernel Library '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 librar y
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® oneAPI Math Kernel Library xerbla . If you omit this parameter, the native
Intel® oneAPI Math Kernel Library xerbla is used. See the description of the
xerbla function in the
Intel® oneAPI Math Kernel Library |
MKLROOT =
<mkl directory> | Specifies the location of
Intel® oneAPI Math Kernel Library shared object . By default, the builder uses the
Intel® oneAPI Math Kernel Library |
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 thecompilervars.shscript 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
file and uses the native
error handler.
mkl_custom.
so
library
. The command takes the list of functions from the
user_list
Intel® oneAPI Math Kernel Library
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
|
This notice covers the following instruction sets: SSE2, SSE4.2, AVX2, AVX-512.