Developer Guide

Contents

Building a Universal Windows Driver

Intel® MKL
is compatible with Universal Windows Drivers (UWDs) whose binaries are Win10 SDK version 1803 (also called Redstone 4, RS4 or Win 10 SDK build 10.0.17134.0) or higher. The Windows system calls used in the statically linked libraries are defined in:
  • OneCore.Lib
    for headless applications like Nano Server.
  • OneCoreUAP.Lib
    for a UWD.
A Windows application or driver that links to either of these libraries can use functionality from statically linked
Intel® MKL
to accelerate computations. For more information on design criteria for a UWD, see the Microsoft website.
This table summarizes important information about compatibility between
Intel® MKL
and UWDs.
Compatibility between Intel MKL and Universal Windows Driver (UWD)
Criteria
Compatibility
SDK
10.0.17134.0 (also called Redstone 4, RS4, version 1803) or higher
Architecture
  • ia32
  • intel64
Universal API sets
  • OneCore.Lib
    for headless applications like Nano Server
  • OneCoreUAP.Lib
    for a UWD
Threading layers
UWD Compliance
  • Intel® MKL
    with static linking libraries
  • For dynamic linking libraries, use the custom DLL builder with
    uwd_compat
    =
    yes
    to construct a custom DLL that is compatible with UWD. See Using the Custom DLL Builder.
The UWD links to
Intel® MKL
using the same link line settings as drivers or executables that are not universal. See Link Line Advisor for recommended linking models.

UWD Compliance for 32-bit Architecture (
ia32
)

These tables describe compliance between
Intel® MKL
and UWD on 32-bit (
ia32
) architecture for static and dynamic linked libraries.
Static Linking
Layer
Library
Compatibility
Fortran interface layer
mkl_blas95.lib
mkl_lapack95.lib
Not applicable
Interface layer
mkl_intel_c.lib (cdecl)
mkl_intel_s.lib (stdcall)
Threading layer
mkl_sequential.lib
mkl_tbb_thread.lib
(if using UWD Intel® TBB )
mkl_intel_thread.lib (OpenMP)
Computational layer
mkl_core.lib
1
These are Fortran 95 wrappers for BLAS (BLAS95) and LAPACK (LAPACK95). Windows drivers are typically written in C, C++ or ASM. Fortran wrappers are UWD-compliant but not useful for building UWDs.
2
See Using Intel®TBB in UWP Applications. Starting with the Intel® TBB 2018 release, you can find a prebuilt UWD-compliant Intel® TBB library in <
tbb_distribution_root>\lib\<target_architecture>\vc14_uwd
.
Dynamic Linking
Layer
Library
Compatibility
Fortran interface layer
mkl_blas95_dll.lib
mkl_lapack95_dll.lib
Not applicable
Interface layer
mkl_intel_c_dll.lib (cdecl)
mkl_intel_s_dll.lib (stdcall)
See in the compatibility table above.
Threading layer
mkl_sequential_dll.lib
mkl_tbb_thread_dll.lib
mkl_intel_thread_dll.lib (OpenMP)
See in the compatibility table above.
Computational layer
mkl_core_dll.lib
See in the compatibility table above.
1
These are Fortran 95 wrappers for BLAS (BLAS95) and LAPACK (LAPACK95). Windows drivers are typically written in C, C++ or ASM. Fortran wrappers are UWD-compliant but not useful for building UWDs.

UWD Compliance for 64-bit Architecture (
intel64
)

These tables describe compliance between
Intel® MKL
and UWD on 64-bit (
intel64
) architecture for static and dynamic linked libraries.
Static Linking
Layer
Library
Compatibility
Fortran interface layer
mkl_blas95_lp64.lib
mkl_blas95_ilp64.lib
mkl_lapack95_lp64.lib
mkl_lapack95_ilp64.lib
Not applicable
Interface layer
mkl_intel_lp64.lib
mkl_intel_ilp64.lib
Threading layer
mkl_sequential.lib
mkl_tbb_thread.lib
mkl_intel_thread.lib (OpenMP)
mkl_pgi_thread.lib (PGI OpenMP)
(if using UWD Intel® TBB)
Computational layer
mkl_core.lib
MPI layer
mkl_blacs_lp64.lib
mkl_blacs_ilp64.lib
mkl_cdft_core.lib
mkl_scalapack_lp64.lib
mkl_scalapack_ilp64.lib
1
These are Fortran 95 wrappers for BLAS (BLAS95) and LAPACK (LAPACK95). Windows drivers are typically written in C, C++ or ASM. Fortran wrappers are UWD-compliant but not useful for building UWDs.
2
See Using Intel®TBB in UWP Applications. Starting with the Intel® TBB 2018 release, you can find a prebuilt UWD-compliant Intel® TBB library in <
tbb_distribution_root>\lib\<target_architecture>\vc14_uwd
.
Dynamic Linking
Layer
Library
Compatibility
Fortran interface layer
mkl_blas95_lp64.lib
mkl_blas95_ilp64.lib
mkl_lapack95_lp64.lib
mkl_lapack95_ilp64.lib
Not applicable
Interface layer
mkl_intel_lp64_dll.lib
mkl_intel_ilp64_dll.lib
See in the compatibility table above.
Threading layer
mkl_sequential_dll.lib
mkl_tbb_thread_dll.lib
mkl_intel_thread_dll.lib (OpenMP)
mkl_pgi_thread_dll.lib (PGI OpenMP)
See in the compatibility table above.
Computational layer
mkl_core_dll.lib
See in the compatibility table above.
MPI layer
mkl_blacs_lp64_dll.lib
mkl_blacs_ilp64_dll.lib
mkl_cdft_core_dll.lib
mkl_scalapack_lp64_dll.lib
mkl_scalapack_ilp64_dll.lib
See in the compatibility table above.
1
These are Fortran 95 wrappers for BLAS (BLAS95) and LAPACK (LAPACK95). Windows drivers are typically written in C, C++ or ASM. Fortran wrappers are UWD-compliant but not useful for building UWDs.

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