Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
i.e. "A is TYPE array, dimension ( LDx, N )"
|
|
* Distributions might need to change the header dir
* Also change the template paths in the `.pc` files to
the idiomatic CMake `GNUInstallDirs` full paths,
which are always correct, regardless of whether the
user specified relative or absolute paths. This makes
the build system somewhat easier and more idiomatic.
|
|
cleanobj: Remove object files
cleanlib: Remove libraries
cleanexe: Remove test and example executables
cleantest: Remove test output and core dumps
clean: All of the above
|
|
Use the automatic variable $^ to refer to all prerequisites when
linking or creating an archive.
|
|
|
|
Removes duplication and allows error checking to be done in one spot.
Moved most of the status printouts to where the options are defined.
|
|
Allows any combination of types/precisions to be built at once.
Name the lists "SOURCES" instead of "ALLOBJ" since they contain lists of
source files, not object files.
Fix problems in BLAS: Was missing the ${CBLAS3} file set when building
with BLAS_COMPLEX. Was adding ${BLASLIB} as if it were a source file.
|
|
Move the test inputs into the TESTING dir.
|
|
|
|
This is really old school, but a lot of times we have users sending us
copy pasting of codes, and that is the only way to know the version of
the code.
|
|
Contribution by @turboencabulator
Closing #84
|
|
The prefix and libdir lines at the top of the .pc files are variable
declarations. Set these variables appropriately, reference them in the
rest of the file, and prevent cmake from expanding ${}-style references.
Switch back to @prefix@ and @libdir@ for compatibility with autoconf.
Make the descriptions consistent and update the URLs.
|
|
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the
block. This is no longer the preferred style.
NOTE: MUST USE GNU compliant version of sed
Run the following shell code:
for c in else endif endforeach endfunction endmacro endwhile; do
echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
done >convert.sed \
&& git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' \
| xargs -0 gsed -i -f convert.sed \
&& rm convert.sed
|
|
This is mostly a long term maintenance improvement.
Many coding styles require elimination of trailing whitespace, and
many editors and source code management configurations automatically
gobble up whitespace. When these tools gobble up whitespace, it
complicates reviewing the meaningful code changes.
By removing whitespace on one patch, it makes future
code reviews much easier.
=SCRIPT====================================================================
if which tempfile &>/dev/null; then
TEMPMAKER=tempfile
elif which mktemp &>/dev/null; then
TEMPMAKER=mktemp
else
echo "Cannot find tempfile program." 2>&1
exit 1
fi
MYTEMP=$($TEMPMAKER)
trap 'rm -f $MYTEMP' SIGINT SIGTERM
stripit() {
echo "stripping $1"
sed 's/[ \t]*$//' "$1" > $MYTEMP
cp $MYTEMP "$1"
}
if [ $# -gt 0 ]; then
while [ "$1" != "" ]; do
stripit $1
shift
done
else
while read -t 2; do
stripit $REPLY
done
fi
rm $MYTEMP
=================================================
|
|
This is mostly a long term maintenance improvement.
Many coding styles require elimination of trailing whitespace, and
many editors and source code management configurations automatically
gobble up whitespace. When these tools gobble up whitespace, it
complicates reviewing the meaningful code changes.
By removing whitespace on one patch, it makes future
code reviews much easier.
=SCRIPT====================================================================
if which tempfile &>/dev/null; then
TEMPMAKER=tempfile
elif which mktemp &>/dev/null; then
TEMPMAKER=mktemp
else
echo "Cannot find tempfile program." 2>&1
exit 1
fi
MYTEMP=$($TEMPMAKER)
trap 'rm -f $MYTEMP' SIGINT SIGTERM
stripit() {
echo "stripping $1"
sed 's/[ \t]*$//' "$1" > $MYTEMP
cp $MYTEMP "$1"
}
if [ $# -gt 0 ]; then
while [ "$1" != "" ]; do
stripit $1
shift
done
else
while read -t 2; do
stripit $REPLY
done
fi
rm $MYTEMP
=================================================
|
|
This is mostly a long term maintenance improvement.
Many coding styles require elimination of trailing whitespace, and
many editors and source code management configurations automatically
gobble up whitespace. When these tools gobble up whitespace, it
complicates reviewing the meaningful code changes.
By removing whitespace on one patch, it makes future
code reviews much easier.
|
|
Author: Sébastien Villemot <sebastien@debian.org>
Forwarded: yes, by email to lapack@cs.utk.edu on 2016-06-26
|
|
on March 1st 2016
|
|
|
|
See: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=4786
|
|
"One of the improvements with the patches is that SOVERSION and VERSION are now properly set and the proper symlinks are created:
```
liblapack.so -> liblapack.so.3
liblapack.so.3 -> liblapack.so.3.5.0
liblapack.so.3.5.0
```
Since BLAS is shipped with LAPACK and no separate version number is given for BLAS, I applied the same there, too."
Tested on Julie's Mac
TO DO: To test under Windows
====
Updated OSX RPATH settings
In response to CMake 3.0 generating warnings regarding policy CMP0042,
the OSX RPATH settings have been updated per recommendations found
in the CMake Wiki:
http://www.cmake.org/Wiki/CMake_RPATH_handling#Mac_OS_X_and_the_RPATH
|
|
B (or X) being zero to skip a loop so as to enable better NaN (or Inf)
propagation.
Taking DGEMM as an example, if you use notation:
C(I,J) = C(I,J) + alpha * A(I,L) * B(L,J),
the reference BLAS DGEMM is using the JLI version of matrix matrix multiply and
is checking, for each J (from 1 to N) and for each L (from 1 to K), whether
B(L,J) is zero (or not) to save (or not) the 2M following operations.
(See the "IF (B(L,J).NE.ZERO) THEN" in the code below.)
The snippets of code is as follows
DO 90 J = 1,N
DO 80 L = 1,K
IF (B(L,J).NE.ZERO) THEN
TEMP = ALPHA*B(L,J)
DO 70 I = 1,M
C(I,J) = C(I,J) + TEMP*A(I,L)
70 CONTINUE
END IF
80 CONTINUE
90 CONTINUE
This induces some non NaN-propagation in a pretty ad-hoc way. For better NaN
propagation, this patch removes the above IF statement.
The snippet of code now becomes
DO 90 J = 1,N
DO 80 L = 1,K
TEMP = ALPHA*B(L,J)
DO 70 I = 1,M
C(I,J) = C(I,J) + TEMP*A(I,L)
70 CONTINUE
80 CONTINUE
90 CONTINUE
This enables correct NaN propagation for this piece of code.
Rationale: BLAS does not correctly propagate all NaNs (and Infs). We still have
no NaN propagation where for example ALPHA=0, etc. The goal of this commit is
to have correct NaN propagation no matter what the entries of the input
matrices/vectors (A, B, C, X, etc.) are. BLAS do not correctly propagate NaNs
and Infs based on some values of the scalars (ALPHA, BETA, etc.).
See below the email from Tom Callaway from RedHat, sent on July 9th to
lapack@cs.utk.edu.
Hello LAPACK people,
Martyn & Lejeczek (on CC) reported an issue to Fedora relating to R using our
system copy of BLAS (from LAPACK).
As noted in the R administration and Installation Manual, "R relies on ISO/IEC
60559 compliance of an external BLAS. This can be broken if for example the
code assumes that terms with a zero factor are always zero and do not need to
be computed - whereas x*0 can be NaN. This is checked in the test suite."
In the stock BLAS, DGBMV, DGEMM, and DGEMV fail this. R has been patching their
bundled BLAS to resolve this issue since 2010, but Fedora now uses the system
BLAS.
Attached is a patch (from upstream R) to fix this issue in the LAPACK BLAS.
Please consider applying it.
Thanks,
~tom
|
|
The patch fixes the warnings (Policy CMP0026) by replacing the deprecated LOCATION target
property with the generator expression $<TARGET_FILE>
See http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4556&p=10939#p10939
|
|
( please let me know if concerns/problems. )
1) The comments in ICMAX1 (resp. IZMAX1) were not correct. The comments read:
"ICMAX1 finds the index of the element whose real part has maximum absolute
value." It should have read: "ICMAX1 finds the index of the first vector
element of maximum absolute value." This is corrected. The problem was reported
Eloy Romero Alcalde from the SLEPc team, Universitat Politècnica de València
and confirmed by Nick Higham, Sven Hammarling and Julien Langou.
2) The routine ICAMAX (resp. IZAMAX) from the BLAS evolved without ICMAX1
(resp. IZMAX1). Reconcialated both version. So essentially took the ICAMAX
currently in the BLAS and changed it appropriately for an ICMAX1.
3) Remove the use of statement function in ICMAX1 (resp. IZMAX1). Now obsolete
in FORTRAN.
4) Change comments in BLAS routines: SCABS1, DCABS1, ICAMAX, IZAMAX, SCASUM,
and DZASUM. Remove the use of "absolute value of a complex number" for the
quantity "| Re(.) | + | Im(.) |". For example:
before
DCABS1 computes absolute value of a double complex number
after
DCABS1 computes |Re(.)| + |Im(.)| of a double complex number
|
|
|
|
|
|
intrinsic.
Thanks to Harald Anlauf for providing the solution.
|
|
|
|
|
|
|
|
Use \par instead of \details for section.
add a Contributors Section and a Reference Section.
Remove (some) verbatim section when not needed.
Those changes have been done by hand so I am not sure I manage to catch them all.
|
|
Now each routine should have the correct list of arguments.
This allowed to detect and fix problems in parameter description of many routines.
|
|
|
|
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)
|
|
Replace SNGL by REAL
|
|
Cleanup some codes, like unused variables.
Used -Walls to detect problems.
|
|
transpose (**H)
Corresponds to bug0024
|
|
Incorporate OLD Testings from ACM Collected algorithms : algorithm 539
for:
- DROTMG/SROTMG
- DROTM/SROTM
- DSDOT / SDSDOT
All BLAS routines are now tested.
Now up to us to change the BLAS but at least this is consistent.
|
|
drotmg.f
|
|
referenced when N = 0, or M = 0
|
|
|
|
Add the install rules and exports the targets.
Now one can write
find_package(LAPACK 3.2.2)
in another project to find either the LAPACK build tree or the
install tree.
|
|
|
|
assigned GOTO statement, actually fixed ROTM also
|