Other Areas to Explore
The exercises so far have given the basic ideas needed to get started with oneMKL, but there are plenty of other areas to explore. The following are some controls, interfaces, and topics which you might find worth investigating further.
- Support functions
-
The second exercise shows how to use the timing functions and the third exercise shows the use of threading control functions. Acquaint yourself with other support functions by referring to the "Support functions" chapter of the oneMKL Developer Reference:
Support functions for Conditional Numerical Reproducibility (CNR)
These functions provide the means to balance reproducibility with performance in certain conditions.
Memory functions
These functions provide support for allocating and freeing memory. The allocation functions allow proper alignment of memory to ensure reproducibility when used together with CBWR functions.
Error handling functions
The xerbla function is used by BLAS, LAPACK, VML, and VSL to report errors.
- Linking and interfaces
-
The ILP64 interface
Most users call the interface of oneMKL that takes 32-bit integers for size parameters, but increased memory and also some legacy code requires 64-bit integers. Read more about the ILP64 interface and the libraries and functions supporting it in the oneMKL Developer Guide.
Single Dynamic Library (SDL) linking model
oneMKL has two ways to link to dynamic libraries. The newest of these models is the best option for those calling oneMKL from managed runtime libraries and is easy to link, but requires some functions calls to use non-default interfaces (for example, ILP64). See the oneMKL Developer Guide for more information on oneMKL linking models.
- Miscellaneous
-
Environment variables
Many controls in oneMKL have both environment variables and functional versions. In all cases the function overrides the behavior of the environment variable. If you do not want the behavior to change based on an environment variable in a particular case, use the function call to ensure the desired setting. See the oneMKL Developer Guide for descriptions of the environment variables used by oneMKL.