Update LAPACK to 3.9.0

This commit is contained in:
Martin Kroeker 2019-12-29 18:24:58 +01:00 committed by GitHub
parent 4a62c8f665
commit 4ee9b48e59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 116 additions and 43 deletions

View File

@ -4,89 +4,120 @@
# April 2012 # April 2012
# #
include make.inc TOPSRCDIR = .
include $(TOPSRCDIR)/make.inc
.PHONY: all
all: lapack_install lib blas_testing lapack_testing all: lapack_install lib blas_testing lapack_testing
.PHONY: lib
lib: lapacklib tmglib lib: lapacklib tmglib
#lib: blaslib variants lapacklib tmglib #lib: blaslib variants lapacklib tmglib
.PHONY: blaslib
blaslib: blaslib:
$(MAKE) -C BLAS $(MAKE) -C BLAS
.PHONY: cblaslib
cblaslib: cblaslib:
$(MAKE) -C CBLAS $(MAKE) -C CBLAS
.PHONY: lapacklib
lapacklib: lapacklib:
$(MAKE) -C SRC $(MAKE) -C SRC
.PHONY: lapackelib
lapackelib: lapackelib:
$(MAKE) -C LAPACKE $(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: tmglib:
$(MAKE) -C TESTING/MATGEN $(MAKE) -C TESTING/MATGEN
.PHONY: variants
variants: variants:
$(MAKE) -C SRC/VARIANTS $(MAKE) -C SRC/VARIANTS
.PHONY: lapack_install
lapack_install: lapack_install:
$(MAKE) -C INSTALL run $(MAKE) -C INSTALL run
.PHONY: blas_testing
blas_testing: blaslib blas_testing: blaslib
$(MAKE) -C BLAS blas_testing $(MAKE) -C BLAS blas_testing
.PHONY: cblas_testing
cblas_testing: cblaslib blaslib cblas_testing: cblaslib blaslib
$(MAKE) -C CBLAS cblas_testing $(MAKE) -C CBLAS cblas_testing
.PHONY: lapack_testing
lapack_testing: tmglib lapacklib blaslib lapack_testing: tmglib lapacklib blaslib
$(MAKE) -C TESTING/LIN cleanexe $(MAKE) -C TESTING/LIN cleanexe
$(MAKE) -C TESTING $(MAKE) -C TESTING
./lapack_testing.py ./lapack_testing.py
.PHONY: variants_testing
variants_testing: tmglib variants lapacklib blaslib variants_testing: tmglib variants lapacklib blaslib
$(MAKE) -C TESTING/LIN cleanexe $(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 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 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 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 ztest.out && mv TESTING/ztest.out TESTING/ztest_cholrl.out
$(MAKE) -C TESTING/LIN cleanexe $(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 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 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 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 ztest.out && mv TESTING/ztest.out TESTING/ztest_choltop.out
$(MAKE) -C TESTING/LIN cleanexe $(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 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 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 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 ztest.out && mv TESTING/ztest.out TESTING/ztest_lucr.out
$(MAKE) -C TESTING/LIN cleanexe $(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 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 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 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 ztest.out && mv TESTING/ztest.out TESTING/ztest_lull.out
$(MAKE) -C TESTING/LIN cleanexe $(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 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 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 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 ztest.out && mv TESTING/ztest.out TESTING/ztest_lurec.out
$(MAKE) -C TESTING/LIN cleanexe $(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 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 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 ctest.out && mv TESTING/ctest.out TESTING/ctest_qrll.out
$(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_qrll.out $(MAKE) -C TESTING ztest.out && mv TESTING/ztest.out TESTING/ztest_qrll.out
.PHONY: cblas_example
cblas_example: cblaslib blaslib cblas_example: cblaslib blaslib
$(MAKE) -C CBLAS cblas_example $(MAKE) -C CBLAS cblas_example
.PHONY: lapacke_example
lapacke_example: lapackelib lapacklib blaslib lapacke_example: lapackelib lapacklib blaslib
$(MAKE) -C LAPACKE lapacke_example $(MAKE) -C LAPACKE lapacke_example
.PHONY: html
html: html:
@echo "LAPACK HTML PAGES GENERATION with Doxygen" @echo "LAPACK HTML PAGES GENERATION with Doxygen"
doxygen DOCS/Doxyfile doxygen DOCS/Doxyfile
@ -96,6 +127,7 @@ html:
@echo "Online version available at http://www.netlib.org/lapack/explore-html/" @echo "Online version available at http://www.netlib.org/lapack/explore-html/"
@echo "==================" @echo "=================="
.PHONY: man
man: man:
@echo "LAPACK MAN PAGES GENERATION with Doxygen" @echo "LAPACK MAN PAGES GENERATION with Doxygen"
doxygen DOCS/Doxyfile_man doxygen DOCS/Doxyfile_man
@ -105,6 +137,7 @@ man:
@echo "Usage: man dgetrf.f" @echo "Usage: man dgetrf.f"
@echo "==================" @echo "=================="
.PHONY: clean cleanobj cleanlib cleanexe cleantest
clean: clean:
$(MAKE) -C INSTALL clean $(MAKE) -C INSTALL clean
$(MAKE) -C BLAS clean $(MAKE) -C BLAS clean
@ -146,4 +179,4 @@ cleantest:
$(MAKE) -C INSTALL cleantest $(MAKE) -C INSTALL cleantest
$(MAKE) -C BLAS cleantest $(MAKE) -C BLAS cleantest
$(MAKE) -C CBLAS cleantest $(MAKE) -C CBLAS cleantest
$(MAKE) -C TESTING cleantest $(MAKE) -C TESTING cleantest

View File

@ -3,6 +3,7 @@
[![Build Status](https://travis-ci.org/Reference-LAPACK/lapack.svg?branch=master)](https://travis-ci.org/Reference-LAPACK/lapack) [![Build Status](https://travis-ci.org/Reference-LAPACK/lapack.svg?branch=master)](https://travis-ci.org/Reference-LAPACK/lapack)
[![Appveyor](https://ci.appveyor.com/api/projects/status/bh38iin398msrbtr?svg=true)](https://ci.appveyor.com/project/langou/lapack/) [![Appveyor](https://ci.appveyor.com/api/projects/status/bh38iin398msrbtr?svg=true)](https://ci.appveyor.com/project/langou/lapack/)
[![codecov](https://codecov.io/gh/Reference-LAPACK/lapack/branch/master/graph/badge.svg)](https://codecov.io/gh/Reference-LAPACK/lapack) [![codecov](https://codecov.io/gh/Reference-LAPACK/lapack/branch/master/graph/badge.svg)](https://codecov.io/gh/Reference-LAPACK/lapack)
[![Packaging status](https://repology.org/badge/tiny-repos/lapack.svg)](https://repology.org/metapackage/lapack/versions)
* VERSION 1.0 : February 29, 1992 * VERSION 1.0 : February 29, 1992
@ -29,6 +30,7 @@
* VERSION 3.7.0 : December 2016 * VERSION 3.7.0 : December 2016
* VERSION 3.7.1 : June 2017 * VERSION 3.7.1 : June 2017
* VERSION 3.8.0 : November 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 LAPACK is a library of Fortran subroutines for solving the most commonly
occurring problems in numerical linear algebra. 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 - 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 on your machine (CMake is available at http://www.cmake.org/). CMake will
allow an easy installation on a Windows Machine. 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 - Specific information to run LAPACK under Windows is available at
http://icl.cs.utk.edu/lapack-for-windows/lapack/. http://icl.cs.utk.edu/lapack-for-windows/lapack/.
@ -99,7 +109,7 @@ You can also contact directly the LAPACK team at lapack@icl.utk.edu.
## Testing ## Testing
LAPACK includes a thorough test suite. We recommend that, after compilation, LAPACK includes a thorough test suite. We recommend that, after compilation,
you run the test suite. you run the test suite.
For complete information on the LAPACK Testing please consult LAPACK Working For complete information on the LAPACK Testing please consult LAPACK Working
Note 41 "Installation Guide for LAPACK". Note 41 "Installation Guide for 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 for LAPACK This was born from a collaboration of the LAPACK and INTEL Math
Kernel Library teams. See: Kernel Library teams. See:
http://www.netlib.org/lapack/#_standard_c_language_apis_for_lapack. http://www.netlib.org/lapack/#_standard_c_language_apis_for_lapack.

View File

@ -69,7 +69,8 @@ find_program(HOSTNAME NAMES hostname)
find_program(UNAME NAMES uname) find_program(UNAME NAMES uname)
# Get the build name and hostname # Get the build name and hostname
exec_program(${HOSTNAME} ARGS OUTPUT_VARIABLE hostname) execute_process(${HOSTNAME}
OUTPUT_VARIABLE hostname)
string(REGEX REPLACE "[/\\\\+<> #]" "-" hostname "${hostname}") string(REGEX REPLACE "[/\\\\+<> #]" "-" hostname "${hostname}")
message("HOSTNAME: ${hostname}") message("HOSTNAME: ${hostname}")
@ -83,7 +84,8 @@ find_package(Git REQUIRED)
set(CTEST_GIT_COMMAND ${GIT_EXECUTABLE}) set(CTEST_GIT_COMMAND ${GIT_EXECUTABLE})
set(CTEST_UPDATE_COMMAND ${GIT_EXECUTABLE}) set(CTEST_UPDATE_COMMAND ${GIT_EXECUTABLE})
macro(getuname name flag) 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 "[/\\\\+<> #]" "-" "${name}" "${${name}}")
string(REGEX REPLACE "^(......|.....|....|...|..|.).*" "\\1" "${name}" "${${name}}") string(REGEX REPLACE "^(......|.....|....|...|..|.).*" "\\1" "${name}" "${${name}}")
endmacro() endmacro()
@ -167,7 +169,7 @@ endif()
# dashboard then set this variable to the directory # dashboard then set this variable to the directory
# the dashboard should be in # the dashboard should be in
make_directory("${CTEST_DASHBOARD_ROOT}") 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 # They will be appended to DASHBOARD_ROOT
set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_DIR_NAME}") set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_DIR_NAME}")
set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}-${CTEST_BUILD_NAME}") set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}-${CTEST_BUILD_NAME}")

View File

@ -12,8 +12,8 @@ import os, sys, math
import getopt import getopt
# Arguments # Arguments
try: try:
opts, args = getopt.getopt(sys.argv[1:], "hd:srep:t:n", opts, args = getopt.getopt(sys.argv[1:], "hd:b:srep:t:n",
["help", "dir", "short", "run", "error","prec=","test=","number"]) ["help", "dir", "bin", "short", "run", "error","prec=","test=","number"])
except getopt.error as msg: except getopt.error as msg:
print(msg) print(msg)
@ -29,14 +29,13 @@ only_numbers=0
test_dir='TESTING' test_dir='TESTING'
bin_dir='bin/Release' bin_dir='bin/Release'
abs_bin_dir=os.path.normpath(os.path.join(os.getcwd(),bin_dir))
for o, a in opts: for o, a in opts:
if o in ("-h", "--help"): 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(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(" - 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(" - 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(" - 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(" LEVEL OF OUTPUT")
print(" - x is to print a detailed summary") print(" - x is to print a detailed summary")
print(" - e is to print only the error summary") print(" - e is to print only the error summary")
@ -75,6 +74,8 @@ for o, a in opts:
just_errors = 1 just_errors = 1
if o in ( '-p', '--prec' ): if o in ( '-p', '--prec' ):
prec = a prec = a
if o in ( '-b', '--bin' ):
bin_dir = a
if o in ( '-d', '--dir' ): if o in ( '-d', '--dir' ):
test_dir = a test_dir = a
if o in ( '-t', '--test' ): if o in ( '-t', '--test' ):
@ -85,6 +86,8 @@ for o, a in opts:
# process options # process options
abs_bin_dir=os.path.normpath(os.path.join(os.getcwd(),bin_dir))
os.chdir(test_dir) os.chdir(test_dir)
execution=1 execution=1
@ -114,10 +117,7 @@ def run_summary_test( f, cmdline, short_summary):
pipe = open(cmdline,'r') pipe = open(cmdline,'r')
r=0 r=0
else: else:
if os.name != 'nt': cmdline = os.path.join(abs_bin_dir, cmdline)
cmdline='./' + cmdline
else :
cmdline=abs_bin_dir+os.path.sep+cmdline
outfile=cmdline.split()[4] outfile=cmdline.split()[4]
#pipe = open(outfile,'w') #pipe = open(outfile,'w')
@ -257,16 +257,16 @@ for dtype in range_prec:
else: else:
if dtest==16: if dtest==16:
# LIN TESTS # 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: elif dtest==17:
# PROTO LIN TESTS # 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: elif dtest==18:
# PROTO LIN TESTS # 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: else:
# EIG TESTS # 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): if (not just_errors and not short_summary):
print("Testing "+name+" "+dtests[1][dtest]+"-"+cmdbase, end=' ') print("Testing "+name+" "+dtests[1][dtest]+"-"+cmdbase, end=' ')
# Run the process: either to read the file or run the LAPACK testing # Run the process: either to read the file or run the LAPACK testing

View File

@ -8,10 +8,10 @@ SHELL = /bin/sh
# CC is the C compiler, normally invoked with options CFLAGS. # CC is the C compiler, normally invoked with options CFLAGS.
# #
CC = gcc CC = gcc
CFLAGS = -O3 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 # and desired compiler options for your machine. NOOPT refers to
# the compiler options desired when NO OPTIMIZATION is selected. # the compiler options desired when NO OPTIMIZATION is selected.
# #
@ -19,23 +19,21 @@ CFLAGS = -O3
# and handle these quantities appropriately. As a consequence, one # and handle these quantities appropriately. As a consequence, one
# should not compile LAPACK with flags such as -ffpe-trap=overflow. # should not compile LAPACK with flags such as -ffpe-trap=overflow.
# #
FORTRAN = gfortran FC = gfortran
OPTS = -O2 -frecursive FFLAGS = -O2 -frecursive
DRVOPTS = $(OPTS) FFLAGS_DRV = $(FFLAGS)
NOOPT = -O0 -frecursive FFLAGS_NOOPT = -O0 -frecursive
# Define LOADER and LOADOPTS to refer to the loader and desired # Define LDFLAGS to the desired linker options for your machine.
# load options for your machine.
# #
LOADER = gfortran LDFLAGS =
LOADOPTS =
# The archiver and the flag(s) to use when building an archive # The archiver and the flag(s) to use when building an archive
# (library). If your system has no ranlib, set RANLIB = echo. # (library). If your system has no ranlib, set RANLIB = echo.
# #
ARCH = ar AR = ar
ARCHFLAGS = cr ARFLAGS = cr
RANLIB = ranlib RANLIB = ranlib
# Timer for the SECOND and DSECND routines # Timer for the SECOND and DSECND routines
# #
@ -78,8 +76,8 @@ TIMER = INT_ETIME
# machine-specific, optimized BLAS library should be used whenever # machine-specific, optimized BLAS library should be used whenever
# possible.) # possible.)
# #
BLASLIB = ../../librefblas.a BLASLIB = $(TOPSRCDIR)/librefblas.a
CBLASLIB = ../../libcblas.a CBLASLIB = $(TOPSRCDIR)/libcblas.a
LAPACKLIB = liblapack.a LAPACKLIB = $(TOPSRCDIR)/liblapack.a
TMGLIB = libtmglib.a TMGLIB = $(TOPSRCDIR)/libtmglib.a
LAPACKELIB = liblapacke.a LAPACKELIB = $(TOPSRCDIR)/liblapacke.a

28
lapack-netlib/meson.build Normal file
View File

@ -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)

View File

@ -0,0 +1,3 @@
option('realkind', type : 'string', value : 'd',
description : 's: real32 d: real64 c: complex32 z: complex64')