From 9ba7ed6c83aaa9ff552c5f329e22f4c6fb201530 Mon Sep 17 00:00:00 2001 From: Dmitry Baksheev Date: Thu, 11 Feb 2016 20:56:15 +0700 Subject: [PATCH 1/7] ?laref functions operate on local data -> all args are local --- SRC/claref.f | 30 +++++++++++++++++------------- SRC/dlaref.f | 30 +++++++++++++++++------------- SRC/slaref.f | 30 +++++++++++++++++------------- SRC/zlaref.f | 30 +++++++++++++++++------------- 4 files changed, 68 insertions(+), 52 deletions(-) diff --git a/SRC/claref.f b/SRC/claref.f index 5189ed2..544a683 100644 --- a/SRC/claref.f +++ b/SRC/claref.f @@ -22,37 +22,41 @@ * ======= * * CLAREF applies one or several Householder reflectors of size 3 -* to one or two matrices (if column is specified) on either their -* rows or columns. +* to one or two local matrices (if column is specified) on either +* their rows or columns. +* +* This routine does not involve communication of the processes. * * Arguments * ========= * -* TYPE (global input) CHARACTER*1 +* TYPE (local input) CHARACTER*1 * If 'R': Apply reflectors to the rows of the matrix * (apply from left) * Otherwise: Apply reflectors to the columns of the matrix * Unchanged on exit. * -* A (global input/output) COMPLEX array, (LDA,*) -* On entry, the matrix to receive the reflections. +* A (local input/output) COMPLEX array, (LDA,*) +* On entry, the local (part of a global) matrix +* to receive the reflections. * The updated matrix on exit. * * LDA (local input) INTEGER * On entry, the leading dimension of A. Unchanged on exit. * -* WANTZ (global input) LOGICAL +* WANTZ (local input) LOGICAL * If .TRUE., then apply any column reflections to Z as well. * If .FALSE., then do no additional work on Z. * -* Z (global input/output) COMPLEX array, (LDZ,*) -* On entry, the second matrix to receive column reflections. +* Z (local input/output) COMPLEX array, (LDZ,*) +* On entry, the local (part of the global) second matrix +* to receive column reflections. * This is changed only if WANTZ is set. * * LDZ (local input) INTEGER * On entry, the leading dimension of Z. Unchanged on exit. * -* BLOCK (global input) LOGICAL +* BLOCK (local input) LOGICAL * If .TRUE., then apply several reflectors at once and read * their data from the VECS array. * If .FALSE., apply the single reflector given by V2, V3, @@ -67,12 +71,12 @@ * On entry, the local column element of A. * Undefined on output. * -* ISTART (global input) INTEGER +* ISTART (local input) INTEGER * Specifies the "number" of the first reflector. This is * used as an index into VECS if BLOCK is set. * ISTART is ignored if BLOCK is .FALSE.. * -* ISTOP (global input) INTEGER +* ISTOP (local input) INTEGER * Specifies the "number" of the last reflector. This is * used as an index into VECS if BLOCK is set. * ISTOP is ignored if BLOCK is .FALSE.. @@ -90,7 +94,7 @@ * These serve the same purpose as ITMP1,ITMP2 but for Z * when WANTZ is set. * -* VECS (global input) COMPLEX array of size 3*N (matrix size) +* VECS (local input) COMPLEX array of size 3*N (matrix size) * This holds the size 3 reflectors one after another and this * is only accessed when BLOCK is .TRUE. * @@ -98,7 +102,7 @@ * V3 * T1 * T2 -* T3 (global input/output) COMPLEX +* T3 (local input/output) COMPLEX * This holds information on a single size 3 Householder * reflector and is read when BLOCK is .FALSE., and * overwritten when BLOCK is .TRUE. diff --git a/SRC/dlaref.f b/SRC/dlaref.f index 1a38bc6..bcf0a99 100644 --- a/SRC/dlaref.f +++ b/SRC/dlaref.f @@ -23,37 +23,41 @@ * ======= * * DLAREF applies one or several Householder reflectors of size 3 -* to one or two matrices (if column is specified) on either their -* rows or columns. +* to one or two local matrices (if column is specified) on either +* their rows or columns. +* +* This routine does not involve communication of the processes. * * Arguments * ========= * -* TYPE (global input) CHARACTER*1 +* TYPE (local input) CHARACTER*1 * If 'R': Apply reflectors to the rows of the matrix * (apply from left) * Otherwise: Apply reflectors to the columns of the matrix * Unchanged on exit. * -* A (global input/output) DOUBLE PRECISION array, (LDA,*) -* On entry, the matrix to receive the reflections. +* A (local input/output) DOUBLE PRECISION array, (LDA,*) +* On entry, the local (part of a global) matrix +* to receive the reflections. * The updated matrix on exit. * * LDA (local input) INTEGER * On entry, the leading dimension of A. Unchanged on exit. * -* WANTZ (global input) LOGICAL +* WANTZ (local input) LOGICAL * If .TRUE., then apply any column reflections to Z as well. * If .FALSE., then do no additional work on Z. * -* Z (global input/output) DOUBLE PRECISION array, (LDZ,*) -* On entry, the second matrix to receive column reflections. +* Z (local input/output) DOUBLE PRECISION array, (LDZ,*) +* On entry, the local (part of the global) second matrix +* to receive column reflections. * This is changed only if WANTZ is set. * * LDZ (local input) INTEGER * On entry, the leading dimension of Z. Unchanged on exit. * -* BLOCK (global input) LOGICAL +* BLOCK (local input) LOGICAL * If .TRUE., then apply several reflectors at once and read * their data from the VECS array. * If .FALSE., apply the single reflector given by V2, V3, @@ -68,12 +72,12 @@ * On entry, the local column element of A. * Undefined on output. * -* ISTART (global input) INTEGER +* ISTART (local input) INTEGER * Specifies the "number" of the first reflector. This is * used as an index into VECS if BLOCK is set. * ISTART is ignored if BLOCK is .FALSE.. * -* ISTOP (global input) INTEGER +* ISTOP (local input) INTEGER * Specifies the "number" of the last reflector. This is * used as an index into VECS if BLOCK is set. * ISTOP is ignored if BLOCK is .FALSE.. @@ -91,7 +95,7 @@ * These serve the same purpose as ITMP1,ITMP2 but for Z * when WANTZ is set. * -* VECS (global input) DOUBLE PRECISION array of size 3*N (matrix +* VECS (local input) DOUBLE PRECISION array of size 3*N (matrix * size) * This holds the size 3 reflectors one after another and this * is only accessed when BLOCK is .TRUE. @@ -100,7 +104,7 @@ * V3 * T1 * T2 -* T3 (global input/output) DOUBLE PRECISION +* T3 (local input/output) DOUBLE PRECISION * This holds information on a single size 3 Householder * reflector and is read when BLOCK is .FALSE., and * overwritten when BLOCK is .TRUE. diff --git a/SRC/slaref.f b/SRC/slaref.f index 3639132..85bd19a 100644 --- a/SRC/slaref.f +++ b/SRC/slaref.f @@ -23,37 +23,41 @@ * ======= * * SLAREF applies one or several Householder reflectors of size 3 -* to one or two matrices (if column is specified) on either their -* rows or columns. +* to one or two local matrices (if column is specified) on either +* their rows or columns. +* +* This routine does not involve communication of the processes. * * Arguments * ========= * -* TYPE (global input) CHARACTER*1 +* TYPE (local input) CHARACTER*1 * If 'R': Apply reflectors to the rows of the matrix * (apply from left) * Otherwise: Apply reflectors to the columns of the matrix * Unchanged on exit. * -* A (global input/output) REAL array, (LDA,*) -* On entry, the matrix to receive the reflections. +* A (local input/output) REAL array, (LDA,*) +* On entry, the local (part of a global) matrix +* to receive the reflections. * The updated matrix on exit. * * LDA (local input) INTEGER * On entry, the leading dimension of A. Unchanged on exit. * -* WANTZ (global input) LOGICAL +* WANTZ (local input) LOGICAL * If .TRUE., then apply any column reflections to Z as well. * If .FALSE., then do no additional work on Z. * -* Z (global input/output) REAL array, (LDZ,*) -* On entry, the second matrix to receive column reflections. +* Z (local input/output) REAL array, (LDZ,*) +* On entry, the local (part of the global) second matrix +* to receive column reflections. * This is changed only if WANTZ is set. * * LDZ (local input) INTEGER * On entry, the leading dimension of Z. Unchanged on exit. * -* BLOCK (global input) LOGICAL +* BLOCK (local input) LOGICAL * If .TRUE., then apply several reflectors at once and read * their data from the VECS array. * If .FALSE., apply the single reflector given by V2, V3, @@ -68,12 +72,12 @@ * On entry, the local column element of A. * Undefined on output. * -* ISTART (global input) INTEGER +* ISTART (local input) INTEGER * Specifies the "number" of the first reflector. This is * used as an index into VECS if BLOCK is set. * ISTART is ignored if BLOCK is .FALSE.. * -* ISTOP (global input) INTEGER +* ISTOP (local input) INTEGER * Specifies the "number" of the last reflector. This is * used as an index into VECS if BLOCK is set. * ISTOP is ignored if BLOCK is .FALSE.. @@ -91,7 +95,7 @@ * These serve the same purpose as ITMP1,ITMP2 but for Z * when WANTZ is set. * -* VECS (global input) REAL array of size 3*N (matrix +* VECS (local input) REAL array of size 3*N (matrix * size) * This holds the size 3 reflectors one after another and this * is only accessed when BLOCK is .TRUE. @@ -100,7 +104,7 @@ * V3 * T1 * T2 -* T3 (global input/output) REAL +* T3 (local input/output) REAL * This holds information on a single size 3 Householder * reflector and is read when BLOCK is .FALSE., and * overwritten when BLOCK is .TRUE. diff --git a/SRC/zlaref.f b/SRC/zlaref.f index 0e86a96..ea33d24 100644 --- a/SRC/zlaref.f +++ b/SRC/zlaref.f @@ -22,37 +22,41 @@ * ======= * * ZLAREF applies one or several Householder reflectors of size 3 -* to one or two matrices (if column is specified) on either their -* rows or columns. +* to one or two local matrices (if column is specified) on either +* their rows or columns. +* +* This routine does not involve communication of the processes. * * Arguments * ========= * -* TYPE (global input) CHARACTER*1 +* TYPE (local input) CHARACTER*1 * If 'R': Apply reflectors to the rows of the matrix * (apply from left) * Otherwise: Apply reflectors to the columns of the matrix * Unchanged on exit. * -* A (global input/output) COMPLEX*16 array, (LDA,*) -* On entry, the matrix to receive the reflections. +* A (local input/output) COMPLEX*16 array, (LDA,*) +* On entry, the local (part of a global) matrix +* to receive the reflections. * The updated matrix on exit. * * LDA (local input) INTEGER * On entry, the leading dimension of A. Unchanged on exit. * -* WANTZ (global input) LOGICAL +* WANTZ (local input) LOGICAL * If .TRUE., then apply any column reflections to Z as well. * If .FALSE., then do no additional work on Z. * -* Z (global input/output) COMPLEX*16 array, (LDZ,*) -* On entry, the second matrix to receive column reflections. +* Z (local input/output) COMPLEX*16 array, (LDZ,*) +* On entry, the local (part of the global) second matrix +* to receive column reflections. * This is changed only if WANTZ is set. * * LDZ (local input) INTEGER * On entry, the leading dimension of Z. Unchanged on exit. * -* BLOCK (global input) LOGICAL +* BLOCK (local input) LOGICAL * If .TRUE., then apply several reflectors at once and read * their data from the VECS array. * If .FALSE., apply the single reflector given by V2, V3, @@ -67,12 +71,12 @@ * On entry, the local column element of A. * Undefined on output. * -* ISTART (global input) INTEGER +* ISTART (local input) INTEGER * Specifies the "number" of the first reflector. This is * used as an index into VECS if BLOCK is set. * ISTART is ignored if BLOCK is .FALSE.. * -* ISTOP (global input) INTEGER +* ISTOP (local input) INTEGER * Specifies the "number" of the last reflector. This is * used as an index into VECS if BLOCK is set. * ISTOP is ignored if BLOCK is .FALSE.. @@ -90,7 +94,7 @@ * These serve the same purpose as ITMP1,ITMP2 but for Z * when WANTZ is set. * -* VECS (global input) COMPLEX*16 array of size 3*N (matrix size) +* VECS (local input) COMPLEX*16 array of size 3*N (matrix size) * This holds the size 3 reflectors one after another and this * is only accessed when BLOCK is .TRUE. * @@ -98,7 +102,7 @@ * V3 * T1 * T2 -* T3 (global input/output) COMPLEX*16 +* T3 (local input/output) COMPLEX*16 * This holds information on a single size 3 Householder * reflector and is read when BLOCK is .FALSE., and * overwritten when BLOCK is .TRUE. -- 2.6.3 From d6811e9aad5d9603d40dd557be79e05490b8ee1c Mon Sep 17 00:00:00 2001 From: Dmitry Baksheev Date: Thu, 11 Feb 2016 21:33:19 +0700 Subject: [PATCH 2/7] p?laconsb - fix local/global attribute of parameters --- SRC/pclaconsb.f | 10 +++++----- SRC/pdlaconsb.f | 10 +++++----- SRC/pslaconsb.f | 10 +++++----- SRC/pzlaconsb.f | 10 +++++----- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/SRC/pclaconsb.f b/SRC/pclaconsb.f index aaaf249..1250582 100644 --- a/SRC/pclaconsb.f +++ b/SRC/pclaconsb.f @@ -80,10 +80,10 @@ * Arguments * ========= * -* A (global input) COMPLEX array, dimension +* A (local input) COMPLEX array, dimension * (DESCA(LLD_),*) -* On entry, the Hessenberg matrix whose tridiagonal part is -* being scanned. +* On entry, the local part of distributed Hessenberg matrix +* whose tridiagonal part is being scanned. * Unchanged on exit. * * DESCA (global and local input) INTEGER array of dimension DLEN_. @@ -108,9 +108,9 @@ * H43H34 (global input) COMPLEX * These three values are for the double shift QR iteration. * -* BUF (local output) COMPLEX array of size LWORK. +* BUF (local workspace) COMPLEX array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 7*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) diff --git a/SRC/pdlaconsb.f b/SRC/pdlaconsb.f index 1323a20..9b7602f 100644 --- a/SRC/pdlaconsb.f +++ b/SRC/pdlaconsb.f @@ -80,10 +80,10 @@ * Arguments * ========= * -* A (global input) DOUBLE PRECISION array, dimension +* A (local input) DOUBLE PRECISION array, dimension * (DESCA(LLD_),*) -* On entry, the Hessenberg matrix whose tridiagonal part is -* being scanned. +* On entry, the local part of distributed Hessenberg matrix +* whose tridiagonal part is being scanned. * Unchanged on exit. * * DESCA (global and local input) INTEGER array of dimension DLEN_. @@ -108,9 +108,9 @@ * H43H34 (global input) DOUBLE PRECISION * These three values are for the double shift QR iteration. * -* BUF (local output) DOUBLE PRECISION array of size LWORK. +* BUF (local workspace) DOUBLE PRECISION array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 7*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) diff --git a/SRC/pslaconsb.f b/SRC/pslaconsb.f index 9aa7fd2..535798f 100644 --- a/SRC/pslaconsb.f +++ b/SRC/pslaconsb.f @@ -80,10 +80,10 @@ * Arguments * ========= * -* A (global input) REAL array, dimension +* A (local input) REAL array, dimension * (DESCA(LLD_),*) -* On entry, the Hessenberg matrix whose tridiagonal part is -* being scanned. +* On entry, the local part of distributed Hessenberg matrix +* whose tridiagonal part is being scanned. * Unchanged on exit. * * DESCA (global and local input) INTEGER array of dimension DLEN_. @@ -108,9 +108,9 @@ * H43H34 (global input) REAL * These three values are for the double shift QR iteration. * -* BUF (local output) REAL array of size LWORK. +* BUF (local workspace) REAL array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 7*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) diff --git a/SRC/pzlaconsb.f b/SRC/pzlaconsb.f index eca2508..332612a 100644 --- a/SRC/pzlaconsb.f +++ b/SRC/pzlaconsb.f @@ -80,10 +80,10 @@ * Arguments * ========= * -* A (global input) COMPLEX*16 array, dimension +* A (local input) COMPLEX*16 array, dimension * (DESCA(LLD_),*) -* On entry, the Hessenberg matrix whose tridiagonal part is -* being scanned. +* On entry, the local part of distributed Hessenberg matrix +* whose tridiagonal part is being scanned. * Unchanged on exit. * * DESCA (global and local input) INTEGER array of dimension DLEN_. @@ -108,9 +108,9 @@ * H43H34 (global input) COMPLEX*16 * These three values are for the double shift QR iteration. * -* BUF (local output) COMPLEX*16 array of size LWORK. +* BUF (local workspace) COMPLEX*16 array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 7*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) -- 2.6.3 From a811b3b9043609e9125c08494b36f16ebf65bfd5 Mon Sep 17 00:00:00 2001 From: Dmitry Baksheev Date: Fri, 12 Feb 2016 10:52:17 +0700 Subject: [PATCH 3/7] p?lacp3 - parameter A is _local_ part of global matrix --- SRC/pclacp3.f | 5 +++-- SRC/pdlacp3.f | 5 +++-- SRC/pslacp3.f | 5 +++-- SRC/pzlacp3.f | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/SRC/pclacp3.f b/SRC/pclacp3.f index 831d432..21a2514 100644 --- a/SRC/pclacp3.f +++ b/SRC/pclacp3.f @@ -88,9 +88,10 @@ * A(I,I) is the global location that the copying starts from. * Unchanged on exit. * -* A (global input/output) COMPLEX array, dimension +* A (local input/output) COMPLEX array, dimension * (DESCA(LLD_),*) -* On entry, the parallel matrix to be copied into or from. +* On entry, the local part of distributed parallel matrix +* to be copied into or from. * On exit, if REV=1, the copied data. * Unchanged on exit if REV=0. * diff --git a/SRC/pdlacp3.f b/SRC/pdlacp3.f index 3b1aa0e..97eed19 100644 --- a/SRC/pdlacp3.f +++ b/SRC/pdlacp3.f @@ -89,9 +89,10 @@ * A(I,I) is the global location that the copying starts from. * Unchanged on exit. * -* A (global input/output) DOUBLE PRECISION array, dimension +* A (local input/output) DOUBLE PRECISION array, dimension * (DESCA(LLD_),*) -* On entry, the parallel matrix to be copied into or from. +* On entry, the local part of distributed parallel matrix +* to be copied into or from. * On exit, if REV=1, the copied data. * Unchanged on exit if REV=0. * diff --git a/SRC/pslacp3.f b/SRC/pslacp3.f index 0207f84..00edc42 100644 --- a/SRC/pslacp3.f +++ b/SRC/pslacp3.f @@ -89,9 +89,10 @@ * A(I,I) is the global location that the copying starts from. * Unchanged on exit. * -* A (global input/output) REAL array, dimension +* A (local input/output) REAL array, dimension * (DESCA(LLD_),*) -* On entry, the parallel matrix to be copied into or from. +* On entry, the local part of distributed parallel matrix +* to be copied into or from. * On exit, if REV=1, the copied data. * Unchanged on exit if REV=0. * diff --git a/SRC/pzlacp3.f b/SRC/pzlacp3.f index aa9b9cc..914f0a9 100644 --- a/SRC/pzlacp3.f +++ b/SRC/pzlacp3.f @@ -88,9 +88,10 @@ * A(I,I) is the global location that the copying starts from. * Unchanged on exit. * -* A (global input/output) COMPLEX*16 array, dimension +* A (local input/output) COMPLEX*16 array, dimension * (DESCA(LLD_),*) -* On entry, the parallel matrix to be copied into or from. +* On entry, the local part of distributed parallel matrix +* to be copied into or from. * On exit, if REV=1, the copied data. * Unchanged on exit if REV=0. * -- 2.6.3 From 922f6478d3b780935d37638e820d9f9c7f68be45 Mon Sep 17 00:00:00 2001 From: Dmitry Baksheev Date: Fri, 12 Feb 2016 11:06:02 +0700 Subject: [PATCH 4/7] p?lahqr - parameters A,Z are _local_ parts of global matrices --- SRC/pclahqr.f | 8 ++++---- SRC/pdlahqr.f | 8 ++++---- SRC/pslahqr.f | 6 +++--- SRC/pzlahqr.f | 8 ++++---- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/SRC/pclahqr.f b/SRC/pclahqr.f index 732bbfa..eef4a7f 100644 --- a/SRC/pclahqr.f +++ b/SRC/pclahqr.f @@ -105,9 +105,9 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) COMPLEX array, dimension +* A (local input/output) COMPLEX array, dimension * (DESCA(LLD_),*) -* On entry, the upper Hessenberg matrix A. +* On entry, the local part of upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper triangular in rows * and columns ILO:IHI. If WANTT is .FALSE., the contents of * A are unspecified on exit. @@ -128,7 +128,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) COMPLEX array. +* Z (local input/output) COMPLEX array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PCHSEQR, and on * exit Z has been updated; transformations are applied only to @@ -138,7 +138,7 @@ * DESCZ (global and local input) INTEGER array of dimension DLEN_. * The array descriptor for the distributed matrix Z. * -* WORK (local output) COMPLEX array of size LWORK +* WORK (local workspace) COMPLEX array of size LWORK * (Unless LWORK=-1, in which case WORK must be at least size 1) * * LWORK (local input) INTEGER diff --git a/SRC/pdlahqr.f b/SRC/pdlahqr.f index 7d857dd..5bf6e3b 100644 --- a/SRC/pdlahqr.f +++ b/SRC/pdlahqr.f @@ -100,9 +100,9 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) DOUBLE PRECISION array, dimension +* A (local input/output) DOUBLE PRECISION array, dimension * (DESCA(LLD_),*) -* On entry, the upper Hessenberg matrix A. +* On entry, the local part of upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper quasi-triangular in * rows and columns ILO:IHI, with any 2-by-2 or larger diagonal * blocks not yet in standard form. If WANTT is .FALSE., the @@ -131,7 +131,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) DOUBLE PRECISION array. +* Z (local input/output) DOUBLE PRECISION array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PDHSEQR, and on * exit Z has been updated; transformations are applied only to @@ -141,7 +141,7 @@ * DESCZ (global and local input) INTEGER array of dimension DLEN_. * The array descriptor for the distributed matrix Z. * -* WORK (local output) DOUBLE PRECISION array of size LWORK +* WORK (local workspace) DOUBLE PRECISION array of size LWORK * * LWORK (local input) INTEGER * WORK(LWORK) is a local array and LWORK is assumed big enough diff --git a/SRC/pslahqr.f b/SRC/pslahqr.f index 0753f51..d6e5f45 100644 --- a/SRC/pslahqr.f +++ b/SRC/pslahqr.f @@ -100,7 +100,7 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) REAL array, dimension +* A (local input/output) REAL array, dimension * (DESCA(LLD_),*) * On entry, the upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper quasi-triangular in @@ -131,7 +131,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) REAL array. +* Z (local input/output) REAL array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PDHSEQR, and on * exit Z has been updated; transformations are applied only to @@ -141,7 +141,7 @@ * DESCZ (global and local input) INTEGER array of dimension DLEN_. * The array descriptor for the distributed matrix Z. * -* WORK (local output) REAL array of size LWORK +* WORK (local workspace) REAL array of size LWORK * * LWORK (local input) INTEGER * WORK(LWORK) is a local array and LWORK is assumed big enough diff --git a/SRC/pzlahqr.f b/SRC/pzlahqr.f index b715455..809080a 100644 --- a/SRC/pzlahqr.f +++ b/SRC/pzlahqr.f @@ -105,9 +105,9 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) COMPLEX*16 array, dimension +* A (local input/output) COMPLEX*16 array, dimension * (DESCA(LLD_),*) -* On entry, the upper Hessenberg matrix A. +* On entry, the local part of upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper triangular in rows * and columns ILO:IHI. If WANTT is .FALSE., the contents of * A are unspecified on exit. @@ -128,7 +128,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) COMPLEX*16 array. +* Z (local input/output) COMPLEX*16 array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PZHSEQR, and on * exit Z has been updated; transformations are applied only to @@ -138,7 +138,7 @@ * DESCZ (global and local input) INTEGER array of dimension DLEN_. * The array descriptor for the distributed matrix Z. * -* WORK (local output) COMPLEX*16 array of size LWORK +* WORK (local workspace) COMPLEX*16 array of size LWORK * (Unless LWORK=-1, in which case WORK must be at least size 1) * * LWORK (local input) INTEGER -- 2.6.3 From c1b644f290f509292b336b0b95e3c814e9b62da7 Mon Sep 17 00:00:00 2001 From: Dmitry Baksheev Date: Fri, 12 Feb 2016 11:13:31 +0700 Subject: [PATCH 5/7] p?lasmsub - parameter A is local part of global matrix, LWORK is local parameter --- SRC/pclasmsub.f | 6 +++--- SRC/pdlasmsub.f | 6 +++--- SRC/pslasmsub.f | 6 +++--- SRC/pzlasmsub.f | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/SRC/pclasmsub.f b/SRC/pclasmsub.f index a21564f..7259ea3 100644 --- a/SRC/pclasmsub.f +++ b/SRC/pclasmsub.f @@ -77,7 +77,7 @@ * Arguments * ========= * -* A (global input) COMPLEX array, dimension (DESCA(LLD_),*) +* A (local input) COMPLEX array, dimension (DESCA(LLD_),*) * On entry, the Hessenberg matrix whose tridiagonal part is * being scanned. * Unchanged on exit. @@ -103,9 +103,9 @@ * On entry, a "small number" for the given matrix. * Unchanged on exit. * -* BUF (local output) COMPLEX array of size LWORK. +* BUF (local workspace) COMPLEX array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 2*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) diff --git a/SRC/pdlasmsub.f b/SRC/pdlasmsub.f index 1feda04..426b4d4 100644 --- a/SRC/pdlasmsub.f +++ b/SRC/pdlasmsub.f @@ -77,7 +77,7 @@ * Arguments * ========= * -* A (global input) DOUBLE PRECISION array, dimension +* A (local input) DOUBLE PRECISION array, dimension * (DESCA(LLD_),*) * On entry, the Hessenberg matrix whose tridiagonal part is * being scanned. @@ -104,9 +104,9 @@ * On entry, a "small number" for the given matrix. * Unchanged on exit. * -* BUF (local output) DOUBLE PRECISION array of size LWORK. +* BUF (local workspace) DOUBLE PRECISION array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 2*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) diff --git a/SRC/pslasmsub.f b/SRC/pslasmsub.f index 9872651..13d8518 100644 --- a/SRC/pslasmsub.f +++ b/SRC/pslasmsub.f @@ -77,7 +77,7 @@ * Arguments * ========= * -* A (global input) REAL array, dimension +* A (local input) REAL array, dimension * (DESCA(LLD_),*) * On entry, the Hessenberg matrix whose tridiagonal part is * being scanned. @@ -104,9 +104,9 @@ * On entry, a "small number" for the given matrix. * Unchanged on exit. * -* BUF (local output) REAL array of size LWORK. +* BUF (local workspace) REAL array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 2*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) diff --git a/SRC/pzlasmsub.f b/SRC/pzlasmsub.f index 969514e..7aff68c 100644 --- a/SRC/pzlasmsub.f +++ b/SRC/pzlasmsub.f @@ -77,7 +77,7 @@ * Arguments * ========= * -* A (global input) COMPLEX*16 array, dimension (DESCA(LLD_),*) +* A (local input) COMPLEX*16 array, dimension (DESCA(LLD_),*) * On entry, the Hessenberg matrix whose tridiagonal part is * being scanned. * Unchanged on exit. @@ -103,9 +103,9 @@ * On entry, a "small number" for the given matrix. * Unchanged on exit. * -* BUF (local output) COMPLEX*16 array of size LWORK. +* BUF (local workspace) COMPLEX*16 array of size LWORK. * -* LWORK (global input) INTEGER +* LWORK (local input) INTEGER * On exit, LWORK is the size of the work buffer. * This must be at least 2*Ceil( Ceil( (I-L)/HBL ) / * LCM(NPROW,NPCOL) ) -- 2.6.3 From 6b8f72522d29b369cc7953a433844047bb4696c1 Mon Sep 17 00:00:00 2001 From: Dmitry Baksheev Date: Fri, 12 Feb 2016 11:22:37 +0700 Subject: [PATCH 6/7] p?lawil - parameter A is local part of global matrix --- SRC/pclawil.f | 4 ++-- SRC/pdlawil.f | 4 ++-- SRC/pslawil.f | 2 +- SRC/pzlawil.f | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SRC/pclawil.f b/SRC/pclawil.f index 24a49b9..2ae7740 100644 --- a/SRC/pclawil.f +++ b/SRC/pclawil.f @@ -87,9 +87,9 @@ * On entry, this is where the transform starts (row M.) * Unchanged on exit. * -* A (global input) COMPLEX array, dimension +* A (local input) COMPLEX array, dimension * (DESCA(LLD_),*) -* On entry, the Hessenberg matrix. +* On entry, the local part of global Hessenberg matrix. * Unchanged on exit. * * DESCA (global and local input) INTEGER array of dimension DLEN_. diff --git a/SRC/pdlawil.f b/SRC/pdlawil.f index 90a4d74..4a2f917 100644 --- a/SRC/pdlawil.f +++ b/SRC/pdlawil.f @@ -87,9 +87,9 @@ * On entry, this is where the transform starts (row M.) * Unchanged on exit. * -* A (global input) DOUBLE PRECISION array, dimension +* A (local input) DOUBLE PRECISION array, dimension * (DESCA(LLD_),*) -* On entry, the Hessenberg matrix. +* On entry, the local part of global Hessenberg matrix. * Unchanged on exit. * * DESCA (global and local input) INTEGER array of dimension DLEN_. diff --git a/SRC/pslawil.f b/SRC/pslawil.f index e04c16b..bb9fb22 100644 --- a/SRC/pslawil.f +++ b/SRC/pslawil.f @@ -87,7 +87,7 @@ * On entry, this is where the transform starts (row M.) * Unchanged on exit. * -* A (global input) REAL array, dimension +* A (local input) REAL array, dimension * (DESCA(LLD_),*) * On entry, the Hessenberg matrix. * Unchanged on exit. diff --git a/SRC/pzlawil.f b/SRC/pzlawil.f index e89a9a3..8f62e22 100644 --- a/SRC/pzlawil.f +++ b/SRC/pzlawil.f @@ -87,9 +87,9 @@ * On entry, this is where the transform starts (row M.) * Unchanged on exit. * -* A (global input) COMPLEX*16 array, dimension +* A (local input) COMPLEX*16 array, dimension * (DESCA(LLD_),*) -* On entry, the Hessenberg matrix. +* On entry, the local part of global Hessenberg matrix. * Unchanged on exit. * * DESCA (global and local input) INTEGER array of dimension DLEN_. -- 2.6.3 From 73cfbc8e586fe3fcd40ea6a00cb591baeec77986 Mon Sep 17 00:00:00 2001 From: Dmitry Baksheev Date: Fri, 12 Feb 2016 11:31:34 +0700 Subject: [PATCH 7/7] p?laqr1, p?laqr4 - parameters A and Z are local parts of global matrices --- SRC/pdlaqr1.f | 8 ++++---- SRC/pdlaqr4.f | 6 +++--- SRC/pslaqr1.f | 8 ++++---- SRC/pslaqr4.f | 6 +++--- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/SRC/pdlaqr1.f b/SRC/pdlaqr1.f index 2226c75..867e290 100644 --- a/SRC/pdlaqr1.f +++ b/SRC/pdlaqr1.f @@ -120,9 +120,9 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) DOUBLE PRECISION array, dimension +* A (local input/output) DOUBLE PRECISION array, dimension * (DESCA(LLD_),*) -* On entry, the upper Hessenberg matrix A. +* On entry, the local part of global upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper quasi-triangular in * rows and columns ILO:IHI, with any 2-by-2 or larger diagonal * blocks not yet in standard form. If WANTT is .FALSE., the @@ -151,7 +151,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) DOUBLE PRECISION array. +* Z (local input/output) DOUBLE PRECISION array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PDHSEQR, and on * exit Z has been updated; transformations are applied only to @@ -161,7 +161,7 @@ * DESCZ (global and local input) INTEGER array of dimension DLEN_. * The array descriptor for the distributed matrix Z. * -* WORK (local output) DOUBLE PRECISION array of size LWORK +* WORK (local workspace) DOUBLE PRECISION array of size LWORK * * LWORK (local input) INTEGER * WORK(LWORK) is a local array and LWORK is assumed big enough diff --git a/SRC/pdlaqr4.f b/SRC/pdlaqr4.f index 105deaa..0409769 100644 --- a/SRC/pdlaqr4.f +++ b/SRC/pdlaqr4.f @@ -109,9 +109,9 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) DOUBLE PRECISION array, dimension +* A (local input/output) DOUBLE PRECISION array, dimension * (DESCA(LLD_),*) -* On entry, the upper Hessenberg matrix A. +* On entry, the local part of global upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper quasi-triangular in * rows and columns ILO:IHI, with any 2-by-2 or larger diagonal * blocks not yet in standard form. If WANTT is .FALSE., the @@ -140,7 +140,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) DOUBLE PRECISION array. +* Z (local input/output) DOUBLE PRECISION array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PDHSEQR, and on * exit Z has been updated; transformations are applied only to diff --git a/SRC/pslaqr1.f b/SRC/pslaqr1.f index a4d560a..bef4b04 100644 --- a/SRC/pslaqr1.f +++ b/SRC/pslaqr1.f @@ -120,9 +120,9 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) REAL array, dimension +* A (local input/output) REAL array, dimension * (DESCA(LLD_),*) -* On entry, the upper Hessenberg matrix A. +* On entry, the local part of global upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper quasi-triangular in * rows and columns ILO:IHI, with any 2-by-2 or larger diagonal * blocks not yet in standard form. If WANTT is .FALSE., the @@ -151,7 +151,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) REAL array. +* Z (local input/output) REAL array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PSHSEQR, and on * exit Z has been updated; transformations are applied only to @@ -161,7 +161,7 @@ * DESCZ (global and local input) INTEGER array of dimension DLEN_. * The array descriptor for the distributed matrix Z. * -* WORK (local output) REAL array of size LWORK +* WORK (local workspace) REAL array of size LWORK * * LWORK (local input) INTEGER * WORK(LWORK) is a local array and LWORK is assumed big enough diff --git a/SRC/pslaqr4.f b/SRC/pslaqr4.f index f47a5b4..5b1609b 100644 --- a/SRC/pslaqr4.f +++ b/SRC/pslaqr4.f @@ -109,9 +109,9 @@ * transformations to all of H if WANTT is .TRUE.. * 1 <= ILO <= max(1,IHI); IHI <= N. * -* A (global input/output) REAL array, dimension +* A (local input/output) REAL array, dimension * (DESCA(LLD_),*) -* On entry, the upper Hessenberg matrix A. +* On entry, the local part of global upper Hessenberg matrix A. * On exit, if WANTT is .TRUE., A is upper quasi-triangular in * rows and columns ILO:IHI, with any 2-by-2 or larger diagonal * blocks not yet in standard form. If WANTT is .FALSE., the @@ -140,7 +140,7 @@ * applied if WANTZ is .TRUE.. * 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. * -* Z (global input/output) REAL array. +* Z (local input/output) REAL array. * If WANTZ is .TRUE., on entry Z must contain the current * matrix Z of transformations accumulated by PDHSEQR, and on * exit Z has been updated; transformations are applied only to -- 2.6.3