Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Intel Community
- Software
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library
- LAPACK_zheev with matrix_layout=LAPACK_ROW_MAJOR

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

kumar__prashant

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

03-21-2019
06:16 PM

167 Views

LAPACK_zheev with matrix_layout=LAPACK_ROW_MAJOR

There seems to be a bug in the routine LAPACK_zheev in MKL 2019 update 3 version. This routine is used for finding eigenvectors and eigenvalues of a Hermitian matrix 'a'. Its syntax is:

lapack_int LAPACKE_zheev ( int matrix_layout , char jobz , char uplo , lapack_int n , lapack_complex_double* a , lapack_int lda , double* w );

The problem seems to occur for only "matrix_layout = LAPACK_ROW_MAJOR" argument with jobz = 'V'. The eigenvectors are outputted in 'a' by rewriting it. However, the routine rewrites only upper triangular portion of 'a' and the rest of the matrix is unchanged.

For example, the following code calculates the eigenvectors of the 2x2 Pauli matrix sigma_x.

filename: lapack_zheev

#include <iostream> #include <complex> #define MKL_Complex16 std::complex<double> #include "mkl.h" #include "mkl_types.h" using namespace std; int main() { complex<double> a[4]; a[0] = 0; a[1] = 1; a[2] = 1; a[3] = 0; double eigs[2]; int info = LAPACKE_zheev(LAPACK_ROW_MAJOR, 'V', 'U', 2, a, 2, eigs); cout << "Info = " << info << endl; cout << a[0] << " " << a[1] << endl; cout << a[2] << " " << a[3] << endl; }

I compile it with:

icpc -std=c++14 -qopenmp -DMKL_ILP64 -m64 -I${MKLROOT}/include -O3 -DNDEBUG -ansi-alias -o lapack_zheev.out lapack_zheev.cpp -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl ./lapack_zheev.out

The output is:

Info = 0 (-0.707107,0) (0.707107,0) (1,0) (0.707107,0)

while it is supposed to be:

Info = 0 (-0.707107,0) (0.707107,0) (0.707107,0) (0.707107,0)

Replacing LAPACK_ROW_MAJOR by LAPACK_COL_MAJOR produces the correct output.

Link Copied

4 Replies

Gennady_F_Intel

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

03-22-2019
08:24 PM

167 Views

Yes, this is an known issue which was introduced the last update. We will fix this into on the future updates. As a work-around - please try e.x the version of MKL 2019.0.

We will keep this tread updated when the fix of the problem will be available into product version of MKL.

Gennady_F_Intel

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

03-22-2019
09:07 PM

167 Views

the small remark - the latest correct update - MKL 2019 u1.

Mishra__Ashirbad

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

06-11-2019
01:42 PM

167 Views

Hi,

Even in the older version of MKL there is bug which gives incorrect values when using LAPACK_ROW_MAJOR. In the version 18.04 that I am using the signs (+/-) of the elements of the matrix are incorrect, even though the absolute values are correct. The incorrectness is not uniform, i.e I can't take the negative(-) of the elements to reverse their signs to the correct values.

However, the only configuration that works is LAPACK_COLUMN_MAJOR.

Gennady_F_Intel

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

06-12-2019
08:45 PM

167 Views

please try to check version 2019 u4

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

For more complete information about compiler optimizations, see our Optimization Notice.