ScaLAPACK Archives

[Scalapack] Bugs in integer workspace queries for P{S,D}LAQR1


Hi Jack, thanks for the bug report (and the fix!), see commit below. Best 
wishes, Cheers, Julien.

Begin forwarded message:

From: "Langou, Julien" 
<julien.langou@Domain.Removed<mailto:julien.langou@Domain.Removed>>
Subject: [ScaLAPACK SVN] r198 - in /scalapack/trunk/SRC: pdlaqr1.f pslaqr1.f
Date: March 24, 2014 at 2:00:05 PM EDT

Author: langou
Date: Mon Mar 24 14:00:04 2014
New Revision: 198

Log:

Bug fix from Jack Poulson, email sent on 03-24-2014.
Thanks Jack!

=============================================================================
Dear ScaLAPACK developers,

I have been experimenting with ScaLAPACK's AED implementations and my drivers
were crashing for small problem sizes. I subsequently found and fixed the
problem: P{S,D}LAQR1 is not setting IWORK(1)=3 when the integer workspace is
queries, but it is accessing the first three entries of IWORK during normal
operation.

The reason that this causes crashes for tiny matrices is that large matrices
will result in P{S,D}HSEQR also querying workspaces from P{S,D}LAQR0, and the
integer workspace query will almost certainly be larger than 3.

You can find my two-line changesets here:
  https://github.com/poulson/scalapack/commits/master

Please let me know if it is better to submit this to the forum instead.

Jack
=============================================================================



Modified:
   scalapack/trunk/SRC/pdlaqr1.f
   scalapack/trunk/SRC/pslaqr1.f

Modified: scalapack/trunk/SRC/pdlaqr1.f
==============================================================================
--- scalapack/trunk/SRC/pdlaqr1.f (original)
+++ scalapack/trunk/SRC/pdlaqr1.f Mon Mar 24 14:00:04 2014
@@ -340,6 +340,7 @@
     $             +6*LDS*LDS )
      IF( LWORK.EQ.-1 .OR. ILWORK.EQ.-1 ) THEN
         WORK( 1 ) = DBLE( LWKOPT )
+         IWORK( 1 ) = 3
         RETURN
      ELSEIF( LWORK.LT.LWKOPT ) THEN
         INFO = -15

Modified: scalapack/trunk/SRC/pslaqr1.f
==============================================================================
--- scalapack/trunk/SRC/pslaqr1.f (original)
+++ scalapack/trunk/SRC/pslaqr1.f Mon Mar 24 14:00:04 2014
@@ -340,6 +340,7 @@
     $             +6*LDS*LDS )
      IF( LWORK.EQ.-1 .OR. ILWORK.EQ.-1 ) THEN
         WORK( 1 ) = FLOAT( LWKOPT )
+         IWORK( 1 ) = 3
         RETURN
      ELSEIF( LWORK.LT.LWKOPT ) THEN
         INFO = -15



On Mar 24, 2014, at 9:16 AM, Jack Poulson 
<jpoulson@Domain.Removed<mailto:jpoulson@Domain.Removed>> wrote:

Dear ScaLAPACK developers,

I have been experimenting with ScaLAPACK's AED implementations and my
drivers were crashing for small problem sizes. I subsequently found and
fixed the problem: P{S,D}LAQR1 is not setting IWORK(1)=3 when the
integer workspace is queries, but it is accessing the first three
entries of IWORK during normal operation.

The reason that this causes crashes for tiny matrices is that large
matrices will result in P{S,D}HSEQR also querying workspaces from
P{S,D}LAQR0, and the integer workspace query will almost certainly be
larger than 3.

You can find my two-line changesets here:
   https://github.com/poulson/scalapack/commits/master

Please let me know if it is better to submit this to the forum instead.

Jack

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.eecs.utk.edu/mailman/private/scalapack/attachments/20140324/f40e5e93/attachment.html>

<Prev in Thread] Current Thread [Next in Thread>


For additional information you may use the LAPACK/ScaLAPACK Forum.
Or one of the mailing lists, or