Merge pull request #3802 from martin-frbg/relafix

Fix cmake compilation of ReLAPACK and expose its INCLUDE_ALL option
This commit is contained in:
Martin Kroeker 2022-11-12 15:11:31 +01:00 committed by GitHub
commit b53b0f6bb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 77 additions and 49 deletions

View File

@ -212,10 +212,10 @@ if(NOT NO_LAPACKE)
add_library(LAPACKE OBJECT ${LAPACKE_SOURCES}) add_library(LAPACKE OBJECT ${LAPACKE_SOURCES})
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACKE>") list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACKE>")
endif() endif()
if(BUILD_RELAPACK) #if(BUILD_RELAPACK)
add_library(RELAPACK OBJECT ${RELA_SOURCES}) # add_library(RELAPACK OBJECT ${RELA_SOURCES})
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:RELAPACK>") # list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:RELAPACK>")
endif() #endif()
set(OpenBLAS_LIBS "") set(OpenBLAS_LIBS "")
if(BUILD_STATIC_LIBS) if(BUILD_STATIC_LIBS)
add_library(${OpenBLAS_LIBNAME}_static STATIC ${TARGET_OBJS} ${OpenBLAS_DEF_FILE}) add_library(${OpenBLAS_LIBNAME}_static STATIC ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})

View File

@ -131,6 +131,9 @@ BUILD_LAPACK_DEPRECATED = 1
# Build RecursiveLAPACK on top of LAPACK # Build RecursiveLAPACK on top of LAPACK
# BUILD_RELAPACK = 1 # BUILD_RELAPACK = 1
# Have RecursiveLAPACK actually replace standard LAPACK routines instead of
# just adding its equivalents with a RELAPACK_ prefix
# RELAPACK_REPLACE = 1
# If you want to use the legacy threaded Level 3 implementation. # If you want to use the legacy threaded Level 3 implementation.
# USE_SIMPLE_THREADED_LEVEL3 = 1 # USE_SIMPLE_THREADED_LEVEL3 = 1

View File

@ -9,6 +9,10 @@ ifndef TOPDIR
TOPDIR = . TOPDIR = .
endif endif
ifndef RELAPACK_REPLACE
RELAPACK_REPLACE=0
endif
# we need to use the host system's architecture for getarch compile options even especially when cross-compiling # we need to use the host system's architecture for getarch compile options even especially when cross-compiling
HOSTARCH := $(shell uname -m) HOSTARCH := $(shell uname -m)
ifeq ($(HOSTARCH), amd64) ifeq ($(HOSTARCH), amd64)

View File

@ -189,7 +189,16 @@ if (NOT DEFINED NO_LAPACK)
) )
GenerateNamedObjects("${LAPACK_SOURCES}") GenerateNamedObjects("${LAPACK_SOURCES}")
if (NOT RELAPACK_REPLACE)
GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" 0 "" "" 0 3) GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" 0 "" "" 0 3)
else ()
GenerateNamedObjects("lapack/getrs.c" "" "" 0 "" "" 0 3)
GenerateNamedObjects("lapack/getf2.c" "" "" 0 "" "" 0 3)
GenerateNamedObjects("lapack/potf2.c" "" "" 0 "" "" 0 3)
GenerateNamedObjects("lapack/laswp.c" "" "" 0 "" "" 0 3)
GenerateNamedObjects("lapack/lauu2.c" "" "" 0 "" "" 0 3)
GenerateNamedObjects("lapack/trti2.c" "" "" 0 "" "" 0 3)
endif()
endif () endif ()
if ( BUILD_COMPLEX AND NOT BUILD_SINGLE) if ( BUILD_COMPLEX AND NOT BUILD_SINGLE)

View File

@ -39,8 +39,12 @@ set(UNIT_SOURCES2
trti2/trti2_L.c trti2/trti2_L.c
) )
if (NOT RELAPACK_REPLACE)
GenerateNamedObjects("${LAPACK_SOURCES}") GenerateNamedObjects("${LAPACK_SOURCES}")
GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3) GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3)
else()
GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3)
endif()
GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" "" false 3) GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" "" false 3)
GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" "" false 3) GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" "" false 3)
@ -113,4 +117,3 @@ GenerateCombinationObjects("${UNIT_SOURCES}" "UNIT" "N" "" 4)
GenerateCombinationObjects("${UNIT_SOURCES2}" "UNIT" "N" "" 0 "" "" 3) GenerateCombinationObjects("${UNIT_SOURCES2}" "UNIT" "N" "" 0 "" "" 3)
add_library(lapack OBJECT ${OPENBLAS_SRC}) add_library(lapack OBJECT ${OPENBLAS_SRC})

View File

@ -1,53 +1,61 @@
TOPDIR = .. TOPDIR = ..
include $(TOPDIR)/Makefile.system include $(TOPDIR)/Makefile.system
ifeq ($(RELAPACK_REPLACE),0)
RELAPREFIX=RELAPACK_
INCLALL=-DINCLUDE_ALL=0
else
INCLALL=-DINCLUDE_ALL=1
endif
SRC = $(wildcard src/*.c) SRC = $(wildcard src/*.c)
SRC1 = \ SRC1 = \
src/slauum.c src/clauum.c src/dlauum.c src/zlauum.c \ slauum.c clauum.c dlauum.c zlauum.c \
src/strtri.c src/dtrtri.c src/ctrtri.c src/ztrtri.c \ strtri.c dtrtri.c ctrtri.c ztrtri.c \
src/spotrf.c src/dpotrf.c src/cpotrf.c src/zpotrf.c \ spotrf.c dpotrf.c cpotrf.c zpotrf.c \
src/sgetrf.c src/dgetrf.c src/cgetrf.c src/zgetrf.c sgetrf.c dgetrf.c cgetrf.c zgetrf.c
SRC2 = \ SRC2 = \
src/cgbtrf.c src/cpbtrf.c src/dsytrf_rec2.c src/sgbtrf.c src/ssytrf_rook.c src/zhegst.c src/zsytrf_rec2.c \ cgbtrf.c cpbtrf.c dsytrf_rec2.c sgbtrf.c ssytrf_rook.c zhegst.c zsytrf_rec2.c \
src/cgemmt.c src/dgbtrf.c src/dsytrf_rook.c src/sgemmt.c src/ssytrf_rook_rec2.c src/zhetrf.c src/zsytrf_rook.c \ cgemmt.c dgbtrf.c dsytrf_rook.c sgemmt.c ssytrf_rook_rec2.c zhetrf.c zsytrf_rook.c \
src/csytrf.c src/dgemmt.c src/dsytrf_rook_rec2.c src/stgsyl.c src/zhetrf_rec2.c src/zsytrf_rook_rec2.c \ csytrf.c dgemmt.c dsytrf_rook_rec2.c stgsyl.c zhetrf_rec2.c zsytrf_rook_rec2.c \
src/chegst.c src/csytrf_rec2.c src/dtgsyl.c src/strsyl.c src/zhetrf_rook.c src/ztgsyl.c \ chegst.c csytrf_rec2.c dtgsyl.c strsyl.c zhetrf_rook.c ztgsyl.c \
src/chetrf.c src/csytrf_rook.c src/dtrsyl.c src/spbtrf.c src/strsyl_rec2.c src/zhetrf_rook_rec2.c src/ztrsyl.c \ chetrf.c csytrf_rook.c dtrsyl.c spbtrf.c strsyl_rec2.c zhetrf_rook_rec2.c ztrsyl.c \
src/chetrf_rec2.c src/csytrf_rook_rec2.c src/dpbtrf.c src/dtrsyl_rec2.c src/ztrsyl_rec2.c \ chetrf_rec2.c csytrf_rook_rec2.c dpbtrf.c dtrsyl_rec2.c ztrsyl_rec2.c \
src/chetrf_rook.c src/ctgsyl.c src/ssygst.c src/zgbtrf.c src/zpbtrf.c \ chetrf_rook.c ctgsyl.c ssygst.c zgbtrf.c zpbtrf.c \
src/chetrf_rook_rec2.c src/ctrsyl.c src/dsygst.c src/f2c.c src/ssytrf.c src/zgemmt.c \ chetrf_rook_rec2.c ctrsyl.c dsygst.c f2c.c ssytrf.c zgemmt.c \
src/ctrsyl_rec2.c src/dsytrf.c src/lapack_wrappers.c src/ssytrf_rec2.c src/zsytrf.c ctrsyl_rec2.c dsytrf.c lapack_wrappers.c ssytrf_rec2.c zsytrf.c
SRCX = \ SRCX = \
src/cgbtrf.c src/cpbtrf.c src/ctrtri.c src/dsytrf_rec2.c src/sgbtrf.c src/ssytrf_rook.c src/zhegst.c src/zsytrf_rec2.c \ cgbtrf.c cpbtrf.c ctrtri.c dsytrf_rec2.c sgbtrf.c ssytrf_rook.c zhegst.c zsytrf_rec2.c \
src/cgemmt.c src/cpotrf.c src/dgbtrf.c src/dsytrf_rook.c src/sgemmt.c src/ssytrf_rook_rec2.c src/zhetrf.c src/zsytrf_rook.c \ cgemmt.c cpotrf.c dgbtrf.c dsytrf_rook.c sgemmt.c ssytrf_rook_rec2.c zhetrf.c zsytrf_rook.c \
src/cgetrf.c src/csytrf.c src/dgemmt.c src/dsytrf_rook_rec2.c src/sgetrf.c src/stgsyl.c src/zhetrf_rec2.c src/zsytrf_rook_rec2.c \ cgetrf.c csytrf.c dgemmt.c dsytrf_rook_rec2.c sgetrf.c stgsyl.c zhetrf_rec2.c zsytrf_rook_rec2.c \
src/chegst.c src/csytrf_rec2.c src/dgetrf.c src/dtgsyl.c src/slauum.c src/strsyl.c src/zhetrf_rook.c src/ztgsyl.c \ chegst.c csytrf_rec2.c dgetrf.c dtgsyl.c slauum.c strsyl.c zhetrf_rook.c ztgsyl.c \
src/chetrf.c src/csytrf_rook.c src/dlauum.c src/dtrsyl.c src/spbtrf.c src/strsyl_rec2.c src/zhetrf_rook_rec2.c src/ztrsyl.c \ chetrf.c csytrf_rook.c dlauum.c dtrsyl.c spbtrf.c strsyl_rec2.c zhetrf_rook_rec2.c ztrsyl.c \
src/chetrf_rec2.c src/csytrf_rook_rec2.c src/dpbtrf.c src/dtrsyl_rec2.c src/spotrf.c src/strtri.c src/zlauum.c src/ztrsyl_rec2.c \ chetrf_rec2.c csytrf_rook_rec2.c dpbtrf.c dtrsyl_rec2.c spotrf.c strtri.c zlauum.c ztrsyl_rec2.c \
src/chetrf_rook.c src/ctgsyl.c src/dpotrf.c src/dtrtri.c src/ssygst.c src/zgbtrf.c src/zpbtrf.c src/ztrtri.c \ chetrf_rook.c ctgsyl.c dpotrf.c dtrtri.c ssygst.c zgbtrf.c zpbtrf.c ztrtri.c \
src/chetrf_rook_rec2.c src/ctrsyl.c src/dsygst.c src/f2c.c src/ssytrf.c src/zgemmt.c src/zpotrf.c \ chetrf_rook_rec2.c ctrsyl.c dsygst.c f2c.c ssytrf.c zgemmt.c zpotrf.c \
src/clauum.c src/ctrsyl_rec2.c src/dsytrf.c src/lapack_wrappers.c src/ssytrf_rec2.c src/zgetrf.c src/zsytrf.c clauum.c ctrsyl_rec2.c dsytrf.c lapack_wrappers.c ssytrf_rec2.c zgetrf.c zsytrf.c
OBJS1 = $(SRC1:%.c=%.$(SUFFIX))
OBJS2 = $(SRC2:%.c=%.o) OBJS1 = $(SRC1:%.c=src/$(RELAPREFIX)%.$(SUFFIX))
OBJS2 = $(SRC2:%.c=src/$(RELAPREFIX)%.o)
OBJS = $(OBJS1) $(OBJS2) OBJS = $(OBJS1) $(OBJS2)
TEST_SUITS = \ TEST_SUITS = \
slauum dlauum clauum zlauum \
spotrf dpotrf cpotrf zpotrf \
spbtrf dpbtrf cpbtrf zpbtrf \
ssygst dsygst chegst zhegst \
ssytrf dsytrf csytrf chetrf zsytrf zhetrf \
sgetrf dgetrf cgetrf zgetrf \
sgbtrf dgbtrf cgbtrf zgbtrf \
strsyl dtrsyl ctrsyl ztrsyl \
stgsyl dtgsyl ctgsyl ztgsyl \
sgemmt dgemmt cgemmt zgemmt sgemmt dgemmt cgemmt zgemmt
# slauum dlauum clauum zlauum \
# spotrf dpotrf cpotrf zpotrf \
# spbtrf dpbtrf cpbtrf zpbtrf \
# ssygst dsygst chegst zhegst \
# ssytrf dsytrf csytrf chetrf zsytrf zhetrf \
# sgetrf dgetrf cgetrf zgetrf \
# sgbtrf dgbtrf cgbtrf zgbtrf \
# strsyl dtrsyl ctrsyl ztrsyl \
# stgsyl dtgsyl ctgsyl ztgsyl \
TESTS = $(TEST_SUITS:%=test/%.pass) # dummies TESTS = $(TEST_SUITS:%=test/%.pass) # dummies
TEST_EXES = $(TEST_SUITS:%=test/%.x) TEST_EXES = $(TEST_SUITS:%=test/%.x)
@ -63,11 +71,11 @@ libs: $(OBJS)
$(AR) -r $(TOPDIR)/$(LIBNAME) $(OBJS) $(AR) -r $(TOPDIR)/$(LIBNAME) $(OBJS)
$(RANLIB) $(TOPDIR)/$(LIBNAME) $(RANLIB) $(TOPDIR)/$(LIBNAME)
%.$(SUFFIX): %.c config.h src/$(RELAPREFIX)%.$(SUFFIX): src/%.c relapack_config.h
$(CC) $(CFLAGS) -c $< -o $@ $(CC) -v $(CFLAGS) -I. $(INCLALL) -c $< -o $@
%.o: %.c config.h src/$(RELAPREFIX)%.o: src/%.c relapack_config.h
$(CC) $(CFLAGS) -c $< -o $@ $(CC) -v $(CFLAGS) -I. $(INCLALL) -c $< -o $@
# ReLAPACK testing # ReLAPACK testing

View File

@ -45,7 +45,7 @@
// The following macros specify which routines are included in the library under // The following macros specify which routines are included in the library under
// LAPACK's symbol names: 1 included, 0 not included // LAPACK's symbol names: 1 included, 0 not included
#define INCLUDE_ALL 1 // #define INCLUDE_ALL 1
#define INCLUDE_XLAUUM INCLUDE_ALL #define INCLUDE_XLAUUM INCLUDE_ALL
#define INCLUDE_SLAUUM INCLUDE_XLAUUM #define INCLUDE_SLAUUM INCLUDE_XLAUUM
@ -115,7 +115,7 @@
#define INCLUDE_CTGSYL INCLUDE_XTGSYL #define INCLUDE_CTGSYL INCLUDE_XTGSYL
#define INCLUDE_ZTGSYL INCLUDE_XTGSYL #define INCLUDE_ZTGSYL INCLUDE_XTGSYL
#define INCLUDE_XGEMMT 1 #define INCLUDE_XGEMMT INCLUDE_ALL
#define INCLUDE_SGEMMT INCLUDE_XGEMMT #define INCLUDE_SGEMMT INCLUDE_XGEMMT
#define INCLUDE_DGEMMT INCLUDE_XGEMMT #define INCLUDE_DGEMMT INCLUDE_XGEMMT
#define INCLUDE_CGEMMT INCLUDE_XGEMMT #define INCLUDE_CGEMMT INCLUDE_XGEMMT

View File

@ -1,5 +1,6 @@
include_directories(${PROJECT_SOURCE_DIR}) include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_BINARY_DIR}) include_directories(${PROJECT_BINARY_DIR})
include_directories(${PROJECT_SOURCE_DIR}/relapack)
set(RELAFILES set(RELAFILES
clauum.c clauum.c

View File

@ -10,7 +10,7 @@
http://www.netlib.org/f2c/libf2c.zip http://www.netlib.org/f2c/libf2c.zip
*/ */
#include "../config.h" #include "relapack_config.h"
#include "f2c.h" #include "f2c.h"
#if BLAS_COMPLEX_FUNCTIONS_AS_ROUTINES #if BLAS_COMPLEX_FUNCTIONS_AS_ROUTINES

View File

@ -1,7 +1,7 @@
#ifndef RELAPACK_INT_H #ifndef RELAPACK_INT_H
#define RELAPACK_INT_H #define RELAPACK_INT_H
#include <string.h> #include <string.h>
#include "../../config.h" #include "config.h"
#if defined(OS_WINDOWS) && defined(__64BIT__) #if defined(OS_WINDOWS) && defined(__64BIT__)
typedef long long BLASLONG; typedef long long BLASLONG;
typedef unsigned long long BLASULONG; typedef unsigned long long BLASULONG;
@ -9,7 +9,7 @@ typedef unsigned long long BLASULONG;
typedef long BLASLONG; typedef long BLASLONG;
typedef unsigned long BLASULONG; typedef unsigned long BLASULONG;
#endif #endif
#include "../config.h" #include "relapack_config.h"
#include "../inc/relapack.h" #include "../inc/relapack.h"

View File

@ -10,7 +10,7 @@
http://www.netlib.org/f2c/libf2c.zip http://www.netlib.org/f2c/libf2c.zip
*/ */
#include "../config.h" #include "relapack_config.h"
#include "f2c.h" #include "f2c.h"
#if BLAS_COMPLEX_FUNCTIONS_AS_ROUTINES #if BLAS_COMPLEX_FUNCTIONS_AS_ROUTINES