Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

Intel® MKL Fortran 95 Interfaces for LAPACK Routines vs. Netlib Implementation

The following list presents general digressions of the
Intel® MKL
LAPACK95 implementation from the Netlib analog:
  • The
    Intel® MKL
    Fortran 95 interfaces are provided for pure procedures.
  • Names of interfaces do not contain the
    LA_
    prefix.
  • An optional array argument always has the
    target
    attribute.
  • Functionality of the
    Intel® MKL
    LAPACK95 wrapper is close to the FORTRAN 77 original implementation in the
    getrf
    ,
    gbtrf
    , and
    potrf
    interfaces.
  • If
    jobz
    argument value specifies presence or absence of
    z
    argument, then
    z
    is always declared as optional and
    jobz
    is restored depending on whether
    z
    is present or not.
  • To avoid double error checking, processing of the
    info
    argument is limited to checking of the allocated memory and disarranging of optional arguments.
  • If an argument that is present in the list of arguments completely defines another argument, the latter is always declared as optional.
You can transform an application that uses the Netlib LAPACK interfaces to ensure its work with the
Intel® MKL
interfaces providing that:
  1. The application is correct, that is, unambiguous, compiler-independent, and contains no errors.
  2. Each routine name denotes only one specific routine. If any routine name in the application coincides with a name of the original Netlib routine (for example, after removing the
    LA_
    prefix) but denotes a routine different from the Netlib original routine, this name should be modified through context name replacement.
You should transform your application in the following cases:
  • When using the Netlib routines that differ from the
    Intel® MKL
    routines only by the
    LA_
    prefix or in the array attribute
    target
    . The only transformation required in this case is context name replacement.
  • When using Netlib routines that differ from the
    Intel® MKL
    routines by the
    LA_
    prefix, the
    target
    array attribute, and the names of formal arguments. In the case of positional passing of arguments, no additional transformation except context name replacement is required. In the case of the keywords passing of arguments, in addition to the context name replacement the names of mismatching keywords should also be modified.
  • When using the Netlib routines that differ from the respective
    Intel® MKL
    routines by the
    LA_
    prefix, the
    target
    array attribute, sequence of the arguments, arguments missing in
    Intel® MKL
    but present in Netlib and, vice versa, present in
    Intel® MKL
    but missing in Netlib. Remove the differences in the sequence and range of the arguments in process of all the transformations when you use the Netlib routines specified by this bullet and the preceding bullet.
  • When using the
    getrf
    ,
    gbtrf
    , and
    potrf
    interfaces, that is, new functionality implemented in
    Intel® MKL
    but unavailable in the Netlib source. To override the differences, build the desired functionality explicitly with the
    Intel® MKL
    means or create a new subroutine with the new functionality, using specific MKL interfaces corresponding to LAPACK 77 routines. You can call the LAPACK 77 routines directly but using the new
    Intel® MKL
    interfaces is preferable. Note that if the transformed application calls
    getrf
    ,
    gbtrf
    or
    potrf
    without controlling arguments
    rcond
    and
    norm
    , just context name replacement is enough in modifying the calls into the
    Intel® MKL
    interfaces, as described in the first bullet above. The Netlib functionality is preserved in such cases.
  • When using the Netlib auxiliary routines. In this case, call a corresponding subroutine directly, using the
    Intel® MKL
    LAPACK 77 interfaces.
Transform your application as follows:
  1. Make sure conditions a. and b. are met.
  2. Select Netlib LAPACK 95 calls. For each call, do the following:
    • Select the type of digression and do the required transformations.
    • Revise results to eliminate unneeded code or data, which may appear after several identical calls.
  3. Make sure the transformations are correct and complete.

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