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

sysv_aa workspace query

MarkG3
Beginner
1,010 Views

I noticed a bug in MKL 2019-2021 with the sysv_aa workspace query. It seems to work in MKL 2017-2018. The sysv_aa workspace ought to be max( sytrf_aa, sytrs_aa ) workspaces. Instead, it returns a large negative, large positive, or zero number. Results below vary between precisions [s, d, c, z].

I ran these tests using the LAPACK++ wrappers (https://bitbucket.org/icl/lapackpp/) with the attached file substituting for lapackpp/src/sysv_aa.cc to debug it. I ran the test:

./tester --type s,d,c,z --dim 100 --uplo l,u sysv_aa

(These tests pass with Netlib LAPACK.)

Here are results I get for uplo=L and n=100. Same results happen with uplo=U. (I just grep the output for qry_work.)

# 2017-2018 works

intel-mkl/2017.txt:ssysv_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:ssytrf_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:ssytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2017.txt:dsysv_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:dsytrf_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:dsytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2017.txt:csysv_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:csytrf_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:csytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2017.txt:zsysv_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:zsytrf_aa( uplo=L, n=100 ) qry_work 6500.0
intel-mkl/2017.txt:zsytrs_aa( uplo=L, n=100 ) qry_work 298.0

-----
intel-mkl/2018.txt:ssysv_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2018.txt:ssytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2018.txt:ssytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2018.txt:dsysv_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2018.txt:dsytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2018.txt:dsytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2018.txt:csysv_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2018.txt:csytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2018.txt:csytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2018.txt:zsysv_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2018.txt:zsytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2018.txt:zsytrs_aa( uplo=L, n=100 ) qry_work 298.0

-----

# ERRORS start here
intel-mkl/2019.txt:ssysv_aa( uplo=L, n=100 ) qry_work -3135488000.0
intel-mkl/2019.txt:ssytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2019.txt:ssytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2019.txt:dsysv_aa( uplo=L, n=100 ) qry_work 0.0
intel-mkl/2019.txt:dsytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2019.txt:dsytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2019.txt:csysv_aa( uplo=L, n=100 ) qry_work 0.0
intel-mkl/2019.txt:csytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2019.txt:csytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2019.txt:zsysv_aa( uplo=L, n=100 ) qry_work 0.0
intel-mkl/2019.txt:zsytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2019.txt:zsytrs_aa( uplo=L, n=100 ) qry_work 298.0

-----
intel-mkl/2020.txt:ssysv_aa( uplo=L, n=100 ) qry_work -3135488000.0
intel-mkl/2020.txt:ssytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2020.txt:ssytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2020.txt:dsysv_aa( uplo=L, n=100 ) qry_work 0.0
intel-mkl/2020.txt:dsytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-mkl/2020.txt:dsytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2020.txt:csysv_aa( uplo=L, n=100 ) qry_work 1167663104.0
intel-mkl/2020.txt:csytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2020.txt:csytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-mkl/2020.txt:zsysv_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2020.txt:zsytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-mkl/2020.txt:zsytrs_aa( uplo=L, n=100 ) qry_work 298.0

-----
intel-oneapi-mkl/2021.txt:ssysv_aa( uplo=L, n=100 ) qry_work -3135488000.0
intel-oneapi-mkl/2021.txt:ssytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-oneapi-mkl/2021.txt:ssytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-oneapi-mkl/2021.txt:dsysv_aa( uplo=L, n=100 ) qry_work 0.0
intel-oneapi-mkl/2021.txt:dsytrf_aa( uplo=L, n=100 ) qry_work 2500.0
intel-oneapi-mkl/2021.txt:dsytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-oneapi-mkl/2021.txt:csysv_aa( uplo=L, n=100 ) qry_work 1167663104.0
intel-oneapi-mkl/2021.txt:csytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-oneapi-mkl/2021.txt:csytrs_aa( uplo=L, n=100 ) qry_work 298.0


intel-oneapi-mkl/2021.txt:zsysv_aa( uplo=L, n=100 ) qry_work 4900.0
intel-oneapi-mkl/2021.txt:zsytrf_aa( uplo=L, n=100 ) qry_work 4900.0
intel-oneapi-mkl/2021.txt:zsytrs_aa( uplo=L, n=100 ) qry_work 298.0

 

Note that this prevents the LAPACKE_*sysv_aa wrapper from working, since it queries the workspace and allocates that amount. Or in the case above where qry_work = 1167663104, it works but allocates an obnoxious amount of workspace.

 

Thanks for investigating.

Mark Gates, Innovative Computing Laboratory, UTK

0 Kudos
1 Solution
Gennady_F_Intel
Moderator
824 Views

validating the Intel MKL v. 2021.3 shows the expected result:


Major version:      2021

Minor version:      0

Update version:     3

Product status:     Product

Build:          20210611

Platform:        Intel(R) 64 architecture

Processor optimization: Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors

================================================================


 ssysv_aa Example Program Results

...ssyev_aa wkopt[0] == 13.000000 

...ssyev_aa lwork[0] == 13 



View solution in original post

0 Kudos
5 Replies
MRajesh_intel
Moderator
950 Views

Hi,


Thanks for posting this issue. We are working on this and will get back to you.


Regards

Rajesh


0 Kudos
Gennady_F_Intel
Moderator
890 Views

Mark,

We reproduced the case and will working on the fix. We will keep the thread updated.

thanks,

Gennady


0 Kudos
Gennady_F_Intel
Moderator
847 Views

Mark,

The fix of the issue available in the official release of MKL 2021.3 which has happened yesterday.

thanks,

Gennady


0 Kudos
Gennady_F_Intel
Moderator
825 Views

validating the Intel MKL v. 2021.3 shows the expected result:


Major version:      2021

Minor version:      0

Update version:     3

Product status:     Product

Build:          20210611

Platform:        Intel(R) 64 architecture

Processor optimization: Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors

================================================================


 ssysv_aa Example Program Results

...ssyev_aa wkopt[0] == 13.000000 

...ssyev_aa lwork[0] == 13 



0 Kudos
Gennady_F_Intel
Moderator
824 Views

The issue is closing and we will no longer respond to this thread. If you require additional assistance from Intel, please start a new thread. Any further interaction in this thread will be considered community only.



0 Kudos
Reply