Update LAPACK to 3.9.0
This commit is contained in:
parent
4a62c8f665
commit
4ee9b48e59
|
@ -4,89 +4,120 @@
|
|||
# April 2012
|
||||
#
|
||||
|
||||
include make.inc
|
||||
TOPSRCDIR = .
|
||||
include $(TOPSRCDIR)/make.inc
|
||||
|
||||
.PHONY: all
|
||||
all: lapack_install lib blas_testing lapack_testing
|
||||
|
||||
.PHONY: lib
|
||||
lib: lapacklib tmglib
|
||||
#lib: blaslib variants lapacklib tmglib
|
||||
|
||||
.PHONY: blaslib
|
||||
blaslib:
|
||||
$(MAKE) -C BLAS
|
||||
|
||||
.PHONY: cblaslib
|
||||
cblaslib:
|
||||
$(MAKE) -C CBLAS
|
||||
|
||||
.PHONY: lapacklib
|
||||
lapacklib:
|
||||
$(MAKE) -C SRC
|
||||
|
||||
.PHONY: lapackelib
|
||||
lapackelib:
|
||||
$(MAKE) -C LAPACKE
|
||||
|
||||
.PHONY: blaspplib
|
||||
blaspplib:
|
||||
@echo "Thank you for your interest in BLAS++, a newly developed C++ API for BLAS library"
|
||||
@echo "The objective of BLAS++ is to provide a convenient, performance oriented API for development in the C++ language, that, for the most part, preserves established conventions, while, at the same time, takes advantages of modern C++ features, such as: namespaces, templates, exceptions, etc."
|
||||
@echo "We are still working on integrating BLAS++ in our library. For the moment, you can download directly blas++ from https://bitbucket.org/icl/blaspp"
|
||||
@echo "For support BLAS++ related question, please email: slate-user@icl.utk.edu"
|
||||
|
||||
.PHONY: lapackpplib
|
||||
lapackpplib:
|
||||
@echo "Thank you for your interest in LAPACK++, a newly developed C++ API for LAPACK library"
|
||||
@echo "The objective of LAPACK++ is to provide a convenient, performance oriented API for development in the C++ language, that, for the most part, preserves established conventions, while, at the same time, takes advantages of modern C++ features, such as: namespaces, templates, exceptions, etc."
|
||||
@echo "We are still working on integrating LAPACK++ in our library. For the moment, you can download directly lapack++ from https://bitbucket.org/icl/lapackpp"
|
||||
@echo "For support LAPACK++ related question, please email: slate-user@icl.utk.edu"
|
||||
|
||||
.PHONY: tmglib
|
||||
tmglib:
|
||||
$(MAKE) -C TESTING/MATGEN
|
||||
|
||||
.PHONY: variants
|
||||
variants:
|
||||
$(MAKE) -C SRC/VARIANTS
|
||||
|
||||
.PHONY: lapack_install
|
||||
lapack_install:
|
||||
$(MAKE) -C INSTALL run
|
||||
|
||||
.PHONY: blas_testing
|
||||
blas_testing: blaslib
|
||||
$(MAKE) -C BLAS blas_testing
|
||||
|
||||
.PHONY: cblas_testing
|
||||
cblas_testing: cblaslib blaslib
|
||||
$(MAKE) -C CBLAS cblas_testing
|
||||
|
||||
.PHONY: lapack_testing
|
||||
lapack_testing: tmglib lapacklib blaslib
|
||||
$(MAKE) -C TESTING/LIN cleanexe
|
||||
$(MAKE) -C TESTING
|
||||
./lapack_testing.py
|
||||
|
||||
.PHONY: variants_testing
|
||||
variants_testing: tmglib variants lapacklib blaslib
|
||||
$(MAKE) -C TESTING/LIN cleanexe
|
||||
$(MAKE) -C TESTING/LIN VARLIB='SRC/VARIANTS/cholrl.a'
|
||||
$(MAKE) -C TESTING/LIN VARLIB='../../SRC/VARIANTS/cholrl.a'
|
||||
$(MAKE) -C TESTING stest.out && mv TESTING/stest.out TESTING/stest_cholrl.out
|
||||
$(MAKE) -C TESTING dtest.out && mv TESTING/dtest.out TESTING/dtest_cholrl.out
|
||||
$(MAKE) -C TESTING ctest.out && mv TESTING/ctest.out TESTING/ctest_cholrl.out
|
||||
$(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_cholrl.out
|
||||
$(MAKE) -C TESTING/LIN cleanexe
|
||||
$(MAKE) -C TESTING/LIN VARLIB='SRC/VARIANTS/choltop.a'
|
||||
$(MAKE) -C TESTING/LIN VARLIB='../../SRC/VARIANTS/choltop.a'
|
||||
$(MAKE) -C TESTING stest.out && mv TESTING/stest.out TESTING/stest_choltop.out
|
||||
$(MAKE) -C TESTING dtest.out && mv TESTING/dtest.out TESTING/dtest_choltop.out
|
||||
$(MAKE) -C TESTING ctest.out && mv TESTING/ctest.out TESTING/ctest_choltop.out
|
||||
$(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_choltop.out
|
||||
$(MAKE) -C TESTING/LIN cleanexe
|
||||
$(MAKE) -C TESTING/LIN VARLIB='SRC/VARIANTS/lucr.a'
|
||||
$(MAKE) -C TESTING/LIN VARLIB='../../SRC/VARIANTS/lucr.a'
|
||||
$(MAKE) -C TESTING stest.out && mv TESTING/stest.out TESTING/stest_lucr.out
|
||||
$(MAKE) -C TESTING dtest.out && mv TESTING/dtest.out TESTING/dtest_lucr.out
|
||||
$(MAKE) -C TESTING ctest.out && mv TESTING/ctest.out TESTING/ctest_lucr.out
|
||||
$(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_lucr.out
|
||||
$(MAKE) -C TESTING/LIN cleanexe
|
||||
$(MAKE) -C TESTING/LIN VARLIB='SRC/VARIANTS/lull.a'
|
||||
$(MAKE) -C TESTING/LIN VARLIB='../../SRC/VARIANTS/lull.a'
|
||||
$(MAKE) -C TESTING stest.out && mv TESTING/stest.out TESTING/stest_lull.out
|
||||
$(MAKE) -C TESTING dtest.out && mv TESTING/dtest.out TESTING/dtest_lull.out
|
||||
$(MAKE) -C TESTING ctest.out && mv TESTING/ctest.out TESTING/ctest_lull.out
|
||||
$(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_lull.out
|
||||
$(MAKE) -C TESTING/LIN cleanexe
|
||||
$(MAKE) -C TESTING/LIN VARLIB='SRC/VARIANTS/lurec.a'
|
||||
$(MAKE) -C TESTING/LIN VARLIB='../../SRC/VARIANTS/lurec.a'
|
||||
$(MAKE) -C TESTING stest.out && mv TESTING/stest.out TESTING/stest_lurec.out
|
||||
$(MAKE) -C TESTING dtest.out && mv TESTING/dtest.out TESTING/dtest_lurec.out
|
||||
$(MAKE) -C TESTING ctest.out && mv TESTING/ctest.out TESTING/ctest_lurec.out
|
||||
$(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_lurec.out
|
||||
$(MAKE) -C TESTING/LIN cleanexe
|
||||
$(MAKE) -C TESTING/LIN VARLIB='SRC/VARIANTS/qrll.a'
|
||||
$(MAKE) -C TESTING/LIN VARLIB='../../SRC/VARIANTS/qrll.a'
|
||||
$(MAKE) -C TESTING stest.out && mv TESTING/stest.out TESTING/stest_qrll.out
|
||||
$(MAKE) -C TESTING dtest.out && mv TESTING/dtest.out TESTING/dtest_qrll.out
|
||||
$(MAKE) -C TESTING ctest.out && mv TESTING/ctest.out TESTING/ctest_qrll.out
|
||||
$(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_qrll.out
|
||||
|
||||
.PHONY: cblas_example
|
||||
cblas_example: cblaslib blaslib
|
||||
$(MAKE) -C CBLAS cblas_example
|
||||
|
||||
.PHONY: lapacke_example
|
||||
lapacke_example: lapackelib lapacklib blaslib
|
||||
$(MAKE) -C LAPACKE lapacke_example
|
||||
|
||||
.PHONY: html
|
||||
html:
|
||||
@echo "LAPACK HTML PAGES GENERATION with Doxygen"
|
||||
doxygen DOCS/Doxyfile
|
||||
|
@ -96,6 +127,7 @@ html:
|
|||
@echo "Online version available at http://www.netlib.org/lapack/explore-html/"
|
||||
@echo "=================="
|
||||
|
||||
.PHONY: man
|
||||
man:
|
||||
@echo "LAPACK MAN PAGES GENERATION with Doxygen"
|
||||
doxygen DOCS/Doxyfile_man
|
||||
|
@ -105,6 +137,7 @@ man:
|
|||
@echo "Usage: man dgetrf.f"
|
||||
@echo "=================="
|
||||
|
||||
.PHONY: clean cleanobj cleanlib cleanexe cleantest
|
||||
clean:
|
||||
$(MAKE) -C INSTALL clean
|
||||
$(MAKE) -C BLAS clean
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
[](https://travis-ci.org/Reference-LAPACK/lapack)
|
||||
[](https://ci.appveyor.com/project/langou/lapack/)
|
||||
[](https://codecov.io/gh/Reference-LAPACK/lapack)
|
||||
[](https://repology.org/metapackage/lapack/versions)
|
||||
|
||||
|
||||
* VERSION 1.0 : February 29, 1992
|
||||
|
@ -29,6 +30,7 @@
|
|||
* VERSION 3.7.0 : December 2016
|
||||
* VERSION 3.7.1 : June 2017
|
||||
* VERSION 3.8.0 : November 2017
|
||||
* VERSION 3.9.0 : November 2019
|
||||
|
||||
LAPACK is a library of Fortran subroutines for solving the most commonly
|
||||
occurring problems in numerical linear algebra.
|
||||
|
@ -70,6 +72,14 @@ CBLAS, a C interface to the BLAS, and (5) LAPACKE, a C interface to LAPACK.
|
|||
- LAPACK includes also the CMake build. You will need to have CMake installed
|
||||
on your machine (CMake is available at http://www.cmake.org/). CMake will
|
||||
allow an easy installation on a Windows Machine.
|
||||
An example CMake build is:
|
||||
```sh
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_INSTALL_LIBDIR=$HOME/.local/lapack ..
|
||||
cmake --build -j . --target install
|
||||
```
|
||||
That installs the LAPACK library under $HOME/.local/lapack/
|
||||
- Specific information to run LAPACK under Windows is available at
|
||||
http://icl.cs.utk.edu/lapack-for-windows/lapack/.
|
||||
|
||||
|
@ -115,4 +125,3 @@ LAPACK now includes the LAPACKE package. LAPACKE is a Standard C language API
|
|||
for LAPACK This was born from a collaboration of the LAPACK and INTEL Math
|
||||
Kernel Library teams. See:
|
||||
http://www.netlib.org/lapack/#_standard_c_language_apis_for_lapack.
|
||||
|
||||
|
|
|
@ -69,7 +69,8 @@ find_program(HOSTNAME NAMES hostname)
|
|||
find_program(UNAME NAMES uname)
|
||||
|
||||
# Get the build name and hostname
|
||||
exec_program(${HOSTNAME} ARGS OUTPUT_VARIABLE hostname)
|
||||
execute_process(${HOSTNAME}
|
||||
OUTPUT_VARIABLE hostname)
|
||||
string(REGEX REPLACE "[/\\\\+<> #]" "-" hostname "${hostname}")
|
||||
|
||||
message("HOSTNAME: ${hostname}")
|
||||
|
@ -83,7 +84,8 @@ find_package(Git REQUIRED)
|
|||
set(CTEST_GIT_COMMAND ${GIT_EXECUTABLE})
|
||||
set(CTEST_UPDATE_COMMAND ${GIT_EXECUTABLE})
|
||||
macro(getuname name flag)
|
||||
exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}")
|
||||
execute_process(COMMAND "${UNAME}" "${flag}"
|
||||
OUTPUT_VARIABLE "${name}")
|
||||
string(REGEX REPLACE "[/\\\\+<> #]" "-" "${name}" "${${name}}")
|
||||
string(REGEX REPLACE "^(......|.....|....|...|..|.).*" "\\1" "${name}" "${${name}}")
|
||||
endmacro()
|
||||
|
@ -167,7 +169,7 @@ endif()
|
|||
# dashboard then set this variable to the directory
|
||||
# the dashboard should be in
|
||||
make_directory("${CTEST_DASHBOARD_ROOT}")
|
||||
# these are the the name of the source and binary directory on disk.
|
||||
# these are the names of the source and binary directory on disk.
|
||||
# They will be appended to DASHBOARD_ROOT
|
||||
set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_DIR_NAME}")
|
||||
set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}-${CTEST_BUILD_NAME}")
|
||||
|
|
|
@ -12,8 +12,8 @@ import os, sys, math
|
|||
import getopt
|
||||
# Arguments
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "hd:srep:t:n",
|
||||
["help", "dir", "short", "run", "error","prec=","test=","number"])
|
||||
opts, args = getopt.getopt(sys.argv[1:], "hd:b:srep:t:n",
|
||||
["help", "dir", "bin", "short", "run", "error","prec=","test=","number"])
|
||||
|
||||
except getopt.error as msg:
|
||||
print(msg)
|
||||
|
@ -29,14 +29,13 @@ only_numbers=0
|
|||
test_dir='TESTING'
|
||||
bin_dir='bin/Release'
|
||||
|
||||
abs_bin_dir=os.path.normpath(os.path.join(os.getcwd(),bin_dir))
|
||||
|
||||
for o, a in opts:
|
||||
if o in ("-h", "--help"):
|
||||
print(sys.argv[0]+" [-h|--help] [-d dir |--dir dir] [-s |--short] [-r |--run] [-e |--error] [-p p |--prec p] [-t test |--test test] [-n | --number]")
|
||||
print(" - h is to print this message")
|
||||
print(" - 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")
|
||||
print(" - d [dir] is to indicate where is the LAPACK testing directory (.out files). By default, the script will use .")
|
||||
print(" - b [bin] is to indicate where is the LAPACK binary files are located. By default, the script will use .")
|
||||
print(" LEVEL OF OUTPUT")
|
||||
print(" - x is to print a detailed summary")
|
||||
print(" - e is to print only the error summary")
|
||||
|
@ -75,6 +74,8 @@ for o, a in opts:
|
|||
just_errors = 1
|
||||
if o in ( '-p', '--prec' ):
|
||||
prec = a
|
||||
if o in ( '-b', '--bin' ):
|
||||
bin_dir = a
|
||||
if o in ( '-d', '--dir' ):
|
||||
test_dir = a
|
||||
if o in ( '-t', '--test' ):
|
||||
|
@ -85,6 +86,8 @@ for o, a in opts:
|
|||
|
||||
# process options
|
||||
|
||||
abs_bin_dir=os.path.normpath(os.path.join(os.getcwd(),bin_dir))
|
||||
|
||||
os.chdir(test_dir)
|
||||
|
||||
execution=1
|
||||
|
@ -114,10 +117,7 @@ def run_summary_test( f, cmdline, short_summary):
|
|||
pipe = open(cmdline,'r')
|
||||
r=0
|
||||
else:
|
||||
if os.name != 'nt':
|
||||
cmdline='./' + cmdline
|
||||
else :
|
||||
cmdline=abs_bin_dir+os.path.sep+cmdline
|
||||
cmdline = os.path.join(abs_bin_dir, cmdline)
|
||||
|
||||
outfile=cmdline.split()[4]
|
||||
#pipe = open(outfile,'w')
|
||||
|
@ -257,16 +257,16 @@ for dtype in range_prec:
|
|||
else:
|
||||
if dtest==16:
|
||||
# LIN TESTS
|
||||
cmdbase="LIN/xlintst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
cmdbase="xlintst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
elif dtest==17:
|
||||
# PROTO LIN TESTS
|
||||
cmdbase="LIN/xlintst"+letter+dtypes[0][dtype-1]+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
cmdbase="xlintst"+letter+dtypes[0][dtype-1]+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
elif dtest==18:
|
||||
# PROTO LIN TESTS
|
||||
cmdbase="LIN/xlintstrf"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
cmdbase="xlintstrf"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
else:
|
||||
# EIG TESTS
|
||||
cmdbase="EIG/xeigtst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
cmdbase="xeigtst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
|
||||
if (not just_errors and not short_summary):
|
||||
print("Testing "+name+" "+dtests[1][dtest]+"-"+cmdbase, end=' ')
|
||||
# Run the process: either to read the file or run the LAPACK testing
|
||||
|
|
|
@ -11,7 +11,7 @@ SHELL = /bin/sh
|
|||
CC = gcc
|
||||
CFLAGS = -O3
|
||||
|
||||
# Modify the FORTRAN and OPTS definitions to refer to the compiler
|
||||
# Modify the FC and FFLAGS definitions to the desired compiler
|
||||
# and desired compiler options for your machine. NOOPT refers to
|
||||
# the compiler options desired when NO OPTIMIZATION is selected.
|
||||
#
|
||||
|
@ -19,22 +19,20 @@ CFLAGS = -O3
|
|||
# and handle these quantities appropriately. As a consequence, one
|
||||
# should not compile LAPACK with flags such as -ffpe-trap=overflow.
|
||||
#
|
||||
FORTRAN = gfortran
|
||||
OPTS = -O2 -frecursive
|
||||
DRVOPTS = $(OPTS)
|
||||
NOOPT = -O0 -frecursive
|
||||
FC = gfortran
|
||||
FFLAGS = -O2 -frecursive
|
||||
FFLAGS_DRV = $(FFLAGS)
|
||||
FFLAGS_NOOPT = -O0 -frecursive
|
||||
|
||||
# Define LOADER and LOADOPTS to refer to the loader and desired
|
||||
# load options for your machine.
|
||||
# Define LDFLAGS to the desired linker options for your machine.
|
||||
#
|
||||
LOADER = gfortran
|
||||
LOADOPTS =
|
||||
LDFLAGS =
|
||||
|
||||
# The archiver and the flag(s) to use when building an archive
|
||||
# (library). If your system has no ranlib, set RANLIB = echo.
|
||||
#
|
||||
ARCH = ar
|
||||
ARCHFLAGS = cr
|
||||
AR = ar
|
||||
ARFLAGS = cr
|
||||
RANLIB = ranlib
|
||||
|
||||
# Timer for the SECOND and DSECND routines
|
||||
|
@ -78,8 +76,8 @@ TIMER = INT_ETIME
|
|||
# machine-specific, optimized BLAS library should be used whenever
|
||||
# possible.)
|
||||
#
|
||||
BLASLIB = ../../librefblas.a
|
||||
CBLASLIB = ../../libcblas.a
|
||||
LAPACKLIB = liblapack.a
|
||||
TMGLIB = libtmglib.a
|
||||
LAPACKELIB = liblapacke.a
|
||||
BLASLIB = $(TOPSRCDIR)/librefblas.a
|
||||
CBLASLIB = $(TOPSRCDIR)/libcblas.a
|
||||
LAPACKLIB = $(TOPSRCDIR)/liblapack.a
|
||||
TMGLIB = $(TOPSRCDIR)/libtmglib.a
|
||||
LAPACKELIB = $(TOPSRCDIR)/liblapacke.a
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# cd build
|
||||
# meson --buildtype release --prefix=$HOME/.local/lapack ..
|
||||
# ninja
|
||||
# ninja install
|
||||
|
||||
project('LAPACK', 'fortran',
|
||||
default_options : ['default_library=static', 'libdir=lib/'],
|
||||
version : '3.8.0')
|
||||
|
||||
subdir('BLAS/SRC')
|
||||
subdir('SRC')
|
||||
|
||||
prec = get_option('realkind')
|
||||
|
||||
|
||||
if prec == 'd'
|
||||
bsrc = DBLAS1 + DBLAS2 + DBLAS3
|
||||
lsrc = DZLAUX + DSLASRC
|
||||
elif prec == 's'
|
||||
bsrc = SBLAS1 + SBLAS2 + SBLAS3
|
||||
lsrc = SCLAUX + SLASRC
|
||||
endif
|
||||
|
||||
blas = library('blas', bsrc,
|
||||
install : true)
|
||||
|
||||
lapack = library('lapack', lsrc, ALLAUX,
|
||||
install : true)
|
|
@ -0,0 +1,3 @@
|
|||
option('realkind', type : 'string', value : 'd',
|
||||
description : 's: real32 d: real64 c: complex32 z: complex64')
|
||||
|
Loading…
Reference in New Issue