Skip to content

Modify the use of LAPACK GEES/GEEV in the Belos and Anasazi solvers for Intel MKL 18.0.2

James Willenbring requested to merge hkthorn:develop into develop

Created by: hkthorn

This commit modifies the use of LAPACK GEES/GEEV in solvers that employ this method such that they determine the optimal lwork size before allocating the work vector. This should not be necessary, but the Intel MKL 18.0.[0-3] library has a known bug that can cause this method to seg fault due to bad memory access, when the optimal size is not used. This was fixed in MKL Update 4, as documented here:

https://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-2018-bug-fixes-list

Since there is a concern that the MKL 18.0.2 library that is on the ATDM platforms will be in use for the near-term, the interactions with the LAPACK calls to GEES/GEEV in Anasazi and Belos will be modified.

This commit addresses the issues in bugs #3497 (closed) and #3499, except for the Anasazi_MultiVecTraitsTest2_MPI_4 failure.

@trilinos/belos @trilinos/anasazi

Description

This commit modifies the use of LAPACK GEES/GEEV in solvers that employ this method such that they determine the optimal lwork size before allocating the work vector. This should not be necessary, but the Intel MKL 18.0.[0-3] library has a known bug that can cause this method to seg fault due to bad memory access, when the optimal size is not used.

Motivation and Context

Should fix test failures on Mutrino

How Has This Been Tested?

On Mutrino and Chama using offending Intel MKL library.

Checklist

  • My commit messages mention the appropriate GitHub issue numbers.
  • My code follows the code style of the affected package(s).
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the code contribution guidelines for this project.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • No new compiler warnings were introduced.
  • These changes break backwards compatibility.

Merge request reports