Page 1 of 1

Bugs in PZGESVD on sub-matrix?

PostPosted: Thu Sep 01, 2016 1:42 pm
by lrsuzuki
I am looking for confirmation on some possible bugs with PZGESVD. I am encountering problems when IA,JA /= 1,1

I am trying to use PZGESVD to do an SVD of a rectangular strip of a matrix. It works fine when the strip starts at IA,JA = 1,1. However, when I start the strip elsewhere,1, it dies in PZGEBRD.

First message was that parameter 5 to PZGEBRD is bad. Looking at PZGEBRD, a requirement is that mod(IA,NB) = mod(JA,NB), where NB is the blocking factor. So, I made sure the strip height was set to that that condition would be met.

Is this a bug? ==> Second message was that "PZGEBRD parameter number 12 had an illegal value". Parameter 12 is LWORK. LWORK was calculated in PZGESVD as LLWORK based on the value of LWORK passed into PZGESVD. The value of LWORK passed into PZGESVD was found based on a LWORK query to PZGESVD. ==> I suspect there is a bug in the way LWORK is calculated when IA /= JA or maybe when M /= N. So, I increased the size of LWORK.

Is this a bug? ==> Third problem, after I upped the LWORK above what was returned in the query, I got a "*** glibc detected *** <executable name>: malloc(): memory corruption: <hex address> ***. I suspect that maybe the calculations that produced the wrong sized LLWORK for PZGEBRD also produced incorrectly sized work arrays.

Note: I am working on non-square matrices with JobU="V" and JobVT="N". In every case, JA = 1, but IA varies.