Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
Public
Document Table of Contents

Nonlinear Solver Organization and Implementation

The Intel® oneAPI Math Kernel Library (oneMKL) solver routines for nonlinear least squares problems use reverse communication interfaces (RCI). That means you need to provide the solver with information required for the iteration process, for example, the corresponding Jacobian matrix, or values of the objective function. RCI removes the dependency of the solver on specific implementation of the operations. However, it does require that you organize a computational loop.

Typical order for invoking RCI solver routines Typical order for invoking RCI solver routines

The nonlinear least squares problem solver routines, or Trust-Region (TR) solvers, are implemented with threading support. You can manage the threads using Threading Control Functions. The TR solvers use BLAS and LAPACK routines, and offer the same parallelism as those domains. The ?jacobi and ?jacobix routines of Jacobi matrix calculations are parallel. These routines (?jacobi and ?jacobix) make calls to the user-supplied functions with different x parameters for multiple threads.

Memory Allocation and Handles

To make the TR solver routines easy to use, you are not required to allocate temporary working storage. The solver allocates all temporary memory internally. To allow multiple users to access the solver simultaneously, the solver keeps track of the storage allocated for a particular application by using a data object called a handle. Each TR solver routine creates, uses, or deletes a handle. The handle datatype definition can be found in mkl_rci.fi (or mkl_rci.f90).

Use one of the mentioned headers (either include it or as a module) and declare the handle as:

type(HANDLE_TR) :: handle

For a program using compilers that support eight byte integers, declare a handle as:

INCLUDE "mkl_rci.fi" 
INTEGER*8 handle

Product and Performance Information

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

Notice revision #20201201