Age | Commit message (Collapse) | Author | Files | Lines |
|
Now each routine should have the correct list of arguments.
This allowed to detect and fix problems in parameter description of many routines.
|
|
Mozartova
|
|
Mozartova (INTEL)
|
|
|
|
Sandgren on Oct 22nd on lapack mailing list
|
|
|
|
Doxygen html documentation
|
|
|
|
|
|
xerbla was called without SRNAMT and INFOT.
Actually the problem was that the CSD routines did not have error exits.
So I added them, and i also modified the source files because info was not set correctly.
|
|
|
|
|
|
|
|
|
|
double', 'make complex', 'make complex16' functionality. Specifically, DSLASRC was included as a dependency for single and double, and ZCLASRC as a dependency for complex and complex16. Also, a few modifications for the case when USEXBLAS is defined to enable 'make single', 'make double' etc. For more info refer to LAPACK-DEV google group 'LAPACK SRC/Makefile question?' thread.
|
|
details
|
|
lapack_install target
|
|
|
|
|
|
Doxygen documentation
|
|
|
|
|
|
|
|
This means that if you change one file, all testings will be rerun.
Should we be smarter than that?
|
|
needed.
The following variables will control the precision to be built:
BUILD_SINGLE
BUILD_DOUBLE
BUILD_COMPLEX
BUILD_COMPLEX16
For mixed precision SINGLE/DOUBLE routines, both BUILD_SINGLE and BUILD_DOUBLE needs to be on.
(same for COMPLEX/COMPLEX16)
|
|
Patch was based on 3.3.0, so required a little bit of merging.
Thank you Sven for the corrections.
Julie
JL
TESTING/EIG
zerrgg.f
Declare ILO, IHI
SRC
---
I have corrected all the following warnings and errors:
c/d/s/zsysv.f, Unused external reference ILAENV
>JL OK
c/d/s/zsysv.f, Unused local variable NB
>JL ALREADY CORRECTED
sgsvj0.f, Unused intrinsic AMIN1
> JL OK
d/sorbdb.f, Unused intrinsic MIN
> JL OK
sorcsd.f, Unused intrinsic SIN
sorcsd.f, Unused intrinsic COS
> JL OK MERGE
cpoequb.f, Unused intrinsic AIMAG
cpoequb.f, Unused intrinsic REAL
cpoequb.f, Unused local variable ZDUM
zgeequb.f, REAL --> DBLE
> JL OK
sorcsd.f, line 330: Inconsistent data type REAL (previously INTEGER) for argument 14 in reference to SORBDB
sorcsd.f, line 340: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 345: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 356: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 363: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 369: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 374: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 385: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 392: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 399: Inconsistent data type REAL (previously INTEGER) for argument 9 in reference to SBBCSD
> JL OK MERGE
ila(s/d/c/z)lr.f
In the WHILE loop, at about line 59 I inserted
IF (I.EQ.0) THEN
EXIT
END IF
since, otherwise when I = 0, A(0,J) is referenced.
> JL OK
TESTING/MATGEN
--------------
s/dlatm7.f
line 187: I replaced
IF( N.GT.1 ) THEN
by
IF( N.GT.1 .AND. RANK.GT.1 ) THEN
Otherwise I get a division by zero.
> JL OK
s/dlaror.f
I moved:
INFO = 0
from line 125 to line 121 in front of
IF( N.EQ.0 .OR. M.EQ.0 )
$ RETURN
otherwise INFO is not defined on return when N or M are zero.
Similar change for
c/zlaror.f
> JL OK
TESTING/LIN
-----------
s/derrsy.f
In calls to S/DSYTRI2: I replaced IW by IW(1) since the dummy argument
(LWORK) is a scalar.
> JL OK
c/zerrrfp.f
I made ALPHA and BETA REAL/DOUBLE and introduced COMPLEX/COMPLEX*16
CALPHA since calls to C/ZHFRK need real alpha and beta. In calls to
CTFSM, I then replaced ALPHA with CALPHA.
In cerrrfp.f, I replaced 1.0D0 with 1.0E0 (not strictly necessary, but
cleaner).
> JL OK
dpot06.f
Removed the unused declaration of LSAME
> JL OK
d/zdrvac.f
Removed the unused declaration of LSAME
> JL OK MERGE
s/d/c/z/ckcsd.f
Removed the unused declarations of S/D/C/ZLANGE, SIN and COS
> JL OK
c/zgennd.f
Removed the unused variable OUT
> JL already DONE
Corrected the following warnings and errors:
dchksy.f, Unused local variable MYWORK
> JL already DONE
ddrvgbx.f, line 792: Different number of arguments from the first call of DGBT02
> JL OK
cdrvgbx.f, line 726: Inconsistent data type REAL (previously COMPLEX) for argument 4 in reference to CLASET
cdrvgbx.f, line 728: Inconsistent data type REAL (previously COMPLEX) for argument 4 in reference to CLASET
cdrvgbx.f, line 780: Inconsistent data type REAL (previously COMPLEX) for argument 10 in reference to CGBT01
cdrvgbx.f, line 794: Different number of arguments from the first call of CGBT02
> JL OK
zdrvgbx.f, line 726: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 4 in reference to ZLASET
zdrvgbx.f, line 728: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 4 in reference to ZLASET
zdrvgbx.f, line 780: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 10 in reference to ZGBT01
zdrvgbx.f, line 794: Different number of arguments from the first call of ZGBT02
> JL OK
TESTING/EIG
-----------
s/d/c/zchkee.f
I inserted
CALL XLAENV( 12, 1 )
at line 1208, since IPARMS(ISPEC) with ISPEC = 12 needs to be set.
(I think I had to do this with them all, certainly with zchkee.f)
> JL OK zchkee.f cchkee.f
c/zchkee.f
In line 2316, the 15th argument of C/ZCKCSD should be real, not complex,
so I replaced A(1,7) by RWORK.
> JL OK
c/zcsdts.f
In calls to C/ZHERK I have replaced ONE by REALONE as arguments 5 and 8
should be real.
> JL OK
s/d/c/zcsdts.f
Division by zero occurs at line 155 in computing EPS when M = 0, so I
have modified
EPS2 = MAX( ULP, CLANGE( '1', M, M, WORK, LDX, RWORK ) / REAL( M ) )
to
IF (M.GT.0) THEN
EPS2 = MAX( ULP,
$ CLANGE( '1', M, M, WORK, LDX, RWORK ) / REAL( M ) )
ELSE
EPS2 = ULP
END IF
> JL OK
SRC/VARIANTS/lu/CR
------------------
s/d/c/zgetrf
Removed the unused intrinsic MOD
> JL OK
|
|
"We notice that errorcheckers tests aren’t correct in some cases.
errorcheckers of ?ggevx, ?pstrf, ?pstf2
Some output parameters are read only in the errorcheckers tests."
|
|
reported by omitrofa (olga.mitrofanova@intel.com)
See Forum 2644
Test of CHERFSX function doesn't work because there is an error
in ../TESTING/LIN/cerrhex.f ( lines 284-330 ).
This function uses the diagonal pivoting factorization of a Hermitian
indefinite matrix instead of the diagonal pivoting factorization of
a Hermitian indefinite packed matrix. When CHERFSX is included in
conditional "IF( LSAMEN( 2, C2, 'HE' ) ) THEN " the test works.
|
|
Replace SNGL by REAL
|
|
|
|
xQRT04 tests xGEQRT and xGEMQRT
xQRT05 tests xTPQRT and xTPMQRT
|
|
Here is a patch for lapack to provide MS-format dll import libraries
from the MinGW GNU toolchain. It is ready for others to try before it
goes upstream. You just need to have MinGW GNU Fortran 4.x and one of
the VS IDEs installed. Configure a MinGW build with BUILD_SHARED_LIBS
set to ON. The resulting build (and install) tree will provide both
GNU-format and MS-format import libraries for the DLLs.
A C application built with MSVC and linked to the MinGW-built lapack
DLLs will run but requires the GNU runtime DLLs from MinGW to be available.
I tested this with both 32-bit and 64-bit builds. For the latter I used
the mingw64 gfortran. In both cases I just put the GNU runtime directory
in my PATH. I think both libgfortran-3.dll and libgcc_s_dw2-1.dll are
needed.
This may be used to create a binary LAPACK distribution for Windows that
will work without any GNU tools installed. One needs only to provide the
MinGW GNU runtime libraries along with blas.dll and lapack.dll.
-Brad
|
|
|
|
(generalization of triangle-over-square and triangle-over-triangle)
|
|
general matrices
|
|
lapack_testing.py has been moved to the top directory
One argument was added :
- d [dir] is to indicate where is the LAPACK testing directory (.out files). By default, the script will use .-d or --dir to
The -f argument was replaced by -r argument. Now by default the script will use the LAPACK output.
- r is to use to run the LAPACK tests then analyse the output (.out files). By default, the script will not run all the LAPACK tests
INTEGRATION:
Integration of the LAPACK Testing parsing in the Makefile and CMake build process.
In the Makefile build: now the lapack_testing target will call the script after running the tests
In the CMAKE build: after the tests are run, the script will be executed with the option -s (short)
the end of the output will look like this:
100% tests passed, 0 tests failed out of 98
Total Test time (real) = 211.83 sec
SUMMARY numerical error other error
================ ================= ================
REAL 40 (0.004%) 0 (0.000%)
DOUBLE PRECISION 202 (0.020%) 0 (0.000%)
COMPLEX 2 (0.000%) 0 (0.000%)
COMPLEX16 28 (0.005%) 0 (0.000%)
--> ALL PRECISIONS 272 (0.009%) 0 (0.000%)
|
|
|
|
|
|
suggestions:
1) combine Illegal Error and Info Error as one number in the SUMMARY
2) give % values in addition in the SUMMARY, something like: 203 (.01%)
|
|
Below is the help that goes with it.
Please send feedback. I tired to include several levels of output and several kind of errors
So far, I just tested it on my machine, that has no major problems.
I just tested "numerical errors", not "illegal error" neither "info error".
The goal is to have our nightly testing use it and also users.
TO DO:
- Test other kinds of errors on machines
- See to include it in ctest and buildbot (need to contact Don and Brad/Chuck)
- See if a type of error option is required.
./lapack_testing.py [-h|--help] [-s |--short] [-f |--file] [-e |--error] [-p p |--prec p] [-t test |--test test] [-n | --number]
- h is to print this message
- f is to use directly the output of the LAPACK testing (.out files). By default, the script will run all the LAPACK tests
LEVEL OF OUTPUT
- x is to print a detailed summary
- e is to print only the error summary
- s is to print a short summary
- n is to print the numbers of failing tests (turn on summary mode)
SECLECTION OF TESTS:
- p [s/c/d/z] is to indicate the PRECISION to run:
s=single
d=double
c=complex
z=double complex
x=all [DEFAULT]
- t [lin/eig/mixed/rfp/all] is to indicate which TEST FAMILY to run:
lin=Linear Equation
eig=Eigen Problems
mixed=mixed-precision
rfp=rfp format
all=all tests [DEFAULT]
EXAMPLES:
./lapack_testing.py -n -f
Will return the numbers of failed tests by analyzing the LAPACK output
./lapack_testing.py -n -f -p s
Will return the numbers of failed tests in REAL precision by analyzing the LAPACK output
./lapack_testing.py -n -f -p s -t eig
Will return the numbers of failed tests in REAL precision by analyzing only the LAPACK output of EIGEN testings
Written by Julie Langou (June 2011)
|
|
requirements (see commit r984 in SRC).
|
|
|
|
"Why does Lapack have the routines named ?la_rpvgrw if they are intended for general matrices? Should not their names be ?la_gerpvgrw instead?"
THIS IS THUS A CHANGE IN INTERFACE
|
|
LWORK being too small in some cases in the 'V' option when eigenvectors are computed for the dense matrix.
|
|
Cleanup some codes, like unused variables.
Used -Walls to detect problems.
|
|
|
|
Typo in the description of cla_porcond_c and cla_porcond_x.
( zla_porcond_c and zla_porcond_x are good, just the c versions have the typos.)
|
|
in the comments about the **T and **H. Proof that it was a good idea to make
clear what this $#@! "A'" meant. (In this case it was used to mean either A**T
in the case of cgtsv or A**H in the case of claqsb.)
|
|
For case 1, the routine will call DLASCL that requires a 4*N workspace.
Following a bug report from Hatem:
I am calling this function to only compute the singular
values from the bidiagonal matrix I just got after the 2nd stage.
The function comments say that the workspace should be
case 1: 2*N if NCVT = NRU = NCC = 0 (basically no singular vectors computed)
case 2: 4*N-4 otherwise.
I allocated the corresponding size for work in my program (i.e. 2*N) and
call the lapackE interface of this function (LAPACKE_zbdsqr_work).
And I get a "double free or corruption (!prev)" when I deallocate
work.
When I call instead LAPACKE_zbdsqr (I let the wrapper
now doing the allocation of work), it passes.
I looked inside LAPACKE_zbdsqr to check the size of work and
it seems to be 4*N across the board (for both cases 1 and 2).
Now, if I call back LAPACKE_zbdsqr_work and I allocate work
using 4*N, it passes.
Is it a bug?
Thanks for your time,
Hatem
|
|
To get the manpages correcty generated.
From Tobias:
|RPMLINT prints the following warning - and I think it is correct that
Fortran's .NOT. is misread as NOT. macro.
Tobias
RPMLINT report:
===============
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/slaqr3.3.gz 351: warning: macro `NOT.BULGE' not defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/dlaqr3.3.gz 351: warning: macro `NOT.BULGE' not defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/lsametst.3.gz 53: warning: macro `NOT.LSAME(' not
defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/slaqr2.3.gz 317: warning: macro `NOT.BULGE' not defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/dlaqr2.3.gz 317: warning: macro `NOT.BULGE' not defined
This man page may contain problems that can cause it not to be formatted as
intended.|
|