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

ZGESVD returning wrong singular values when lwork is large

New Contributor I


Attached is a test case showing the ZGESVD returning wrong singular values when lwork is large.  The test matrix is an identity matrix so that all singular values should be 1.  If I choose lwork to be the minimum required value specified by the documenation, then I see no issues.  When I query ZGESVD for the optimum lwork using lwork = -1, then the singular values are no longer all 1.  Furthermore, the efficiency of the ZGESVD routine drops drastically.  For some values of lwork, the routine seems to run forever and I have to kill it. 

I'm using MKL 11.3.1 Product Build 20151021 under linux with 8-byte integer default (ILP64 library).  I have observed the same issue under windows as well.  My compile line is

     ifort -i8 -module . test.F90 -L$INTEL_MKL_LIBS -liomp5 -lmkl_intel_ilp64 -lmkl_core -lmkl_intel_thread -lpthread -lm

The output of the test routine is

 OpenMP:                      0
 Intel(R) Math Kernel Library Version 11.3.1 Product Build 20151021 for Intel(R)
  64 architecture applications

 SUM:  (5868.00000000000,0.000000000000000E+000)
 Starting SVD TRY 1                  5868                  5868
 LWORK :                 17604
 Condition #:    1.00000000000000
 Done with SVD TRY 1
 Starting SVD TRY 2                  5868                  5868
 LWORK :                645480
 Condition #:    11.9444068944964
 Done with SVD TRY 2
 Starting SVD TRY 3                  5868                  5868
 LWORK :                 58680
^Cforrtl: error (69): process interrupted (SIGINT)




0 Kudos
1 Reply

Hi John, 

Thank for let us know. We will look into it and get back to you if any news.


Ying .