使用面向 Windows* 操作系统的英特尔® MKL 动态接口

从 10.3 版开始,英特尔® MKL 提供了面向 Windows* 操作系统(*)的动态库。


它们支持以动态的方式选择面向英特尔® MKL 的接口和线程层。
要使用动态接口,请仅将单个库添加到链路行:"mkl_rt.lib"
需要注意的是,IA32 和英特尔® 64 架构的行链路相同。

所以,链路行看上去与下面的相似:
icl.exe test.cpp mkl_rt.lib

其中,mkl_rt.lib 是用于链路的动态接口库(分别面向 IA-32 和英特尔® 64 架构)。对于 IA-32 和英特尔® 64 来说,相应的动态库为 mkl_rt.dll。

当前的实施中存在一个例外:mkl_rt.dll 中不包括 ScaLAPACK 函数。

设置线程层:

线程层在运行时选择,并取决于环境变量 MKL_THREADING_LAYER 或函数 MKL_Set_Threading_Layer(int code) 提供的值。

环境变量 MKL_THREADING_LAYER 可被设置为 INTEL、SEQUENTIAL 或 PGI。
该函数应在其它所有函数之前调用,MKL_Set_Interface_Layer 除外。如果调用该函数,请忽略环境变量。

默认的行为是使用英特尔线程层。

函数说明:
int MKL_Set_Threading_Layer(int code)
The variable code can have values :
#define MKL_THREADING_INTEL 0
#define MKL_THREADING_SEQUENTIAL 1
#define MKL_THREADING_PGI 2

此外,我们还提供了切入点 (**):
int mkl_set_threading_layer(int* code)
int mkl_set_threading_layer_(int* code)
int MKL_SET_THREADING_LAYER(int* code)

环境变量 MKL_THREADING_LAYER 可被设置为 INTEL、SEQUENTIAL 或 PGI。

设置接口层:


可用的接口取决于您系统的架构。

在 Windows Intel64 架构上,接口层在运行时选择,并取决于环境变量 MKL_INTERFACE_LAYER 或函数 MKL_Set_Interface_Layer 提供的值。

该函数应在其它所有函数之前调用(MKL_Set_Threading_Layer 可能除外)。如果调用该函数,请忽略环境变量。默认行为与 LP64 接口相同。

函数说明:
int MKL_Set_Interface_Layer(int code) 和变量代码可具有相关值:

#define MKL_INTERFACE_LP64 0
#define MKL_INTERFACE_ILP64 1

此外,我们还提供了切入点 (**):

int mkl_set_interface_layer(int* code)
int mkl_set_interface_layer_(int* code)
int MKL_SET_INTERFACE_LAYER(int* code)


环境变量 MKL_INTERFACE_LAYER 可被设置为 LP64 或 ILP64。

注:

(*) -- 该动态接口仅适用于 Windows 操作系统

(**) -- mkl_service.h 标头文件中定义了所有这些 Windows 动态接口员工。

有关编译器优化的更完整信息,请参阅优化通知