Skip to content

Commit 375b187

Browse files
authored
[WIP] Update LAPACK to 3.9.0 (#2353)
* Update make.inc entries for LAPACK 3.9.0 Reference-LAPACK PR 347 changed some variable names and relative paths * Update LAPACK to 3.9.0 * Add new functions from LAPACK 3.9.0 * Add new functions from LAPACK 3.9.0 * Restore LOADER command as it makes it easier to specify pthread as needed * Restore LOADER * Restore EIG/LIN prefixes in cmdbase * add binary path to lapack_testing.py call * Restore OpenMP version check * Restore OpenMP version check * Restore fix for out-of-bounds array accesses from #2096
1 parent 6c85cb1 commit 375b187

File tree

812 files changed

+36335
-11964
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

812 files changed

+36335
-11964
lines changed

Makefile

+10-10
Original file line numberDiff line numberDiff line change
@@ -247,21 +247,21 @@ prof_lapack : lapack_prebuild
247247

248248
lapack_prebuild :
249249
ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
250-
-@echo "FORTRAN = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc
251-
-@echo "OPTS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
250+
-@echo "FC = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc
251+
-@echo "FFLAGS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
252252
-@echo "POPTS = $(LAPACK_FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
253-
-@echo "NOOPT = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc
253+
-@echo "FFLAGS_NOOPT = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc
254254
-@echo "PNOOPT = $(LAPACK_FPFLAGS) -O0" >> $(NETLIB_LAPACK_DIR)/make.inc
255-
-@echo "LOADOPTS = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
255+
-@echo "LDFLAGS = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
256256
-@echo "CC = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc
257257
-@echo "override CFLAGS = $(LAPACK_CFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
258-
-@echo "override ARCH = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc
259-
-@echo "ARCHFLAGS = $(ARFLAGS) -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
258+
-@echo "AR = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc
259+
-@echo "ARFLAGS = $(ARFLAGS) -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
260260
-@echo "RANLIB = $(RANLIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
261-
-@echo "LAPACKLIB = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
262-
-@echo "TMGLIB = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
261+
-@echo "LAPACKLIB = ../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
262+
-@echo "TMGLIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
263263
-@echo "BLASLIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
264-
-@echo "LAPACKELIB = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
264+
-@echo "LAPACKELIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
265265
-@echo "LAPACKLIB_P = ../$(LIBNAME_P)" >> $(NETLIB_LAPACK_DIR)/make.inc
266266
-@echo "SUFFIX = $(SUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc
267267
-@echo "PSUFFIX = $(PSUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc
@@ -319,7 +319,7 @@ lapack-test :
319319
ifneq ($(CROSS), 1)
320320
( cd $(NETLIB_LAPACK_DIR)/INSTALL; make all; ./testlsame; ./testslamch; ./testdlamch; \
321321
./testsecond; ./testdsecnd; ./testieee; ./testversion )
322-
(cd $(NETLIB_LAPACK_DIR); ./lapack_testing.py -r )
322+
(cd $(NETLIB_LAPACK_DIR); ./lapack_testing.py -r -b TESTING)
323323
endif
324324

325325
lapack-runtest:

cmake/lapack.cmake

+12-4
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ set(SLASRC
115115
stplqt.f stplqt2.f stpmlqt.f
116116
ssytrd_2stage.f ssytrd_sy2sb.f ssytrd_sb2st.F ssb2st_kernels.f
117117
ssyevd_2stage.f ssyev_2stage.f ssyevx_2stage.f ssyevr_2stage.f
118-
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f)
118+
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f
119+
scombssq.f sgesvdq.f slaorhr_col_getrfnp.f
120+
slaorhr_col_getrfnp2.f sorgtsqr.f sorhr_col.f )
119121

120122
set(SXLASRC sgesvxx.f sgerfsx.f sla_gerfsx_extended.f sla_geamv.f
121123
sla_gercond.f sla_gerpvgrw.f ssysvxx.f ssyrfsx.f
@@ -210,7 +212,9 @@ set(CLASRC
210212
ctplqt.f ctplqt2.f ctpmlqt.f
211213
chetrd_2stage.f chetrd_he2hb.f chetrd_hb2st.F chb2st_kernels.f
212214
cheevd_2stage.f cheev_2stage.f cheevx_2stage.f cheevr_2stage.f
213-
chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f)
215+
chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f
216+
cgesvdq.f claunhr_col_getrfnp.f claunhr_col_getrfnp2.f
217+
cungtsqr.f cunhr_col.f )
214218

215219
set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f
216220
cla_gercond_c.f cla_gercond_x.f cla_gerpvgrw.f
@@ -299,7 +303,9 @@ set(DLASRC
299303
dtplqt.f dtplqt2.f dtpmlqt.f
300304
dsytrd_2stage.f dsytrd_sy2sb.f dsytrd_sb2st.F dsb2st_kernels.f
301305
dsyevd_2stage.f dsyev_2stage.f dsyevx_2stage.f dsyevr_2stage.f
302-
dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f)
306+
dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f
307+
dcombssq.f dgesvdq.f dlaorhr_col_getrfnp.f
308+
dlaorhr_col_getrfnp2.f dorgtsqr.f dorhr_col.f )
303309

304310
set(DXLASRC dgesvxx.f dgerfsx.f dla_gerfsx_extended.f dla_geamv.f
305311
dla_gercond.f dla_gerpvgrw.f dsysvxx.f dsyrfsx.f
@@ -398,7 +404,9 @@ set(ZLASRC
398404
zgelq.f zlaswlq.f zlamswlq.f zgemlq.f
399405
zhetrd_2stage.f zhetrd_he2hb.f zhetrd_hb2st.F zhb2st_kernels.f
400406
zheevd_2stage.f zheev_2stage.f zheevx_2stage.f zheevr_2stage.f
401-
zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f)
407+
zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f
408+
zgesvdq.f zlaunhr_col_getrfnp.f zlaunhr_col_getrfnp2.f
409+
zungtsqr.f zunhr_col.f)
402410

403411
set(ZXLASRC zgesvxx.f zgerfsx.f zla_gerfsx_extended.f zla_geamv.f
404412
zla_gercond_c.f zla_gercond_x.f zla_gerpvgrw.f zsysvxx.f zsyrfsx.f

cmake/lapacke.cmake

+6
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,8 @@ set(DSRC
715715
lapacke_dgesv_work.c
716716
lapacke_dgesvd.c
717717
lapacke_dgesvd_work.c
718+
lapacke_dgesvdq.c
719+
lapacke_dgesvdq_work.c
718720
lapacke_dgesvdx.c
719721
lapacke_dgesvdx_work.c
720722
lapacke_dgesvj.c
@@ -1287,6 +1289,8 @@ set(SSRC
12871289
lapacke_sgesv_work.c
12881290
lapacke_sgesvd.c
12891291
lapacke_sgesvd_work.c
1292+
lapacke_sgesvdq.c
1293+
lapacke_sgesvdq_work.c
12901294
lapacke_sgesvdx.c
12911295
lapacke_sgesvdx_work.c
12921296
lapacke_sgesvj.c
@@ -1853,6 +1857,8 @@ set(ZSRC
18531857
lapacke_zgesv_work.c
18541858
lapacke_zgesvd.c
18551859
lapacke_zgesvd_work.c
1860+
lapacke_zgesvdq.c
1861+
lapacke_zgesvdq_work.c
18561862
lapacke_zgesvdx.c
18571863
lapacke_zgesvdx_work.c
18581864
lapacke_zgesvj.c

exports/gensymbol

+29-2
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,19 @@
694694

695695
# functions added for lapack-3.8.0
696696

697-
ilaenv2stage
697+
ilaenv2stage,
698+
699+
# functions added for lapack-3.9.0
700+
cgesvdq,
701+
cungtsqr,
702+
dcombssq,
703+
dgesvdq,
704+
dorgtsqr,
705+
scombssq,
706+
sgesvdq,
707+
sorgtsqr,
708+
zgesvdq,
709+
zungtsqr
698710
);
699711

700712
@lapack_extendedprecision_objs = (
@@ -3347,6 +3359,15 @@
33473359
LAPACKE_zsytrf_aa_2stage_work,
33483360
LAPACKE_zsytrs_aa_2stage,
33493361
LAPACKE_zsytrs_aa_2stage_work,
3362+
3363+
# new functions from 3.9.0
3364+
LAPACKE_dgesvdq,
3365+
LAPACKE_dgesvdq_work,
3366+
LAPACKE_sgesvdq,
3367+
LAPACKE_sgesvdq_work,
3368+
LAPACKE_zgesvdq,
3369+
LAPACKE_zgesvdq_work
3370+
33503371
);
33513372

33523373
#These function may need 2 underscores.
@@ -3419,7 +3440,13 @@
34193440
dsytrf_aa_2stage, dsytrs_aa_2stage,
34203441
zhesv_aa_2stage, zhetrf_aa_2stage,
34213442
zhetrs_aa_2stage, zsysv_aa_2stage,
3422-
zsytrf_aa_2stage, zsytrs_aa_2stage
3443+
zsytrf_aa_2stage, zsytrs_aa_2stage,
3444+
# 3.9.0
3445+
claunhr_col_getrfnp, claunhr_col_getrfnp2, cunhr_col,
3446+
dlaorhr_col_getrfnp, dlaorhr_col_getrfnp2, dorhr_col,
3447+
slaorhr_col_getrfnp, slaorhr_col_getrfnp2, sorhr_col,
3448+
zlaunhr_col_getrfnp, zlaunhr_col_getrfnp2, zunhr_col
3449+
34233450
);
34243451

34253452

lapack-netlib/.appveyor.yml

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
image:
2+
- Visual Studio 2017
3+
4+
configuration: Release
5+
clone_depth: 3
6+
7+
matrix:
8+
fast_finish: false
9+
10+
skip_commits:
11+
# Add [av skip] to commit messages
12+
message: /\[av skip\]/
13+
14+
cache:
15+
- '%APPVEYOR_BUILD_FOLDER%\build'
16+
17+
environment:
18+
global:
19+
CONDA_INSTALL_LOCN: C:\\Miniconda36-x64
20+
21+
install:
22+
- call %CONDA_INSTALL_LOCN%\Scripts\activate.bat
23+
- conda config --add channels conda-forge --force
24+
- conda install --yes --quiet flang jom
25+
- call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
26+
- set "LIB=%CONDA_INSTALL_LOCN%\Library\lib;%LIB%"
27+
- set "CPATH=%CONDA_INSTALL_LOCN%\Library\include;%CPATH%"
28+
29+
before_build:
30+
- ps: if (-Not (Test-Path .\build)) { mkdir build }
31+
- cd build
32+
- cmake -G "NMake Makefiles JOM" -DCMAKE_Fortran_COMPILER=flang -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON ..
33+
34+
build_script:
35+
- cmake --build .
36+
37+
test_script:
38+
- ctest -j2

lapack-netlib/.gitignore

+6
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,9 @@ LAPACKE/example/xexample*
3535
# SED
3636
SRC/*-e
3737
LAPACKE/src/*-e
38+
build*
39+
40+
# DOCS documentation
41+
DOCS/man
42+
DOCS/explore-html
43+
output_err

lapack-netlib/.travis.yml

+24-25
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,32 @@
1-
language: cpp
1+
language: c
2+
dist: xenial
3+
group: travis_latest
4+
5+
git:
6+
depth: 3
7+
quiet: true
28

39
addons:
410
apt:
5-
sources:
6-
- george-edison55-precise-backports # cmake
711
packages:
8-
- cmake
9-
- cmake-data
10-
- gfortran
11-
12-
os:
13-
- linux
14-
- osx
15-
16-
env:
17-
- CMAKE_BUILD_TYPE=Release
18-
- CMAKE_BUILD_TYPE=Coverage
12+
- gfortran
1913

20-
install:
21-
- if [[ "$TRAVIS_OS_NAME" == "osx" ]];
22-
then
23-
for pkg in gcc cmake; do
24-
if brew list -1 | grep -q "^${pkg}\$"; then
25-
brew outdated $pkg || brew upgrade $pkg;
26-
else
27-
brew install $pkg;
28-
fi
29-
done
30-
fi
14+
matrix:
15+
include:
16+
- os: linux
17+
env: CMAKE_BUILD_TYPE=Release
18+
- os: linux
19+
env: CMAKE_BUILD_TYPE=Coverage
20+
- os: osx
21+
env: CMAKE_BUILD_TYPE=Release
22+
before_install:
23+
- brew update > /dev/null
24+
- brew install gcc > /dev/null
25+
- os: osx
26+
env: CMAKE_BUILD_TYPE=Coverage
27+
before_install:
28+
- brew update > /dev/null
29+
- brew install gcc > /dev/null
3130

3231
script:
3332
- export PR=https://api.github.com/repos/$TRAVIS_REPO_SLUG/pulls/$TRAVIS_PULL_REQUEST

lapack-netlib/BLAS/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/blas.pc.in ${CMAKE_CURRENT_BINARY_DIR
66
install(FILES
77
${CMAKE_CURRENT_BINARY_DIR}/blas.pc
88
DESTINATION ${PKG_CONFIG_DIR}
9+
COMPONENT Development
910
)

lapack-netlib/BLAS/Makefile

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
include ../make.inc
1+
TOPSRCDIR = ..
2+
include $(TOPSRCDIR)/make.inc
23

4+
.PHONY: all
35
all: blas
46

7+
.PHONY: blas
58
blas:
69
$(MAKE) -C SRC
710

11+
.PHONY: blas_testing
812
blas_testing: blas
913
$(MAKE) -C TESTING run
1014

15+
.PHONY: clean cleanobj cleanlib cleanexe cleantest
1116
clean:
1217
$(MAKE) -C SRC clean
1318
$(MAKE) -C TESTING clean

lapack-netlib/BLAS/SRC/Makefile

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
include ../../make.inc
2-
31
#######################################################################
42
# This is the makefile to create a library for the BLAS.
53
# The files are grouped as follows:
@@ -55,6 +53,10 @@ include ../../make.inc
5553
#
5654
#######################################################################
5755

56+
TOPSRCDIR = ../..
57+
include $(TOPSRCDIR)/make.inc
58+
59+
.PHONY: all
5860
all: $(BLASLIB)
5961

6062
#---------------------------------------------------------
@@ -138,33 +140,32 @@ ALLOBJ = $(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
138140
$(ZBLAS2) $(ZBLAS3) $(ALLBLAS)
139141

140142
$(BLASLIB): $(ALLOBJ)
141-
$(ARCH) $(ARCHFLAGS) $@ $^
143+
$(AR) $(ARFLAGS) $@ $^
142144
$(RANLIB) $@
143145

146+
.PHONY: single double complex complex16
144147
single: $(SBLAS1) $(ALLBLAS) $(SBLAS2) $(SBLAS3)
145-
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $^
148+
$(AR) $(ARFLAGS) $(BLASLIB) $^
146149
$(RANLIB) $(BLASLIB)
147150

148151
double: $(DBLAS1) $(ALLBLAS) $(DBLAS2) $(DBLAS3)
149-
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $^
152+
$(AR) $(ARFLAGS) $(BLASLIB) $^
150153
$(RANLIB) $(BLASLIB)
151154

152155
complex: $(CBLAS1) $(CB1AUX) $(ALLBLAS) $(CBLAS2) $(CBLAS3)
153-
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $^
156+
$(AR) $(ARFLAGS) $(BLASLIB) $^
154157
$(RANLIB) $(BLASLIB)
155158

156159
complex16: $(ZBLAS1) $(ZB1AUX) $(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
157-
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $^
160+
$(AR) $(ARFLAGS) $(BLASLIB) $^
158161
$(RANLIB) $(BLASLIB)
159162

160163
FRC:
161164
@FRC=$(FRC)
162165

166+
.PHONY: clean cleanobj cleanlib
163167
clean: cleanobj cleanlib
164168
cleanobj:
165169
rm -f *.o
166170
cleanlib:
167171
#rm -f $(BLASLIB) # May point to a system lib, e.g. -lblas
168-
169-
.f.o:
170-
$(FORTRAN) $(OPTS) -c -o $@ $<

lapack-netlib/BLAS/SRC/icamax.f

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
*> \param[in] INCX
4444
*> \verbatim
4545
*> INCX is INTEGER
46-
*> storage spacing between elements of SX
46+
*> storage spacing between elements of CX
4747
*> \endverbatim
4848
*
4949
* Authors:

lapack-netlib/BLAS/SRC/idamax.f

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
*> \param[in] INCX
4444
*> \verbatim
4545
*> INCX is INTEGER
46-
*> storage spacing between elements of SX
46+
*> storage spacing between elements of DX
4747
*> \endverbatim
4848
*
4949
* Authors:

lapack-netlib/BLAS/SRC/izamax.f

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
*> \param[in] INCX
4444
*> \verbatim
4545
*> INCX is INTEGER
46-
*> storage spacing between elements of SX
46+
*> storage spacing between elements of ZX
4747
*> \endverbatim
4848
*
4949
* Authors:

0 commit comments

Comments
 (0)