Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7013 Discussions

Uninitialized partial memory access with LAPACKE_cheev

Chandrakant_19
Beginner
446 Views

Hi Intel Support Team,

I am working on a project using mkl library. I am using the 'LAPACKE_cheev' mkl routine for eigenvalue(s) computation.

I have initilaized the input parameters before before calling the api.

The input matrix dimensions are 2x2 and Layout is LAPACK_ROW_MAJOR.

Code Snippet:
MKL_INT n = 2, lda = 2;
float w[2] = {};
MKL_Complex8 a[4] = {};

a is overwritten with actual data.

LAPACKE_cheev( LAPACK_ROW_MAJOR, 'N', 'U', n, a, lda, w )

Reference example code used: https://www.intel.com/content/www/us/en/docs/onemkl/code-samples-lapack/2024-1/lapacke-cheev-example-c-row.html


On valgrind-3.16.1 in Linux envirounment, we are observing following error

"Conditional jump or move depends on uninitialised value(s)" at mkl_lapack_ps_avx2_xclanhe.


On Intel Inspector in windows envirounment, we are observing following error

"Uninitialized partial memory access"

Thanking you.

0 Kudos
1 Solution
Gennady_F_Intel
Moderator
315 Views

making the same experiment with the current version of oneMKL 2024.1

$ echo $MKLROOT

/opt/intel/oneapi/mkl/2024.1


and Valgrind version :

$ valgrind --version

valgrind-3.18.1


Compiling like as follow:

$ icx -qmkl lapacke_cheev_row.c


$ valgrind --tool=memcheck --track-origins=yes --leak-check=full ./a.out

==3398344== Memcheck, a memory error detector

==3398344== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.

==3398344== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright i                                       nfo

==3398344== Command: ./a.out

==3398344==

LAPACKE_cheev (row-major, high-level) Example Program Results


 Eigenvalues

 -16.00 -6.76  6.67 25.51


 Eigenvectors (stored columnwise)

 ( 0.34, 0.00) ( -0.55, 0.00) ( 0.31, 0.00) ( -0.70, -0.00)

 ( 0.44, -0.54) ( 0.26, 0.18) ( 0.45, 0.29) ( 0.22, -0.28)

 ( -0.48, -0.37) ( -0.52, -0.02) ( -0.05, 0.57) ( 0.15, 0.08)

 ( 0.10, -0.12) ( -0.50, 0.28) ( -0.23, -0.48) ( 0.34, -0.49)

==3398344==

==3398344== HEAP SUMMARY:

==3398344==   in use at exit: 11,803 bytes in 31 blocks

==3398344==  total heap usage: 96 allocs, 65 frees, 175,735 bytes allocate                                       d

==3398344==

==3398344== LEAK SUMMARY:

==3398344==  definitely lost: 0 bytes in 0 blocks

==3398344==  indirectly lost: 0 bytes in 0 blocks

==3398344==   possibly lost: 0 bytes in 0 blocks

==3398344==  still reachable: 11,803 bytes in 31 blocks

==3398344==     suppressed: 0 bytes in 0 blocks

==3398344== Reachable blocks (those to which a pointer was found) are not s                                       hown.

==3398344== To see them, rerun with: --leak-check=full --show-leak-kinds=al                                       l

==3398344==

==3398344== For lists of detected and suppressed errors, rerun with: -s

==3398344== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)




View solution in original post

0 Kudos
6 Replies
Gennady_F_Intel
Moderator
398 Views

it might be the false positive message ...

What version of MKL do you use? is that 2024u1?

and let us know the command you used while calling Valgrind?

--Gennady



0 Kudos
Chandrakant_19
Beginner
366 Views

Hi,

 

Please find below details about compilers and libraries.

IntelSWTools (Linux) - compilers_and_libraries_2016.2.181

IntelSWTools (Windows) - compilers_and_libraries_2017.1.143

Intel Inspector 2023.0

 

Command used while calling valgrind on linux,

valgrind --tool=memcheck --track-origins=yes --leak-check=full

 

Thanking You.

0 Kudos
Gennady_F_Intel
Moderator
352 Views

I think this is kind of false positive issue. The version of MKL is no longer supported, Could You try to test the latest ( current ) one?

You could take this version from MKL Product Page as stand-alone package.

--Gennady


0 Kudos
Gennady_F_Intel
Moderator
316 Views

making the same experiment with the current version of oneMKL 2024.1

$ echo $MKLROOT

/opt/intel/oneapi/mkl/2024.1


and Valgrind version :

$ valgrind --version

valgrind-3.18.1


Compiling like as follow:

$ icx -qmkl lapacke_cheev_row.c


$ valgrind --tool=memcheck --track-origins=yes --leak-check=full ./a.out

==3398344== Memcheck, a memory error detector

==3398344== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.

==3398344== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright i                                       nfo

==3398344== Command: ./a.out

==3398344==

LAPACKE_cheev (row-major, high-level) Example Program Results


 Eigenvalues

 -16.00 -6.76  6.67 25.51


 Eigenvectors (stored columnwise)

 ( 0.34, 0.00) ( -0.55, 0.00) ( 0.31, 0.00) ( -0.70, -0.00)

 ( 0.44, -0.54) ( 0.26, 0.18) ( 0.45, 0.29) ( 0.22, -0.28)

 ( -0.48, -0.37) ( -0.52, -0.02) ( -0.05, 0.57) ( 0.15, 0.08)

 ( 0.10, -0.12) ( -0.50, 0.28) ( -0.23, -0.48) ( 0.34, -0.49)

==3398344==

==3398344== HEAP SUMMARY:

==3398344==   in use at exit: 11,803 bytes in 31 blocks

==3398344==  total heap usage: 96 allocs, 65 frees, 175,735 bytes allocate                                       d

==3398344==

==3398344== LEAK SUMMARY:

==3398344==  definitely lost: 0 bytes in 0 blocks

==3398344==  indirectly lost: 0 bytes in 0 blocks

==3398344==   possibly lost: 0 bytes in 0 blocks

==3398344==  still reachable: 11,803 bytes in 31 blocks

==3398344==     suppressed: 0 bytes in 0 blocks

==3398344== Reachable blocks (those to which a pointer was found) are not s                                       hown.

==3398344== To see them, rerun with: --leak-check=full --show-leak-kinds=al                                       l

==3398344==

==3398344== For lists of detected and suppressed errors, rerun with: -s

==3398344== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)




0 Kudos
Gennady_F_Intel
Moderator
315 Views

Compiler version used:

Intel(R) oneAPI DPC++/C++ Compiler 2024.1.0 (2024.1.0.20240308)

Target: x86_64-unknown-linux-gnu

Thread model: posix

InstalledDir: /opt/intel/oneapi/compiler/2024.1/bin/compiler

Configuration file: /opt/intel/oneapi/compiler/2024.1/bin/compiler/../icx.cfg



0 Kudos
Gennady_F_Intel
Moderator
203 Views

the case is closing.


0 Kudos
Reply