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.

Note

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 applicable1

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 2)

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 applicable1

Interface layer

mkl_intel_c_dll.lib (cdecl)

mkl_intel_s_dll.lib (stdcall)

See UWD Compliance in the compatibility table above.

Threading layer

mkl_sequential_dll.lib

mkl_tbb_thread_dll.lib

mkl_intel_thread_dll.lib (OpenMP)

See UWD Compliance in the compatibility table above.

Computational layer

mkl_core_dll.lib

See UWD Compliance 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 applicable1

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® TBB2)

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 applicable1

Interface layer

mkl_intel_lp64_dll.lib

mkl_intel_ilp64_dll.lib

See UWD Compliance 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 UWD Compliance in the compatibility table above.

Computational layer

mkl_core_dll.lib

See UWD Compliance 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 UWD Compliance 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.

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