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

mkl_sparse_sp2m: Conditional jump or move

Robert_E_
Beginner
1,135 Views
struct matrix_descr descrA;
struct matrix_descr descrB;

descrA.type = SPARSE_MATRIX_TYPE_GENERAL;
descrB.type = SPARSE_MATRIX_TYPE_GENERAL;

std::cout << mkl_sparse_sp2m(SPARSE_OPERATION_TRANSPOSE, descrA, A, SPARSE_OPERATION_TRANSPOSE, descrB, B, SPARSE_STAGE_FULL_MULT, &C) << std::endl;

Assume there are two csr matrices A and B and one declared csr matrix C. Status 0 for the above code is returned (SPARSE_STATUS_SUCCESS). However, Valgrind indicates a "Conditional jump or move depends on uninizialised value" error. If I create the C matrix with dummy csr arrays I do not get the error, but then memory is directly lost. Is this a bug? I'm using mkl 2019 update 5.

0 Kudos
1 Solution
Gennady_F_Intel
Moderator
1,135 Views

Robert, I have to inform you that I see a similar problem reported by Intel Inspector v.2019.5 also: 2 Data race problem(s) detected when I collected the most intrusive option --t3.  The issue will be escalated and we will keep you informed with the status of this case.

View solution in original post

0 Kudos
6 Replies
Kirill_V_Intel
Employee
1,135 Views

Hello Franz,

Could you give us more information about your setup? How do you compile and link, and maybe your exact MWE? I tried to check but didn't observe any conditional jump warnings from valgrind.

Best,
Kirill

0 Kudos
Gennady_F_Intel
Moderator
1,135 Views

Franz, could you also try to check the problem with Intel inspector instead of Valgrind? 

0 Kudos
Robert_E_
Beginner
1,135 Views

I've attached a MWE. I have never used Intel inspector but I'm willing to take the time to look into that if this is really necessary. For now here is the Valgrind error:

 

valgrind  ./main
==4598== Memcheck, a memory error detector
==4598== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==4598== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==4598== Command: ./main
==4598==
==4598== Conditional jump or move depends on uninitialised value(s)
==4598==    at 0xFA0D239: mkl_sparse_sp2m_i4_avx (in /usr/lib/intel/compilers_and_libraries_2019.5.281/linux/mkl/lib/intel64_lin/libmkl_avx.so)
==4598==    by 0x108B98: main (main.cpp:47)
==4598==
==4598==
==4598== HEAP SUMMARY:
==4598==     in use at exit: 5,290 bytes in 15 blocks
==4598==   total heap usage: 64 allocs, 49 frees, 264,397 bytes allocated
==4598==
==4598== LEAK SUMMARY:
==4598==    definitely lost: 0 bytes in 0 blocks
==4598==    indirectly lost: 0 bytes in 0 blocks
==4598==      possibly lost: 336 bytes in 1 blocks
==4598==    still reachable: 4,954 bytes in 14 blocks
==4598==         suppressed: 0 bytes in 0 blocks
==4598== Rerun with --leak-check=full to see details of leaked memory
==4598==
==4598== For counts of detected and suppressed errors, rerun with: -v
==4598== Use --track-origins=yes to see where uninitialised values come from
==4598== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

 

----

The conditional jump disappears if I create and destroy the C matrix before the sp2m function is called.

The error could be reproduced on two machines.

0 Kudos
Gennady_F_Intel
Moderator
1,135 Views

thanks Robert. We will check and get back to this thread soon with our results.

0 Kudos
Gennady_F_Intel
Moderator
1,136 Views

Robert, I have to inform you that I see a similar problem reported by Intel Inspector v.2019.5 also: 2 Data race problem(s) detected when I collected the most intrusive option --t3.  The issue will be escalated and we will keep you informed with the status of this case.

0 Kudos
Gennady_F_Intel
Moderator
1,127 Views

Robert, please check the version of MKL 2020 update 2 which available for download. This update fixes the issue.

0 Kudos
Reply