Developer Guide

Developer Guide for Intel® oneAPI Math Kernel Library Windows*

ID 766692
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Improving Performance for Small Size Problems

The overhead of calling an Intel® oneAPI Math Kernel Library (oneMKL) function for small problem sizes can be significant when the functionhas a large number of parameters or internally checks parameter errors. To reduce the performance overhead for these small size problems, the Intel® oneAPI Math Kernel Library (oneMKL)direct callfeature works in conjunction with the compiler to preprocess the calling parameters to supported Intel® oneAPI Math Kernel Library (oneMKL) functions and directly call or inline special optimized small-matrix kernels that bypass error checking.For a list of functions supporting direct call, see Limitations of the Direct Call.

To activate the feature, do the following:

  • Compile your C or Fortran code with the preprocessor macro depending on whether a threaded or sequential mode of Intel® oneAPI Math Kernel Library (oneMKL) is required by supplying the compiler option as explained below:

    Intel® oneAPI Math Kernel Library (oneMKL) Mode

    Macro

    Compiler Option

    Threaded

    MKL_DIRECT_CALL /DMKL_DIRECT_CALL

    Sequential

    MKL_DIRECT_CALL_SEQ /DMKL_DIRECT_CALL_SEQ
  • For Fortran applications:

    • Enable preprocessor by using the /fpp option for Intel® Fortran Compiler.
    • Include the Intel® oneAPI Math Kernel Library (oneMKL) Fortran include filemkl_direct_call.fi.

Intel® oneAPI Math Kernel Library (oneMKL) skips error checking and intermediate function calls if the problem size is small enough (for example: a call to a function that supports direct call, such asdgemm, with matrix ranks smaller than 50).

Product and Performance Information

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.

Notice revision #20201201