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.
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.
連結已複製
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
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.
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.
Robert, please check the version of MKL 2020 update 2 which available for download. This update fixes the issue.