Merge branch 'master' into dev

This commit is contained in:
Field G. Van Zee
2018-05-13 17:50:51 -05:00
194 changed files with 883 additions and 739 deletions

414
Makefile
View File

@@ -60,8 +60,8 @@
cleantest cleanblastest cleanblistest \
changelog \
install uninstall uninstall-old \
uninstall-libs uninstall-headers uninstall-lib-symlinks \
uninstall-old-libs uninstall-old-headers
uninstall-libs uninstall-lib-symlinks uninstall-headers \
uninstall-old-libs uninstall-lib-symlinks uninstall-old-headers
@@ -105,24 +105,6 @@ BASE_OBJ_FRAME_PATH := $(BASE_OBJ_PATH)/$(FRAME_DIR)
BASE_OBJ_REFKERN_PATH := $(BASE_OBJ_PATH)/$(REFKERN_DIR)
BASE_OBJ_KERNELS_PATH := $(BASE_OBJ_PATH)/$(KERNELS_DIR)
# Construct the base path for the library.
#BASE_LIB_PATH := ./$(LIB_DIR)/$(CONFIG_NAME)
# Construct the architecture-version string, which will be used to name the
# library upon installation.
#VERS_CONF := $(VERSION)-$(CONFIG_NAME)
# --- Library names ---
# Note: These names will be modified later to include the configuration and
# version strings.
#BLIS_LIB_NAME := $(LIBBLIS_NAME).a
#BLIS_DLL_NAME := $(LIBBLIS_NAME).so
# Append the base library path to the library names.
#BLIS_LIB_PATH := $(BASE_LIB_PATH)/$(BLIS_LIB_NAME)
#BLIS_DLL_PATH := $(BASE_LIB_PATH)/$(BLIS_DLL_NAME)
# --- BLIS framework object variable names ---
# These hold object filenames corresponding to above.
@@ -132,48 +114,40 @@ MK_KERNELS_OBJS :=
# --- Define install target names for static libraries ---
#MK_BLIS_LIB := $(LIBBLIS_A_PATH)
LIBBLIS_A_INST := $(patsubst $(BASE_LIB_PATH)/%.a, \
$(INSTALL_PREFIX)/lib/%.a, \
$(LIBBLIS_A_PATH))
LIBBLIS_A_INST_W_VERS_CONF := $(patsubst $(BASE_LIB_PATH)/%.a, \
$(INSTALL_PREFIX)/lib/%-$(VERS_CONF).a, \
$(LIBBLIS_A_PATH))
LIBBLIS_A_VERS_CONF_INST := $(INSTALL_LIBDIR)/$(LIBBLIS)-$(VERS_CONF).a
LIBBLIS_A_INST := $(INSTALL_LIBDIR)/$(LIBBLIS_A)
# --- Define install target names for shared libraries ---
#MK_BLIS_DLL := $(LIBBLIS_SO_PATH)
LIBBLIS_SO_INST := $(patsubst $(BASE_LIB_PATH)/%.so, \
$(INSTALL_PREFIX)/lib/%.so, \
$(LIBBLIS_SO_PATH))
LIBBLIS_SO_INST_W_VERS_CONF := $(patsubst $(BASE_LIB_PATH)/%.so, \
$(INSTALL_PREFIX)/lib/%-$(VERS_CONF).so, \
$(LIBBLIS_SO_PATH))
LIBBLIS_SO_VERS_CONF_INST := $(INSTALL_LIBDIR)/$(LIBBLIS)-$(VERS_CONF).$(SO_SUF)
LIBBLIS_SO_INST := $(INSTALL_LIBDIR)/$(LIBBLIS_SO)
LIBBLIS_SO_MAJ_INST := $(INSTALL_LIBDIR)/$(LIBBLIS_SO).$(SO_MAJOR)
LIBBLIS_SO_MMB_INST := $(INSTALL_LIBDIR)/$(LIBBLIS_SO).$(SO_MAJOR).$(SO_MINORB)
# --- Determine which libraries to build ---
MK_LIBS :=
MK_LIBS_INST :=
MK_LIBS_INST_W_VERS_CONF :=
MK_LIBS :=
MK_LIBS_INST :=
MK_LIBS_SYML :=
ifeq ($(BLIS_ENABLE_STATIC_BUILD),yes)
MK_LIBS += $(LIBBLIS_A_PATH)
MK_LIBS_INST += $(LIBBLIS_A_INST)
MK_LIBS_INST_W_VERS_CONF += $(LIBBLIS_A_INST_W_VERS_CONF)
ifeq ($(MK_ENABLE_STATIC),yes)
MK_LIBS += $(LIBBLIS_A_PATH)
MK_LIBS_INST += $(LIBBLIS_A_INST)
MK_LIBS_SYML +=
endif
ifeq ($(BLIS_ENABLE_SHARED_BUILD),yes)
MK_LIBS += $(LIBBLIS_SO_PATH)
MK_LIBS_INST += $(LIBBLIS_SO_INST)
MK_LIBS_INST_W_VERS_CONF += $(LIBBLIS_SO_INST_W_VERS_CONF)
ifeq ($(MK_ENABLE_SHARED),yes)
MK_LIBS += $(LIBBLIS_SO_PATH)
MK_LIBS_INST += $(LIBBLIS_SO_MMB_INST)
MK_LIBS_SYML += $(LIBBLIS_SO_INST) \
$(LIBBLIS_SO_MAJ_INST)
endif
# Strip leading, internal, and trailing whitespace.
MK_LIBS_INST := $(strip $(MK_LIBS_INST))
MK_LIBS_INST_W_VERS_CONF := $(strip $(MK_LIBS_INST_W_VERS_CONF))
MK_LIBS_INST := $(strip $(MK_LIBS_INST))
MK_LIBS_SYML := $(strip $(MK_LIBS_SYML))
# Set the include directory names
MK_INCL_DIR_INST := $(INSTALL_PREFIX)/include/blis
# Set the include installation directory subdirectory name.
MK_INCL_DIR_INST := $(INSTALL_INCDIR)/blis
@@ -273,10 +247,10 @@ MK_BLIS_OBJS := $(MK_CONFIG_OBJS) \
# added into the library (and reduces compilation time).
BASE_OBJ_BLAS_PATH := $(BASE_OBJ_FRAME_PATH)/compat
BASE_OBJ_CBLAS_PATH := $(BASE_OBJ_FRAME_PATH)/compat/cblas
ifeq ($(BLIS_ENABLE_CBLAS),no)
ifeq ($(MK_ENABLE_CBLAS),no)
MK_BLIS_OBJS := $(filter-out $(BASE_OBJ_CBLAS_PATH)/%.o, $(MK_BLIS_OBJS) )
endif
ifeq ($(BLIS_ENABLE_BLAS2BLIS),no)
ifeq ($(MK_ENABLE_BLAS),no)
MK_BLIS_OBJS := $(filter-out $(BASE_OBJ_BLAS_PATH)/%.o, $(MK_BLIS_OBJS) )
endif
@@ -292,7 +266,7 @@ HEADERS_TO_INSTALL := $(BLIS_H_FLAT)
# If CBLAS is enabled, we also install cblas.h so the user does not need to
# change their source code to #include "blis.h" in order to access the CBLAS
# function prototypes and enums.
ifeq ($(BLIS_ENABLE_CBLAS),yes)
ifeq ($(MK_ENABLE_CBLAS),yes)
HEADERS_TO_INSTALL += $(CBLAS_H_FLAT)
endif
@@ -380,7 +354,7 @@ MK_TESTSUITE_OBJS := $(sort \
)
# The test suite binary executable filename.
TESTSUITE_BIN := test_$(LIBBLIS_NAME).x
TESTSUITE_BIN := test_$(LIBBLIS).x
# The location of the script that checks the BLIS testsuite output.
TESTSUITE_CHECK := $(DIST_PATH)/$(BUILD_DIR)/check-blistest.sh
@@ -391,19 +365,34 @@ TESTSUITE_CHECK := $(DIST_PATH)/$(BUILD_DIR)/check-blistest.sh
# --- Uninstall definitions ----------------------------------------------------
#
# This shell command grabs all files named "libblis-*.a" or "libblis-*.so" in
# the installation directory and then filters out the name of the library
# archive for the current version/configuration and its symlink. We consider
# this remaining set of libraries to be "old" and eligible for removal upon
# running of the uninstall-old target.
UNINSTALL_LIBS := $(shell $(FIND) $(INSTALL_PREFIX)/lib/ -name "$(LIBBLIS_NAME)-*.a" 2> /dev/null | $(GREP) -v "$(LIBBLIS_NAME)-$(VERS_CONF).a" | $(GREP) -v $(LIBBLIS_A))
UNINSTALL_LIBS += $(shell $(FIND) $(INSTALL_PREFIX)/lib/ -name "$(LIBBLIS_NAME)-*.so" 2> /dev/null | $(GREP) -v "$(LIBBLIS_NAME)-$(VERS_CONF).so" | $(GREP) -v $(LIBBLIS_SO))
ifeq ($(IS_CONFIGURED),yes)
# These shell commands gather the filepaths to any library in the current
# LIBDIR that might be left over from an old installation. We start with
# including nothing for static libraries, since older static libraries are
# always overwritten by newer ones. Then we add shared libraries, which are
# named with three .so version numbers.
UNINSTALL_OLD_LIBS :=
UNINSTALL_OLD_LIBS += $(shell $(FIND) $(INSTALL_LIBDIR)/ -name "$(LIBBLIS_SO).?.?.?" 2> /dev/null | $(GREP) -v "$(LIBBLIS_SO).$(SO_MMB)")
# These shell commands gather the filepaths to any library symlink in the
# current LIBDIR that might be left over from an old installation. We start
# with symlinks named using the .so major version number.
UNINSTALL_OLD_SYML := $(shell $(FIND) $(INSTALL_LIBDIR)/ -name "$(LIBBLIS_SO).?" 2> /dev/null | $(GREP) -v "$(LIBBLIS_SO).$(SO_MAJOR)")
# We also prepare to uninstall older-style symlinks whose names contain the
# BLIS version number and configuration family.
UNINSTALL_OLD_SYML += $(shell $(FIND) $(INSTALL_LIBDIR)/ -name "$(LIBBLIS)-*.a" 2> /dev/null | $(GREP) -v "$(LIBBLIS)-$(VERS_CONF).a")
UNINSTALL_OLD_SYML += $(shell $(FIND) $(INSTALL_LIBDIR)/ -name "$(LIBBLIS)-*.$(SO_SUF)" 2> /dev/null | $(GREP) -v "$(LIBBLIS)-$(VERS_CONF).$(SO_SUF)")
# This shell command grabs all files named "*.h" that are not blis.h or cblas.h
# in the installation directory. We consider this set of headers to be "old" and
# eligible for removal upon running of the uninstall-old-headers target.
UNINSTALL_HEADERS := $(shell $(FIND) $(INSTALL_PREFIX)/include/blis/ -name "*.h" 2> /dev/null | $(GREP) -v "$(BLIS_H)" | $(GREP) -v "$(CBLAS_H)")
UNINSTALL_OLD_HEADERS := $(shell $(FIND) $(INSTALL_INCDIR)/blis/ -name "*.h" 2> /dev/null | $(GREP) -v "$(BLIS_H)" | $(GREP) -v "$(CBLAS_H)")
endif # IS_CONFIGURED
#
@@ -420,13 +409,13 @@ test: testblis testblas
check: checkblis-fast checkblas
install: libs install-libs install-headers install-lib-symlinks
install: libs install-libs install-lib-symlinks install-headers
uninstall: uninstall-libs uninstall-headers uninstall-lib-symlinks
uninstall: uninstall-libs uninstall-lib-symlinks uninstall-headers
uninstall-old: uninstall-old-libs uninstall-old-headers
uninstall-old: uninstall-old-libs uninstall-old-symlinks uninstall-old-headers
clean: cleanlib cleantest
clean: cleanh cleanlib
# --- Environment check rules ---
@@ -454,7 +443,7 @@ endif
flat-header: check-env $(BLIS_H_FLAT)
$(BLIS_H_FLAT): $(MK_HEADER_FILES)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(FLATTEN_H) -c -v1 $(BLIS_H_SRC_PATH) $@ "./$(INCLUDE_DIR)" "$(MK_HEADER_DIR_PATHS)"
else
@echo -n "Generating monolithic blis.h"
@@ -467,7 +456,7 @@ endif
flat-cblas-header: check-env $(CBLAS_H_FLAT)
$(CBLAS_H_FLAT): $(MK_HEADER_FILES)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(FLATTEN_H) -c -v1 $(CBLAS_H_SRC_PATH) $@ "./$(INCLUDE_DIR)" "$(MK_HEADER_DIR_PATHS)"
else
@echo -n "Generating monolithic cblas.h"
@@ -486,7 +475,7 @@ endif
# CFLAGS to use during compilation.
define make-config-rule
$(BASE_OBJ_CONFIG_PATH)/$(1)/%.o: $(CONFIG_PATH)/$(1)/%.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-config-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-config-text-for,$(1))
@@ -498,7 +487,7 @@ endef
# config_name, used to look up the CFLAGS to use during compilation.
define make-frame-rule
$(BASE_OBJ_FRAME_PATH)/%.o: $(FRAME_PATH)/%.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-frame-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-frame-text-for,$(1))
@@ -509,7 +498,7 @@ endef
# first argument: a kernel set (name) being targeted (e.g. haswell).
define make-refinit-rule
$(BASE_OBJ_REFKERN_PATH)/$(1)/bli_cntx_$(1)_ref.o: $(REFKERN_PATH)/bli_cntx_ref.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-refinit-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-refinit-text-for,$(1))
@@ -520,7 +509,7 @@ endef
# first argument: a kernel set (name) being targeted (e.g. haswell).
define make-refkern-rule
$(BASE_OBJ_REFKERN_PATH)/$(1)/%_$(1)_ref.o: $(REFKERN_PATH)/%_ref.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-refkern-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-refkern-text-for,$(1))
@@ -534,7 +523,7 @@ endef
#$(BASE_OBJ_KERNELS_PATH)/$(1)/%.o: $(KERNELS_PATH)/$(1)/%.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
define make-kernels-rule
$(BASE_OBJ_KERNELS_PATH)/$(1)/%.o: $(KERNELS_PATH)/$(1)/%.$(3) $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-kernel-cflags-for,$(2)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-kernel-text-for,$(2))
@@ -588,7 +577,7 @@ libblis: check-env $(MK_LIBS)
# --- Static library archiver rules ---
$(LIBBLIS_A_PATH): $(MK_BLIS_OBJS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(AR) $(ARFLAGS) $@ $?
$(RANLIB) $@
else
@@ -601,7 +590,7 @@ endif
# --- Dynamic library linker rules ---
$(LIBBLIS_SO_PATH): $(MK_BLIS_OBJS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $(SOFLAGS) $(LDFLAGS) -o $@ $?
else
@echo "Dynamically linking $@"
@@ -621,7 +610,7 @@ blastest-run: $(BLASTEST_DRV_BINS_R)
# f2c object file rule.
$(BASE_OBJ_BLASTEST_PATH)/%.o: $(BLASTEST_F2C_SRC_PATH)/%.c
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(CFLAGS) $(BLAT_CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@@ -630,7 +619,7 @@ endif
# driver object file rule.
$(BASE_OBJ_BLASTEST_PATH)/%.o: $(BLASTEST_DRV_SRC_PATH)/%.c
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(CFLAGS) $(BLAT_CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@@ -639,7 +628,7 @@ endif
# libf2c library archive rule.
$(BLASTEST_F2C_LIB): $(BLASTEST_F2C_OBJS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(AR) $(ARFLAGS) $@ $?
$(RANLIB) $@
else
@@ -651,7 +640,7 @@ endif
# first argument: the base name of the BLAS test driver.
define make-blat-rule
$(BASE_OBJ_BLASTEST_PATH)/$(1).x: $(BASE_OBJ_BLASTEST_PATH)/$(1).o $(BLASTEST_F2C_LIB) $(LIBBLIS_LINK)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $(BASE_OBJ_BLASTEST_PATH)/$(1).o $(BLASTEST_F2C_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $$@
else
@echo "Linking $$(@F) against '$(notdir $(BLASTEST_F2C_LIB)) $(LIBBLIS_LINK) $(LDFLAGS)'"
@@ -665,7 +654,7 @@ $(foreach name, $(BLASTEST_DRV_BASES), $(eval $(call make-blat-rule,$(name))))
# A rule to run ?blat1.x driver files.
define make-run-blat1-rule
run-$(1): $(BASE_OBJ_BLASTEST_PATH)/$(1).x
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(BASE_OBJ_BLASTEST_PATH)/$(1).x > out.$(1)
else
@echo "Running $(1).x > 'out.$(1)'"
@@ -679,7 +668,7 @@ $(foreach name, $(BLASTEST_DRV1_BASES), $(eval $(call make-run-blat1-rule,$(name
# A rule to run ?blat2.x and ?blat3.x driver files.
define make-run-blat23-rule
run-$(1): $(BASE_OBJ_BLASTEST_PATH)/$(1).x
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(BASE_OBJ_BLASTEST_PATH)/$(1).x < $(BLASTEST_INPUT_PATH)/$(1).in
else
@echo "Running $(1).x < '$(BLASTEST_INPUT_PATH)/$(1).in' (output to 'out.$(1)')"
@@ -695,7 +684,7 @@ $(foreach name, $(BLASTEST_DRV3_BASES), $(eval $(call make-run-blat23-rule,$(nam
# Check the results of the BLAS test suite drivers.
checkblas: blastest-run
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(BLASTEST_CHECK)
else
@- $(BLASTEST_CHECK)
@@ -713,7 +702,7 @@ testsuite-bin: check-env $(TESTSUITE_BIN)
# Object file rule.
$(BASE_OBJ_TESTSUITE_PATH)/%.o: $(TESTSUITE_SRC_PATH)/%.c
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-frame-cflags-for,$(CONFIG_NAME)) -c $< -o $@
else
@echo "Compiling $@"
@@ -722,7 +711,7 @@ endif
# Testsuite binary rule.
$(TESTSUITE_BIN): $(MK_TESTSUITE_OBJS) $(LIBBLIS_LINK)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $(MK_TESTSUITE_OBJS) $(LIBBLIS_LINK) $(LDFLAGS) -o $@
else
@echo "Linking $@ against '$(LIBBLIS_LINK) $(LDFLAGS)'"
@@ -731,7 +720,7 @@ endif
# A rule to run the testsuite using the normal input.* files.
testsuite-run: testsuite-bin
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
./$(TESTSUITE_BIN) -g $(TESTSUITE_CONF_GEN_PATH) \
-o $(TESTSUITE_CONF_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
@@ -746,7 +735,7 @@ endif
# A rule to run the testsuite using the input.*.fast files, which
# run a set of tests designed to finish much more quickly.
testsuite-run-fast: testsuite-bin
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
./$(TESTSUITE_BIN) -g $(TESTSUITE_FAST_GEN_PATH) \
-o $(TESTSUITE_FAST_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
@@ -760,7 +749,7 @@ endif
# Check the results of the BLIS testsuite.
checkblis: testsuite-run
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(TESTSUITE_CHECK) $(TESTSUITE_OUT_FILE)
else
@- $(TESTSUITE_CHECK) $(TESTSUITE_OUT_FILE)
@@ -768,7 +757,7 @@ endif
# Check the results of the BLIS testsuite (fast).
checkblis-fast: testsuite-run-fast
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(TESTSUITE_CHECK) $(TESTSUITE_OUT_FILE)
else
@- $(TESTSUITE_CHECK) $(TESTSUITE_OUT_FILE)
@@ -779,7 +768,7 @@ endif
install-headers: check-env $(MK_INCL_DIR_INST)
$(MK_INCL_DIR_INST): $(HEADERS_TO_INSTALL) $(CONFIG_MK_FILE)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@)
$(INSTALL) -m 0644 $(HEADERS_TO_INSTALL) $(@)
else
@@ -791,24 +780,26 @@ endif
# --- Install library rules ---
install-libs: check-env $(MK_LIBS_INST_W_VERS_CONF)
install-libs: check-env $(MK_LIBS_INST)
$(INSTALL_PREFIX)/lib/%-$(VERS_CONF).a: $(BASE_LIB_PATH)/%.a $(CONFIG_MK_FILE)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
# Install static library.
$(INSTALL_LIBDIR)/%.a: $(BASE_LIB_PATH)/%.a $(CONFIG_MK_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@D)
$(INSTALL) -m 0644 $< $@
else
@echo "Installing $(@F) into $(INSTALL_PREFIX)/lib/"
@echo "Installing $(@F) into $(INSTALL_LIBDIR)/"
@$(MKDIR) $(@D)
@$(INSTALL) -m 0644 $< $@
endif
$(INSTALL_PREFIX)/lib/%-$(VERS_CONF).so: $(BASE_LIB_PATH)/%.so $(CONFIG_MK_FILE)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
# Install shared library containing .so major, minor, and build versions.
$(INSTALL_LIBDIR)/%.$(SO_SUF).$(SO_MMB): $(BASE_LIB_PATH)/%.$(SO_SUF) $(CONFIG_MK_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@D)
$(INSTALL) -m 0644 $< $@
else
@echo "Installing $(@F) into $(INSTALL_PREFIX)/lib/"
@echo "Installing $(@F) into $(INSTALL_LIBDIR)/"
@$(MKDIR) $(@D)
@$(INSTALL) -m 0644 $< $@
endif
@@ -816,26 +807,50 @@ endif
# --- Install-symlinks rules ---
install-lib-symlinks: check-env $(MK_LIBS_INST)
install-lib-symlinks: check-env $(MK_LIBS_SYML)
$(INSTALL_PREFIX)/lib/%.a: $(INSTALL_PREFIX)/lib/%-$(VERS_CONF).a
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
# Install generic shared library symlink.
$(INSTALL_LIBDIR)/%.$(SO_SUF): $(INSTALL_LIBDIR)/%.$(SO_SUF).$(SO_MMB)
ifeq ($(ENABLE_VERBOSE),yes)
$(SYMLINK) $(<F) $(@F)
$(MV) $(@F) $(INSTALL_PREFIX)/lib/
$(MV) $(@F) $(INSTALL_LIBDIR)/
else
@echo "Installing symlink $(@F) into $(INSTALL_PREFIX)/lib/"
@echo "Installing symlink $(@F) into $(INSTALL_LIBDIR)/"
@$(SYMLINK) $(<F) $(@F)
@$(MV) $(@F) $(INSTALL_PREFIX)/lib/
@$(MV) $(@F) $(INSTALL_LIBDIR)/
endif
$(INSTALL_PREFIX)/lib/%.so: $(INSTALL_PREFIX)/lib/%-$(VERS_CONF).so
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
# Install shared library symlink containing only .so major version.
$(INSTALL_LIBDIR)/%.$(SO_SUF).$(SO_MAJOR): $(INSTALL_LIBDIR)/%.$(SO_SUF).$(SO_MMB)
ifeq ($(ENABLE_VERBOSE),yes)
$(SYMLINK) $(<F) $(@F)
$(MV) $(@F) $(INSTALL_PREFIX)/lib/
$(MV) $(@F) $(INSTALL_LIBDIR)/
else
@echo "Installing symlink $(@F) into $(INSTALL_PREFIX)/lib/"
@echo "Installing symlink $(@F) into $(INSTALL_LIBDIR)/"
@$(SYMLINK) $(<F) $(@F)
@$(MV) $(@F) $(INSTALL_PREFIX)/lib/
@$(MV) $(@F) $(INSTALL_LIBDIR)/
endif
# Install static library symlink containing version and config family.
$(INSTALL_LIBDIR)/%-$(VERS_CONF).a: $(INSTALL_LIBDIR)/%.a
ifeq ($(ENABLE_VERBOSE),yes)
$(SYMLINK) $(<F) $(@F)
$(MV) $(@F) $(INSTALL_LIBDIR)/
else
@echo "Installing symlink $(@F) into $(INSTALL_LIBDIR)/"
@$(SYMLINK) $(<F) $(@F)
@$(MV) $(@F) $(INSTALL_LIBDIR)/
endif
# Install shared library symlink containing version and config family.
$(INSTALL_LIBDIR)/%-$(VERS_CONF).$(SO_SUF): $(INSTALL_LIBDIR)/%.$(SO_SUF)
ifeq ($(ENABLE_VERBOSE),yes)
$(SYMLINK) $(<F) $(@F)
$(MV) $(@F) $(INSTALL_LIBDIR)/
else
@echo "Installing symlink $(@F) into $(INSTALL_LIBDIR)/"
@$(SYMLINK) $(<F) $(@F)
@$(MV) $(@F) $(INSTALL_LIBDIR)/
endif
@@ -848,19 +863,23 @@ showconfig: check-env
@echo "kernel-to-config map: $(KCONFIG_MAP)"
@echo "-----------------------"
@echo "BLIS version string: $(VERSION)"
@echo "install prefix: $(INSTALL_PREFIX)"
@echo ".so major version: $(SO_MAJOR)"
@echo ".so minor.build vers: $(SO_MINORB)"
@echo "install libdir: $(INSTALL_LIBDIR)"
@echo "install includedir: $(INSTALL_INCDIR)"
@echo "debugging status: $(DEBUG_TYPE)"
@echo "multithreading status: $(THREADING_MODEL)"
@echo "enable BLAS API? $(BLIS_ENABLE_BLAS2BLIS)"
@echo "enable CBLAS API? $(BLIS_ENABLE_CBLAS)"
@echo "build static library? $(BLIS_ENABLE_STATIC_BUILD)"
@echo "build shared library? $(BLIS_ENABLE_SHARED_BUILD)"
@echo "enable BLAS API? $(MK_ENABLE_BLAS)"
@echo "enable CBLAS API? $(MK_ENABLE_CBLAS)"
@echo "build static library? $(MK_ENABLE_STATIC)"
@echo "build shared library? $(MK_ENABLE_SHARED)"
# --- Clean rules ---
cleanmk: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
cleanmk:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(CONFIG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
- $(FIND) $(FRAME_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
- $(FIND) $(REFKERN_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
@@ -875,71 +894,129 @@ else
@echo "Removing makefile fragments from $(KERNELS_PATH)."
@- $(FIND) $(KERNELS_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
endif
cleanh: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
$(RM_F) $(BLIS_H_FLAT)
else
@echo "Removing blis.h file from $(BASE_INC_PATH)."
@$(RM_F) $(BLIS_H_FLAT)
endif
cleanlib: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
cleanh:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(RM_F) $(BLIS_H_FLAT)
$(RM_F) $(CBLAS_H_FLAT)
else
@echo "Removing flattened header files from $(BASE_INC_PATH)."
@$(RM_F) $(BLIS_H_FLAT)
@$(RM_F) $(CBLAS_H_FLAT)
endif
endif
cleanlib:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(BASE_OBJ_PATH) -name "*.o" | $(XARGS) $(RM_F)
- $(RM_F) $(LIBBLIS_A_PATH)
- $(RM_F) $(LIBBLIS_SO_PATH)
else
@echo "Removing .o files from $(BASE_OBJ_PATH)."
@echo "Removing object files from $(BASE_OBJ_PATH)."
@- $(FIND) $(BASE_OBJ_PATH) -name "*.o" | $(XARGS) $(RM_F)
@echo "Removing $(LIBBLIS_A_PATH)."
@echo "Removing libraries from $(BASE_LIB_PATH)."
@- $(RM_F) $(LIBBLIS_A_PATH)
@echo "Removing $(LIBBLIS_SO_PATH)."
@- $(RM_F) $(LIBBLIS_SO_PATH)
endif
endif
cleantest: cleanblastest cleanblistest
cleanblastest: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(BUILDING_OOT),no)
cleanblastest: cleanblastesttop cleanblastestdir
else
cleanblastest: cleanblastesttop
endif
cleanblastesttop:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(BLASTEST_F2C_OBJS) $(BLASTEST_DRV_OBJS)
- $(RM_F) $(BLASTEST_DRV_BIN_PATHS)
- $(RM_F) $(BLASTEST_F2C_LIB)
- $(RM_F) $(BLASTEST_DRV_BIN_PATHS)
- $(RM_F) $(addprefix out.,$(BLASTEST_DRV_BASES))
else
@echo "Removing object files from $(BASE_OBJ_BLASTEST_PATH)."
@- $(RM_F) $(BLASTEST_F2C_OBJS) $(BLASTEST_DRV_OBJS)
@echo "Removing binaries from $(BASE_OBJ_BLASTEST_PATH)."
@- $(RM_F) $(BLASTEST_DRV_BIN_PATHS)
@echo "Removing libf2c.a from $(BASE_OBJ_BLASTEST_PATH)."
@- $(RM_F) $(BLASTEST_F2C_LIB)
@echo "Removing binaries from $(BASE_OBJ_BLASTEST_PATH)."
@- $(RM_F) $(BLASTEST_DRV_BIN_PATHS)
@echo "Removing driver output files 'out.*'."
@- $(RM_F) $(addprefix out.,$(BLASTEST_DRV_BASES))
endif # ENABLE_VERBOSE
endif # IS_CONFIGURED
cleanblastestdir:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(BLASTEST_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
- $(FIND) $(BLASTEST_DIR) -name "*.x" | $(XARGS) $(RM_F)
- $(RM_F) $(BLASTEST_DIR)/$(BLASTEST_F2C_LIB_NAME)
- $(RM_F) $(addprefix $(BLASTEST_DIR)/out.,$(BLASTEST_DRV_BASES))
else
@echo "Removing object files from ./$(BLASTEST_DIR)/$(OBJ_DIR)."
@- $(FIND) $(BLASTEST_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
@echo "Removing libf2c.a from ./$(BLASTEST_DIR)."
@- $(RM_F) $(BLASTEST_DIR)/$(BLASTEST_F2C_LIB_NAME)
@echo "Removing binaries from ./$(BLASTEST_DIR)."
@- $(FIND) $(BLASTEST_DIR) -name "*.x" | $(XARGS) $(RM_F)
@echo "Removing driver output files 'out.*' from ./$(BLASTEST_DIR)."
@- $(RM_F) $(addprefix $(BLASTEST_DIR)/out.,$(BLASTEST_DRV_BASES))
endif # ENABLE_VERBOSE
endif # IS_CONFIGURED
ifeq ($(BUILDING_OOT),no)
cleanblistest: cleanblistesttop cleanblistestdir
else
cleanblistest: cleanblistesttop
endif
cleanblistest: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
- $(FIND) $(BASE_OBJ_TESTSUITE_PATH) -name "*.o" | $(XARGS) $(RM_F)
- $(RM_RF) $(TESTSUITE_BIN)
cleanblistesttop:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(MK_TESTSUITE_OBJS)
- $(RM_F) $(TESTSUITE_BIN)
- $(RM_F) $(TESTSUITE_OUT_FILE)
else
@echo "Removing object files from $(BASE_OBJ_TESTSUITE_PATH)."
@- $(FIND) $(BASE_OBJ_TESTSUITE_PATH) -name "*.o" | $(XARGS) $(RM_F)
@echo "Removing $(TESTSUITE_BIN) binary."
@- $(RM_RF) $(TESTSUITE_BIN)
endif
@- $(RM_F) $(MK_TESTSUITE_OBJS)
@echo "Removing binary $(TESTSUITE_BIN)."
@- $(RM_F) $(TESTSUITE_BIN)
@echo "Removing $(TESTSUITE_OUT_FILE)."
@- $(RM_F) $(TESTSUITE_OUT_FILE)
endif # ENABLE_VERBOSE
endif # IS_CONFIGURED
distclean: check-env cleanmk cleanh cleanlib cleantest
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
cleanblistestdir:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(TESTSUITE_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
- $(RM_F) $(TESTSUITE_DIR)/$(TESTSUITE_BIN)
else
@echo "Removing object files from $(TESTSUITE_DIR)/$(OBJ_DIR)."
@- $(FIND) $(TESTSUITE_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
@echo "Removing binary $(TESTSUITE_DIR)/$(TESTSUITE_BIN)."
@- $(RM_F) $(TESTSUITE_DIR)/$(TESTSUITE_BIN)
endif # ENABLE_VERBOSE
endif # IS_CONFIGURED
distclean: cleanmk cleanh cleanlib cleantest
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(BLIS_CONFIG_H)
- $(RM_F) $(CONFIG_MK_FILE)
- $(RM_RF) $(TESTSUITE_OUT_FILE)
- $(RM_RF) $(OBJ_DIR)
- $(RM_RF) $(LIB_DIR)
- $(RM_RF) $(INCLUDE_DIR)
else
@echo "Removing $(BLIS_CONFIG_H)."
@$(RM_F) $(BLIS_CONFIG_H)
@echo "Removing $(CONFIG_MK_FILE)."
@- $(RM_F) $(CONFIG_MK_FILE)
@echo "Removing $(TESTSUITE_OUT_FILE)."
@- $(RM_F) $(TESTSUITE_OUT_FILE)
@echo "Removing $(OBJ_DIR)."
@- $(RM_RF) $(OBJ_DIR)
@echo "Removing $(LIB_DIR)."
@@ -947,11 +1024,12 @@ else
@echo "Removing $(INCLUDE_DIR)."
@- $(RM_RF) $(INCLUDE_DIR)
endif
endif
# --- CHANGELOG rules ---
changelog: check-env
changelog:
@echo "Updating '$(DIST_PATH)/$(CHANGELOG)' via '$(GIT_LOG)'."
@$(GIT_LOG) > $(DIST_PATH)/$(CHANGELOG)
@@ -959,53 +1037,47 @@ changelog: check-env
# --- Uninstall rules ---
# NOTE: We can't write these uninstall rules directly in terms of targets
# $(MK_LIBS_INST_W_VERS_CONF), $(MK_LIBS_INST), and $(MK_INCL_DIR_INST)
# $(MK_LIBS_VERS_CONF_INST), $(MK_LIBS_INST), and $(MK_INCL_DIR_INST)
# because those targets are already defined in terms of rules that *build*
# those products.
uninstall-libs: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
- $(RM_F) $(MK_LIBS_INST_W_VERS_CONF)
else
@echo "Removing $(MK_LIBS_INST_W_VERS_CONF)."
@- $(RM_F) $(MK_LIBS_INST_W_VERS_CONF)
endif
uninstall-lib-symlinks: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(MK_LIBS_INST)
else
@echo "Removing $(MK_LIBS_INST)."
@echo "Uninstalling libraries $(notdir $(MK_LIBS_INST)) from $(dir $(firstword $(MK_LIBS_INST)))."
@- $(RM_F) $(MK_LIBS_INST)
endif
uninstall-lib-symlinks: check-env
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(MK_LIBS_SYML)
else
@echo "Uninstalling symlinks $(notdir $(MK_LIBS_SYML)) from $(dir $(firstword $(MK_LIBS_SYML)))."
@- $(RM_F) $(MK_LIBS_SYML)
endif
uninstall-headers: check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_RF) $(MK_INCL_DIR_INST)
else
@echo "Removing $(MK_INCL_DIR_INST)/."
@echo "Uninstalling directory '$(notdir $(MK_INCL_DIR_INST))' from $(dir $(MK_INCL_DIR_INST))."
@- $(RM_RF) $(MK_INCL_DIR_INST)
endif
# --- Uninstall old rules ---
uninstall-old-libs: $(UNINSTALL_LIBS) check-env
uninstall-old-libs: $(UNINSTALL_OLD_LIBS) check-env
uninstall-old-headers: $(UNINSTALL_HEADERS) check-env
uninstall-old-symlinks: $(UNINSTALL_OLD_SYML) check-env
$(UNINSTALL_LIBS): check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
uninstall-old-headers: $(UNINSTALL_OLD_HEADERS) check-env
$(UNINSTALL_OLD_LIBS) $(UNINSTALL_OLD_SYML) $(UNINSTALL_OLD_HEADERS): check-env
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $@
else
@echo "Removing $(@F) from $(@D)/."
@- $(RM_F) $@
endif
$(UNINSTALL_HEADERS): check-env
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
- $(RM_F) $@
else
@echo "Removing $(@F) from $(@D)/."
@echo "Uninstalling $(@F) from $(@D)/."
@- $(RM_F) $@
endif

View File

@@ -153,6 +153,11 @@ $ ./configure auto
$ make [-j]
$ make install
```
You can then verify your build by running BLAS- and BLIS-specific test
drivers via `make check`:
```
$ make check [-j]
```
A more detailed walkthrough of the build system can be found in our
[Build system wiki](https://github.com/flame/blis/wiki/BuildSystem).
@@ -195,6 +200,16 @@ is, by default, included in BLIS.
This wiki contains a summary of new features provided by each new tagged
version (release) of BLIS, along with the date the release.
External Linux packages
-----------------------
Generally speaking, we highly recommend building from source whenever possible using the latest `git` clone. (Tarballs of each [tagged release](https://github.com/flame/blis/releases) are also available, but are not preferred since they are more difficult to upgrade from than a git clone.)
If you prefer (or need) binary packages, please check out the following offerings available thanks to generous involvement/contributions from two of our community members.
* Red Hat/Fedora. Dave Love provides rpm packages for x86_64, which he maintains at [Fedora Copr](https://copr.fedorainfracloud.org/coprs/loveshack/blis/).
* Ubuntu/Debian. Nico Schlömer provides PPA apt packages for x86_64, which he maintains at [launchpad.net](https://launchpad.net/%7Enschloe/+archive/ubuntu/blis-devel).
Discussion
----------

View File

@@ -218,7 +218,7 @@ endif
# --Object file rules --
$(TEST_OBJ_PATH)/%.o: $(F2C_PATH)/%.c
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@@ -226,7 +226,7 @@ else
endif
$(TEST_OBJ_PATH)/%.o: $(DRIVER_PATH)/%.c
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@@ -237,7 +237,7 @@ endif
# -- libf2c library archive rule --
$(F2C_LIB): $(F2C_OBJS)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(AR) $(ARFLAGS) $@ $?
$(RANLIB) $@
else
@@ -252,7 +252,7 @@ endif
# first argument: the base name of the BLAS test driver.
define make-blat-rule
$(1).x: $(TEST_OBJ_PATH)/$(1).o $(F2C_LIB) $(LIBBLIS_LINK)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $(TEST_OBJ_PATH)/$(1).o $(F2C_OBJS) $(LIBBLIS_LINK) $(LDFLAGS) -o $$@
else
@echo "Linking $$@ against '$(F2C_LIB) $(LIBBLIS_LINK) $(LDFLAGS)'"
@@ -271,7 +271,7 @@ run: $(DRIVER_BINS_R)
# A rule to run ?blat1.x driver files.
define make-run-blat1-rule
run-$(1): $(1).x
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
./$(1).x > out.$(1)
else
@echo "Running $(1).x > 'out.$(1)'"
@@ -285,7 +285,7 @@ $(foreach name, $(DRIVER1_BASES), $(eval $(call make-run-blat1-rule,$(name))))
# A rule to run ?blat2.x and ?blat3.x driver files.
define make-run-blat23-rule
run-$(1): $(1).x
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
./$(1).x < $(INPUT_DIR)/$(1).in
else
@echo "Running $(1).x < '$(INPUT_DIR)/$(1).in' (output to 'out.$(1)')"
@@ -300,7 +300,7 @@ $(foreach name, $(DRIVER2_BASES), $(eval $(call make-run-blat23-rule,$(name))))
$(foreach name, $(DRIVER3_BASES), $(eval $(call make-run-blat23-rule,$(name))))
check: run
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(BLASTEST_CHECK)
else
@- $(BLASTEST_CHECK)

View File

@@ -51,9 +51,9 @@ extern "C" {
#define F2C_LONG_LONG_BITS 64
#ifdef HAVE_BLIS_H
#if BLIS_BLAS2BLIS_INT_TYPE_SIZE == 32
#if BLIS_BLAS_INT_TYPE_SIZE == 32
typedef int32_t integer;
#elif BLIS_BLAS2BLIS_INT_TYPE_SIZE == 64
#elif BLIS_BLAS_INT_TYPE_SIZE == 64
typedef int64_t integer;
#else
typedef long int integer;

View File

@@ -64,20 +64,20 @@
// determine automatically
#endif
#if @blas2blis_int_type_size@ == 64
#define BLIS_BLAS2BLIS_INT_TYPE_SIZE 64
#elif @blas2blis_int_type_size@ == 32
#define BLIS_BLAS2BLIS_INT_TYPE_SIZE 32
#if @blas_int_type_size@ == 64
#define BLIS_BLAS_INT_TYPE_SIZE 64
#elif @blas_int_type_size@ == 32
#define BLIS_BLAS_INT_TYPE_SIZE 32
#else
// determine automatically
#endif
#ifndef BLIS_ENABLE_BLAS2BLIS
#ifndef BLIS_DISABLE_BLAS2BLIS
#if @enable_blas2blis@
#define BLIS_ENABLE_BLAS2BLIS
#ifndef BLIS_ENABLE_BLAS
#ifndef BLIS_DISABLE_BLAS
#if @enable_blas@
#define BLIS_ENABLE_BLAS
#else
#define BLIS_DISABLE_BLAS2BLIS
#define BLIS_DISABLE_BLAS
#endif
#endif
#endif

View File

@@ -38,16 +38,21 @@ CONFIG_MK_INCLUDED := yes
# The version string. This could be the official string or a custom
# string forced at configure-time.
VERSION := @version@
VERSION := @version@
# The shared library .so major and minor.build version numbers.
SO_MAJOR := @so_version_major@
SO_MINORB := @so_version_minorbuild@
SO_MMB := $(SO_MAJOR).$(SO_MINORB)
# The name of the configuration family.
CONFIG_NAME := @config_name@
CONFIG_NAME := @config_name@
# The list of sub-configurations associated with CONFIG_NAME. Each
# sub-configuration in CONFIG_LIST corresponds to a configuration
# sub-directory in the 'config' directory. See the 'config_registry'
# file for the full list of registered configurations.
CONFIG_LIST := @config_list@
CONFIG_LIST := @config_list@
# This list of kernels needed for the configurations in CONFIG_LIST.
# Each item in this list corresponds to a sub-directory in the top-level
@@ -55,48 +60,61 @@ CONFIG_LIST := @config_list@
# but not always. For example, if configuration X and Y use the same
# kernel set X, and configuration W uses kernel set Q, and the CONFIG_LIST
# might contained "X Y Z W", then the KERNEL_LIST would contain "X Z Q".
KERNEL_LIST := @kernel_list@
KERNEL_LIST := @kernel_list@
# This list contains some number of "kernel:config" pairs, where "config"
# specifies which configuration's compilation flags (CFLAGS) should be
# used to compile the source code for the kernel set named "kernel".
KCONFIG_MAP := @kconfig_map@
KCONFIG_MAP := @kconfig_map@
# The operating system name, which should be either 'Linux' or 'Darwin'.
OS_NAME := $(shell uname -s)
OS_NAME := @os_name@
# The directory path to the top level of the source distribution.
# NOTE: We allow the includer to override this value by setting DIST_PATH
# prior to including this file.
# prior to including this file. This is employed, for example, when
# common.mk (and therefore config.mk) is included by the Makefile local
# to the 'testsuite' directory, or the 'test' directory containing
# individual test drivers.
ifeq ($(strip $(DIST_PATH)),)
DIST_PATH := @dist_path@
DIST_PATH := @dist_path@
endif
# The level of debugging info to generate.
DEBUG_TYPE := @debug_type@
# The C compiler.
CC := @CC@
CC := @CC@
RANLIB := @RANLIB@
# The level of debugging info to generate.
DEBUG_TYPE := @debug_type@
# The requested threading model.
THREADING_MODEL := @threading_model@
THREADING_MODEL := @threading_model@
# The install prefix tell us where to install the libraries and header file
# directory. Notice that we support the use of DESTDIR so that advanced users
# may install to a temporary location.
INSTALL_PREFIX := $(DESTDIR)@install_prefix@
# The install libdir and includedir values from configure tell us where to
# install the libraries and header files, respectively. Notice that we
# support the use of DESTDIR so that advanced users may install to a
# temporary location.
INSTALL_LIBDIR := $(DESTDIR)@install_libdir@
INSTALL_INCDIR := $(DESTDIR)@install_incdir@
# Variables corresponding to other configure-time options.
BLIS_ENABLE_VERBOSE_MAKE_OUTPUT := @enable_verbose@
BLIS_ENABLE_STATIC_BUILD := @enable_static@
BLIS_ENABLE_SHARED_BUILD := @enable_shared@
# Whether to output verbose command-line feedback as the Makefile is processed.
ENABLE_VERBOSE := @enable_verbose@
# The status of BLAS and CBLAS compatibility layers
BLIS_ENABLE_BLAS2BLIS := @enable_blas2blis@
BLIS_ENABLE_CBLAS := @enable_cblas@
# Whether we are building out-of-tree.
BUILDING_OOT := @configured_oot@
# Whether to build the static and shared libraries.
# Note the "MK_" prefix, which helps differentiate these variables from
# their corresonding cpp macros that use the BLIS_ prefix.
MK_ENABLE_STATIC := @enable_static@
MK_ENABLE_SHARED := @enable_shared@
# Whether to enable either the BLAS or CBLAS compatibility layers.
MK_ENABLE_BLAS := @enable_blas@
MK_ENABLE_CBLAS := @enable_cblas@
# Whether libblis will depend on libmemkind for certain memory allocations.
BLIS_ENABLE_MEMKIND := @enable_memkind@
MK_ENABLE_MEMKIND := @enable_memkind@
# end of ifndef CONFIG_MK_INCLUDED conditional block
endif

View File

@@ -1,197 +0,0 @@
#!/bin/sh
#
# BLIS
# An object-based framework for developing high-performance BLAS-like
# libraries.
#
# Copyright (C) 2014, The University of Texas at Austin
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# - Neither the name of The University of Texas at Austin nor the names
# of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
#
# update-version-file.sh
#
# Field G. Van Zee
#
print_usage()
{
#local script_name
# Get the script name
#script_name=${0##*/}
# Echo usage info
echo " "
echo " "$script_name
echo " "
echo " Field G. Van Zee"
echo " "
echo " Checks whether the current BLIS distribution is a git clone: if so,"
echo " it queries git to update the 'version' file with the latest version"
echo " string; otherwise, leaves the contents of 'version' unchanged."
echo " "
echo " Usage:"
echo " ${script_name} [options] versfile"
echo " "
echo " Arguments:"
echo " "
echo " versfile The file where the version string is stored. If versfile is"
echo " is not specified, then it defaults to 'version'."
echo " "
echo " Options:"
echo " "
echo " -o SCRIPT output script name"
echo " Use SCRIPT when outputting messages instead of the script's"
echo " actual name."
echo " "
# Exit with non-zero exit status
exit 1
}
main()
{
# -- BEGIN GLOBAL VARIABLE DECLARATIONS --
# The name of the script, stripped of any preceeding path.
script_name=${0##*/}
# The name of the default version file.
version_file_def='version'
# The name of the specified version file.
version_file=''
# Strings used during version query.
git_describe_str=''
new_version_str=''
# The script name to use instead of the $0 when outputting messages.
output_name=''
# The git directory.
gitdir='.git'
# -- END GLOBAL VARIABLE DECLARATIONS --
# Process our command line options.
while getopts ":ho:" opt; do
case $opt in
o ) output_name=$OPTARG ;;
h ) print_usage ;;
\? ) print_usage
esac
done
shift $(($OPTIND - 1))
# If an output script name was given, overwrite script_name with it.
if [ -n "${output_name}" ]; then
script_name="${output_name}"
fi
echo "${script_name}: checking whether we need to update the version file."
# Check the number of arguments after command line option processing.
if [ $# = "0" ]; then
version_file=${version_file_def}
echo "${script_name}: not sure which version file to update; defaulting to '${version_file}'."
elif [ $# = "1" ]; then
version_file=$1
echo "${script_name}: checking version file '${version_file}'."
else
print_usage
fi
# Check if the .git dir exists; if it does not, we do nothing.
if [ -d "${gitdir}" ]; then
echo "${script_name}: found '${gitdir}' directory; assuming git clone."
echo "${script_name}: executing: git describe --tags."
gd_se="git_describe_se.txt"
# Query git for the version string, which is simply the current tag,
# followed by a number signifying how many commits have transpired
# since the tag, followed by a 'g' and a shortened hash tab. Capture
# stderr to a file.
git_describe_str=$(git describe --tags 2> ${gd_se})
# Pull in whatever error message was generated, if any, and delete
# the file.
git_error=$(cat ${gd_se})
# Remove the stderr file.
rm -f ${gd_se}
# If git returned an error, don't do anything.
if [ -n "${git_error}" ]; then
echo "${script_name}: git returned an error: '${git_error}'."
echo "${script_name}: leaving version file unchanged."
else
echo "${script_name}: got back ${git_describe_str}."
# Strip off the commit hash label.
new_version_str=$(echo ${git_describe_str} | cut -d- -f-2)
echo "${script_name}: truncating to ${new_version_str}."
echo "${script_name}: updating version file '${version_file}'."
# Write the new version string to the version file.
echo "${new_version_str}" > ${version_file}
fi
else
echo "${script_name}: could not find '${gitdir}' directory; leaving version file unchanged."
fi
# Exit peacefully.
return 0
}
# The script's main entry point, passing all parameters given.
main "$@"

View File

@@ -158,10 +158,30 @@ CONFIG_MK_FILE := config.mk
# it is likely that the user has not yet generated it (via configure).
ifeq ($(strip $(CONFIG_MK_INCLUDED)),yes)
CONFIG_MK_PRESENT := yes
IS_CONFIGURED := yes
else
CONFIG_MK_PRESENT := no
IS_CONFIGURED := no
endif
# If we didn't get config.mk, then we need to set some basic variables so
# that make will function without error for things like 'make clean'.
ifeq ($(IS_CONFIGURED),no)
# If this makefile fragment is being run and there is no config.mk present,
# then it's probably safe to assume that the user is currently located in the
# source distribution.
DIST_PATH := .
# Even though they won't be used explicitly, it appears that setting these
# INSTALL_* variables to something sane (that is, not allowing them default
# to the empty string) is necessary to prevent make from hanging, likely
# because the statements that define UNINSTALL_LIBS and UNINSTALL_HEADERS,
# when evaluated, result in running 'find' on the root directory--definitely
# something we would like to avoid.
INSTALL_LIBDIR := $(HOME)/blis/lib
INSTALL_INCDIR := $(HOME)/blis/include
endif
#
@@ -217,25 +237,30 @@ KERNELS_PATH := $(DIST_PATH)/$(KERNELS_DIR)
#
# --- Library paths ------------------------------------------------------------
# --- Library name and local paths ---------------------------------------------
#
# The base name of the BLIS library that we will build.
LIBBLIS_NAME := libblis
LIBBLIS := libblis
# Construct the base path for the library.
BASE_LIB_PATH := $(LIB_DIR)/$(CONFIG_NAME)
BASE_LIB_PATH := ./$(LIB_DIR)/$(CONFIG_NAME)
# The shared (dynamic) library file suffix is different for Linux and OS X.
ifeq ($(OS_NAME),Linux)
SO_SUF := so
else
SO_SUF := dylib
endif
# Note: These names will be modified later to include the configuration and
# version strings.
LIBBLIS_A := $(LIBBLIS_NAME).a
LIBBLIS_SO := $(LIBBLIS_NAME).so
LIBBLIS_A := $(LIBBLIS).a
LIBBLIS_SO := $(LIBBLIS).$(SO_SUF)
# Append the base library path to the library names.
#BLIS_LIB_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_A)
#BLIS_DLL_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_SO)
LIBBLIS_A_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_A)
LIBBLIS_SO_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_SO)
LIBBLIS_A_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_A)
LIBBLIS_SO_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_SO)
@@ -253,7 +278,6 @@ FIND := find
GREP := grep
EGREP := grep -E
XARGS := xargs
RANLIB := ranlib
INSTALL := install -c
# Script for creating a monolithic header file.
@@ -284,7 +308,7 @@ ifeq ($(VENDOR_STRING),)
$(error Unable to determine compiler vendor.)
endif
CC_VENDOR := $(firstword $(shell echo '$(VENDOR_STRING)' | $(EGREP) -o 'icc|gcc|clang|ibm'))
CC_VENDOR := $(firstword $(shell echo '$(VENDOR_STRING)' | $(EGREP) -o 'icc|gcc|clang|ibm|cc'))
ifeq ($(CC_VENDOR),)
$(error Unable to determine compiler vendor. Have you run './configure' yet?)
endif
@@ -313,7 +337,7 @@ LIBPTHREAD := -lpthread
LDFLAGS := $(LIBM) $(LIBPTHREAD)
# Add libmemkind to the link-time flags, if it was enabled at configure-time.
ifeq ($(BLIS_ENABLE_MEMKIND),yes)
ifeq ($(MK_ENABLE_MEMKIND),yes)
LDFLAGS += $(LIBMEMKIND)
endif
@@ -327,15 +351,24 @@ ifeq ($(DEBUG_TYPE),sde)
LDFLAGS := $(filter-out $(LIBMEMKIND),$(LDFLAGS))
endif
# Default flag for creating shared objects.
# The default flag for creating shared objects is different for Linux and
# OS X.
ifeq ($(OS_NAME),Linux)
SOFLAGS := -shared
SOFLAGS += -Wl,-soname,$(LIBBLIS_SO).$(SO_MAJOR)
else
SOFLAGS := -dynamiclib
SOFLAGS += -Wl,-install_name,$(LIBBLIS_SO).$(SO_MAJOR)
endif
# Specify the shared library's 'soname' field.
# Decide which library to link to for things like the testsuite. Default
# to the static library, unless only the shared library was enabled, in
# which case we use the shared library.
LIBBLIS_LINK := $(LIBBLIS_A_PATH)
ifeq ($(BLIS_ENABLE_SHARED_BUILD),yes)
ifeq ($(BLIS_ENABLE_STATIC_BUILD),no)
ifeq ($(MK_ENABLE_SHARED),yes)
ifeq ($(MK_ENABLE_STATIC),no)
LIBBLIS_LINK := $(LIBBLIS_SO_PATH)
endif
endif
@@ -484,12 +517,12 @@ endif
#
ifeq ($(V),1)
BLIS_ENABLE_VERBOSE_MAKE_OUTPUT := yes
ENABLE_VERBOSE := yes
BLIS_ENABLE_TEST_OUTPUT := yes
endif
ifeq ($(V),0)
BLIS_ENABLE_VERBOSE_MAKE_OUTPUT := no
ENABLE_VERBOSE := no
BLIS_ENABLE_TEST_OUTPUT := no
endif
@@ -627,7 +660,7 @@ BLIS_H_FLAT := $(BASE_INC_PATH)/$(BLIS_H)
# Paths to these files will be needed when compiling with the monolithic
# header.
REF_KER_SRC := $(DIST_PATH)/$(REFKERN_DIR)/bli_cntx_ref.c
REF_KER_HEADERS := $(shell grep "\#include" $(REF_KER_SRC) | sed -e "s/\#include [\"<]\([a-zA-Z0-9\_\.\/\-]*\)[\">].*/\1/g" | grep -v blis.h)
REF_KER_HEADERS := $(shell $(GREP) "\#include" $(REF_KER_SRC) | sed -e "s/\#include [\"<]\([a-zA-Z0-9\_\.\/\-]*\)[\">].*/\1/g" | $(GREP) -v blis.h)
# Match each header found above with the path to that header, and then strip
# leading, trailing, and internal whitespace.
@@ -655,6 +688,15 @@ CBLAS_H_SRC_PATH := $(filter %/$(CBLAS_H), $(MK_HEADER_FILES))
CBLAS_H_FLAT := $(BASE_INC_PATH)/$(CBLAS_H)
#
# --- BLIS configuration header definitions ------------------------------------
#
# This file was created by configure, but we need to define it here so we can
# remove it as part of the clean targets.
BLIS_CONFIG_H := ./bli_config.h
#
# --- Special preprocessor macro definitions -----------------------------------
#

View File

@@ -74,7 +74,7 @@ CPPROCFLAGS += -DBLIS_DISABLE_MEMKIND
# config.mk, however, the make_defs.mk files (this file) get included
# after config.mk, so this definition will override that earlier
# definition.
BLIS_ENABLE_MEMKIND := no
MK_ENABLE_MEMKIND := no
endif
# Flags specific to optimized kernels.

View File

@@ -111,10 +111,14 @@ void bli_cntx_init_zen( cntx_t* cntx )
// s d c z
bli_blksz_init_easy( &blkszs[ BLIS_MR ], 6, 6, 3, 3 );
bli_blksz_init_easy( &blkszs[ BLIS_NR ], 16, 8, 8, 4 );
//bli_blksz_init_easy( &blkszs[ BLIS_MC ], 144, 510, 144, 72 );
//bli_blksz_init_easy( &blkszs[ BLIS_KC ], 256, 1024, 256, 256 );
#ifdef BLIS_ENABLE_ZEN_BLOCK_SIZES
// Zen optmized level 3 cache block sizes
bli_blksz_init_easy( &blkszs[ BLIS_MC ], 144, 510, 144, 72 );
bli_blksz_init_easy( &blkszs[ BLIS_KC ], 256, 1024, 256, 256 );
#else
bli_blksz_init_easy( &blkszs[ BLIS_MC ], 144, 72, 144, 72 );
bli_blksz_init_easy( &blkszs[ BLIS_KC ], 256, 256, 256, 256 );
#endif
bli_blksz_init_easy( &blkszs[ BLIS_NC ], 4080, 4080, 4080, 4080 );
bli_blksz_init_easy( &blkszs[ BLIS_AF ], 8, 8, -1, -1 );
bli_blksz_init_easy( &blkszs[ BLIS_DF ], 8, 8, -1, -1 );

View File

@@ -42,13 +42,13 @@
#define BLIS_DEFAULT_MR_THREAD_MAX 1
#define BLIS_DEFAULT_NR_THREAD_MAX 1
//#define BLIS_ENABLE_SMALL_MATRIX
#define BLIS_ENABLE_ZEN_BLOCK_SIZES
#define BLIS_ENABLE_SMALL_MATRIX
// This will select the threshold below which small matrix code will be called.
//#define BLIS_SMALL_MATRIX_THRES 700
//#define BLIS_SMALL_M_RECT_MATRIX_THRES 160
//#define BLIS_SMALL_K_RECT_MATRIX_THRES 128
#define BLIS_SMALL_MATRIX_THRES 700
#define BLIS_SMALL_M_RECT_MATRIX_THRES 160
#define BLIS_SMALL_K_RECT_MATRIX_THRES 128

400
configure vendored
View File

@@ -38,6 +38,12 @@
print_usage()
{
# Use the version string in the 'version' file since we don't have
# the patched version string yet.
if [ -z "${version}" ]; then
version=$(cat "${version_filepath}")
fi
# Echo usage info.
echo " "
echo " ${script_name} (BLIS ${version})"
@@ -65,10 +71,28 @@ print_usage()
echo " "
echo " -p PREFIX, --prefix=PREFIX"
echo " "
echo " The path to which make will install buid products."
echo " If not given, PREFIX defaults to \$(HOME)/blis. If"
echo " the path refers to a directory that does not exist,"
echo " it will be created."
echo " The path to which make will install all build products."
echo " If given, this option implicitly sets LIBDIR to"
echo " PREFIX/lib and INCDIR to PREFIX/include (see below); if"
echo " not given, PREFIX defaults to \$(HOME)/blis. If PREFIX"
echo " refers to a directory that does not exist, it will be"
echo " created."
echo " "
echo " --libdir=LIBDIR"
echo " "
echo " The path to which make will install libraries. If given,"
echo " LIBDIR will override the corresponding directory implied"
echo " by --prefix; if not not given, LIBDIR defaults to"
echo " PREFIX/lib. If LIBDIR refers to a directory that does not"
echo " exist, it will be created."
echo " "
echo " --includedir=INCDIR"
echo " "
echo " The path to which make will install development header"
echo " files. If given, INCDIR will override the corresponding"
echo " directory implied by --prefix; if not given, INCDIR"
echo " defaults to PREFIX/include. If INCDIR refers to a"
echo " directory that does not exist, it will be created."
echo " "
echo " -d DEBUG, --enable-debug[=DEBUG]"
echo " "
@@ -79,18 +103,20 @@ print_usage()
echo " "
echo " --enable-verbose-make, --disable-verbose-make"
echo " "
echo " Enable (disabled by default) verbose compilation"
echo " output during make."
echo " Enable (disabled by default) verbose compilation output"
echo " during make."
echo " "
echo " --disable-static, --enable-static"
echo " "
echo " Disable (enabled by default) building BLIS as a static"
echo " library. May be combined with --enable-shared."
echo " library. If the static library build is disabled, the"
echo " shared library build must remain enabled."
echo " "
echo " --enable-shared, --disable-static"
echo " --disable-shared, --enable-shared"
echo " "
echo " Enable (disabled by default) building BLIS as a shared"
echo " library. May be combined with --enable-static."
echo " Disable (enabled by default) building BLIS as a shared"
echo " library. If the shared library build is disabled, the"
echo " static library build must remain enabled."
echo " "
echo " -t MODEL, --enable-threading[=MODEL], --disable-threading"
echo " "
@@ -172,6 +198,7 @@ print_usage()
echo " Environment Variables:"
echo " "
echo " CC Specifies the C compiler to use."
echo " RANLIB Specifies the ranlib executable to use."
echo " "
echo " Environment variables may also be specified as command line"
echo " options, e.g.:"
@@ -1039,7 +1066,12 @@ get_compiler_version()
# The last part ({ read first rest ; echo $first ; }) is a workaround
# to OS X's egrep only returning the first match.
cc_vendor=$(echo "${vendor_string}" | egrep -o 'icc|gcc|clang|emcc|pnacl|IBM' | { read first rest ; echo $first ; })
cc_version=$(echo "${vendor_string}" | egrep -o '[0-9]+\.[0-9]+\.?[0-9]*' | { read first rest ; echo ${first} ; })
if [ "$cc_vendor" = "icc" -o "$cc_vendor" = "gcc" -o "$cc_vendor" = "clang" ]
then
cc_version=$(${cc} -dumpversion)
else
cc_version=$(echo "${vendor_string}" | egrep -o '[0-9]+\.[0-9]+\.?[0-9]*' | { read first rest ; echo ${first} ; })
fi
# Parse the version number into its major, minor, and revision
# components.
@@ -1277,6 +1309,73 @@ try_assemble()
echo "${rval}"
}
set_default_version()
{
local gitdir version_file gd_stderr git_describe_str git_error new_version_str
gitdir='.git'
# The path to the version file.
version_file=$1
echo "${script_name}: determining default version string."
# Check if the .git dir exists; if it does not, we do nothing.
if [ -d "${dist_path}/${gitdir}" ]; then
echo "${script_name}: found '${gitdir}' directory; assuming git clone."
echo "${script_name}: executing: git describe --tags."
gd_stderr="git_describe_stderr.txt"
# Query git for the version string, which is simply the current tag,
# followed by a number signifying how many commits have transpired
# since the tag, followed by a 'g' and a shortened hash tab. Capture
# stderr to a file.
git_describe_str=$(git -C ${dist_path} describe --tags 2> ${gd_stderr})
# Pull in whatever error message was generated, if any, and delete
# the file.
git_error=$(cat ${gd_stderr})
# Remove the stderr file.
rm -f ${gd_stderr}
# If git returned an error, don't do anything.
if [ -n "${git_error}" ]; then
echo "${script_name}: git returned an error: '${git_error}'."
echo "${script_name}: using string from unmodified version file."
# Use what's in the version file as-is.
version=$(cat "${version_file}")
else
echo "${script_name}: got back ${git_describe_str}."
# Strip off the commit hash label.
new_version_str=$(echo ${git_describe_str} | cut -d- -f-2)
echo "${script_name}: truncating to ${new_version_str}."
# Write the new version string to the version file.
#echo "${new_version_str}" > ${version_file}
# Set the version variable.
version="${new_version_str}"
fi
else
echo "${script_name}: could not find '${gitdir}' directory; using unmodified version file."
# Use what's in the version file as-is.
version=$(cat "${version_file}")
fi
}
#
# -- main function -------------------------------------------------------------
#
@@ -1327,9 +1426,6 @@ main()
bli_config_h_in_path="${build_dirpath}/${bli_config_h_in}"
bli_config_h_out_path="${cur_dirpath}/${bli_config_h_out}"
# Path to 'update-version-file.sh' script.
update_version_file_sh="${build_dirpath}/update-version-file.sh"
# Path to 'mirror-tree.sh' script.
mirror_tree_sh="${build_dirpath}/mirror-tree.sh"
@@ -1371,12 +1467,20 @@ main()
# The name of the directory in which the BLIS test suite is kept.
testsuite_dir='testsuite'
# The install prefix flag.
install_prefix_def="${HOME}/blis"
install_prefix=''
# The user-given install prefix and a flag indicating it was given.
#install_prefix_def="${HOME}/blis"
install_prefix_user=${HOME}/blis # default to this directory.
prefix_flag=''
# The debug flag.
# The user-given install libdir and a flag indicating it was given.
install_libdir_user=''
libdir_flag=''
# The user-given install includedir and a flag indicating it was given.
install_incdir_user=''
incdir_flag=''
# The user-given debug type and a flag indicating it was given.
debug_type=''
debug_flag=''
@@ -1386,19 +1490,30 @@ main()
# Option variables.
quiet_flag=''
show_config_list=''
# Additional flags.
enable_verbose='no'
enable_static='yes'
enable_shared='no'
enable_shared='yes'
enable_packbuf_pools='yes'
int_type_size=0
blas2blis_int_type_size=32
enable_blas2blis='yes'
blas_int_type_size=32
enable_blas='yes'
enable_cblas='no'
enable_memkind='' # The default memkind value is determined later on.
force_version='no'
# The shared library (.so) version file.
so_version_file='so_version'
so_version_filepath="${dist_path}/${so_version_file}"
# The major and minor/build .so version numbers.
so_version_major=''
so_version_minorbuild=''
# Whether we are building out-of-tree.
configured_oot="no"
# The name of the chosen configuration (the configuration "family").
config_name=''
@@ -1433,7 +1548,15 @@ main()
;;
prefix=*)
prefix_flag=1
install_prefix=${OPTARG#*=}
install_prefix_user=${OPTARG#*=}
;;
libdir=*)
libdir_flag=1
install_libdir_user=${OPTARG#*=}
;;
includedir=*)
incdir_flag=1
install_incdir_user=${OPTARG#*=}
;;
enable-debug)
debug_flag=1
@@ -1480,13 +1603,13 @@ main()
int_type_size=${OPTARG#*=}
;;
blas-int-size=*)
blas2blis_int_type_size=${OPTARG#*=}
blas_int_type_size=${OPTARG#*=}
;;
enable-blas)
enable_blas2blis='yes'
enable_blas='yes'
;;
disable-blas)
enable_blas2blis='no'
enable_blas='no'
;;
enable-cblas)
enable_cblas='yes'
@@ -1531,7 +1654,7 @@ main()
int_type_size=$OPTARG
;;
b)
blas2blis_int_type_size=$OPTARG
blas_int_type_size=$OPTARG
;;
c)
show_config_list=1
@@ -1550,6 +1673,10 @@ main()
CC=${1#*=}
shift
;;
RANLIB=*)
RANLIB=${1#*=}
shift
;;
*=*)
print_usage
;;
@@ -1560,6 +1687,13 @@ main()
done
# -- Check the operating system --------------------------------------------
os_name=$(uname -s)
os_vers=$(uname -r)
echo "${script_name}: detected ${os_name} kernel version ${os_vers}."
# -- Check the compiler version --------------------------------------------
# Find a working C compiler.
@@ -1618,11 +1752,11 @@ main()
# -- Acquire the BLIS version ----------------------------------------------
# Check whether we need to update the version file.
${update_version_file_sh} -o "${script_name}" "${version_filepath}"
# Query which version of BLIS this is.
version=$(cat ${version_filepath})
# Set the 'version' variable to the default value (the 'git describe'
# augmented instance of whatever is in the 'version' file if this is a git
# clone, or whatever is in the 'version' file unmodified if it is a bare
# source release).
set_default_version "${version_filepath}"
# Initial message.
echo "${script_name}: starting configuration of BLIS ${version}."
@@ -1636,6 +1770,20 @@ main()
fi
# -- Acquire the shared library (.so) versions -----------------------------
# The first line of the 'so_version' file contains the .so major version.
so_version_major=$(cat ${so_version_filepath} | sed -n "1p")
# The second line contains the minor and build .so version numbers
# (separated by a '.').
so_version_minorbuild=$(cat ${so_version_filepath} | sed -n "2p")
echo "${script_name}: found shared library .so version '${so_version_major}.${so_version_minorbuild}'."
echo "${script_name}: .so major version: ${so_version_major}"
echo "${script_name}: .so minor.build version: ${so_version_minorbuild}"
# -- Various pre-configuration checks --------------------------------------
# Set config_name based on the number of arguments leftover (after command
@@ -1895,15 +2043,43 @@ main()
# -- Prepare variables for subsitution into template files -----------------
# Set the install prefix if it was not already set when parsing the install
# prefix flag.
# Parse the status of the install prefix and echo feedback.
if [ -n "${prefix_flag}" ]; then
echo "${script_name}: using install prefix '${install_prefix}'."
echo "${script_name}: detected --prefix='${install_prefix_user}'."
else
install_prefix="${install_prefix_def}"
echo "${script_name}: no install prefix given; defaulting to '${install_prefix}'."
echo "${script_name}: no install prefix option given; defaulting to '${install_prefix_user}'."
fi
# Set initial (candidate) values for the libdir and includedir using the
# install prefix that was determined above.
install_libdir=${install_prefix_user}/lib
install_incdir=${install_prefix_user}/include
# Set the install libdir, if it was specified. Note that this will override
# the default libdir implied by the install prefix, even if both options
# were given.
if [ -n "${libdir_flag}" ]; then
echo "${script_name}: detected --libdir='${install_libdir_user}'."
install_libdir=${install_libdir_user}
else
echo "${script_name}: no install libdir option given; defaulting to PREFIX/lib."
fi
# Set the install includedir, if it was specified. Note that this will
# override the default includedir implied by the install prefix, even if
# both options were given.
if [ -n "${incdir_flag}" ]; then
echo "${script_name}: detected --includedir='${install_incdir}'."
install_incdir=${install_incdir_user}
else
echo "${script_name}: no install includedir option given; defaulting to PREFIX/include."
fi
# Echo the installation directories that we settled on.
echo "${script_name}: final installation directories:"
echo "${script_name}: libdir: ${install_libdir}"
echo "${script_name}: includedir: ${install_incdir}"
# Check if the debug flag was specified.
if [ -n "${debug_flag}" ]; then
if [ "x${debug_type}" = "xopt" ]; then
@@ -1928,18 +2104,15 @@ main()
fi
# Check if the static lib flag was specified.
if [ "x${enable_static}" = "xyes" ]; then
echo "${script_name}: building BLIS as a static library."
fi
# Check if the shared lib flag was specified.
if [ "x${enable_shared}" = "xyes" ]; then
echo "${script_name}: building BLIS as a shared library."
fi
# Check if neither flag was specified.
if [ "x${enable_static}" = "xno" -a "x${enable_shared}" = "xno" ]; then
echo "Neither a shared nor static library build has been requested."
if [ "x${enable_static}" = "xyes" -a "x${enable_shared}" = "xyes" ]; then
echo "${script_name}: building BLIS as both static and shared libraries."
elif [ "x${enable_static}" = "xyes" -a "x${enable_shared}" = "xno" ]; then
echo "${script_name}: building BLIS as a static library (shared library disabled)."
elif [ "x${enable_static}" = "xno" -a "x${enable_shared}" = "xyes" ]; then
echo "${script_name}: building BLIS as a shared library (static library disabled)."
else
echo "${script_name}: Both static and shared libraries were disabled."
echo "${script_name}: Please enable one (or both) to continue."
exit 1
fi
@@ -2001,18 +2174,18 @@ main()
fi
enable_memkind_01=0
fi
if [ "x${enable_blas2blis}" = "xyes" ]; then
if [ "x${enable_blas}" = "xyes" ]; then
echo "${script_name}: the BLAS compatibility layer is enabled."
enable_blas2blis_01=1
enable_blas_01=1
else
echo "${script_name}: the BLAS compatibility layer is disabled."
enable_blas2blis_01=0
enable_blas_01=0
fi
if [ "x${enable_cblas}" = "xyes" ]; then
echo "${script_name}: the CBLAS compatibility layer is enabled."
enable_cblas_01=1
# Force BLAS layer when CBLAS is enabled
enable_blas2blis='yes'
enable_blas='yes'
else
echo "${script_name}: the CBLAS compatibility layer is disabled."
enable_cblas_01=0
@@ -2026,9 +2199,9 @@ main()
else
echo "${script_name}: the internal integer size is automatically determined."
fi
if [ "x${blas2blis_int_type_size}" = "x32" ]; then
if [ "x${blas_int_type_size}" = "x32" ]; then
echo "${script_name}: the BLAS/CBLAS interface integer size is 32-bit."
elif [ "x${blas2blis_int_type_size}" = "x64" ]; then
elif [ "x${blas_int_type_size}" = "x64" ]; then
echo "${script_name}: the BLAS/CBLAS interface integer size is 64-bit."
else
echo "${script_name}: the BLAS/CBLAS interface integer size is automatically determined."
@@ -2038,9 +2211,11 @@ main()
# Variables that contain forward slashes, such as paths, need extra
# escaping when used in sed commands. We insert those extra escape
# characters here so that the sed commands below do the right thing.
install_prefix_esc=$(echo "${install_prefix}" | sed 's/\//\\\//g')
install_libdir_esc=$(echo "${install_libdir}" | sed 's/\//\\\//g')
install_incdir_esc=$(echo "${install_incdir}" | sed 's/\//\\\//g')
dist_path_esc=$(echo "${dist_path}" | sed 's/\//\\\//g')
cc_esc=$(echo "${CC}" | sed 's/\//\\\//g')
ranlib_esc=$(echo "${RANLIB:-ranlib}" | sed 's/\//\\\//g')
# Create a #define for the configuration family (config_name).
uconf=$(echo ${config_name} | tr '[:lower:]' '[:upper:]')
@@ -2071,6 +2246,30 @@ main()
done
# -- Determine whether we are performing an out-of-tree build --------------
if [ ${dist_path} != "./" ]; then
# At this point, we know the user did not run "./configure". But we
# have not yet ruled out "<fullpath>/configure" or some # equivalent
# that uses relative paths. To further rule out these possibilities,
# we create a dummy file in the current build directory.
touch ./${dummy_file}
# If the dummy file we just created in the current directory does not
# appear in the source distribution path, then we are in a different
# directory and thus we must create a symbolic link.
if [ ! -f "${dist_path}/${dummy_file}" ]; then
configured_oot="yes"
else
configured_oot="no"
fi
# Remove the dummy file.
rm -f "./${dummy_file}"
fi
# -- Instantiate config.mk, bli_config.h files from templates --------------
# Begin substituting information into the config_mk_in file, outputting
@@ -2078,19 +2277,25 @@ main()
echo "${script_name}: creating ${config_mk_out_path} from ${config_mk_in_path}"
cat "${config_mk_in_path}" \
| sed -e "s/@version@/${version}/g" \
| sed -e "s/@so_version_major@/${so_version_major}/g" \
| sed -e "s/@so_version_minorbuild@/${so_version_minorbuild}/g" \
| sed -e "s/@config_name@/${config_name}/g" \
| sed -e "s/@config_list@/${config_list}/g" \
| sed -e "s/@kernel_list@/${kernel_list}/g" \
| sed -e "s/@kconfig_map@/${kconfig_map}/g" \
| sed -e "s/@os_name@/${os_name}/g" \
| sed -e "s/@dist_path@/${dist_path_esc}/g" \
| sed -e "s/@CC@/${cc_esc}/g" \
| sed -e "s/@RANLIB@/${ranlib_esc}/g" \
| sed -e "s/@debug_type@/${debug_type}/g" \
| sed -e "s/@install_prefix@/${install_prefix_esc}/g" \
| sed -e "s/@threading_model@/${threading_model}/g" \
| sed -e "s/@install_libdir@/${install_libdir_esc}/g" \
| sed -e "s/@install_incdir@/${install_incdir_esc}/g" \
| sed -e "s/@enable_verbose@/${enable_verbose}/g" \
| sed -e "s/@configured_oot@/${configured_oot}/g" \
| sed -e "s/@enable_static@/${enable_static}/g" \
| sed -e "s/@enable_shared@/${enable_shared}/g" \
| sed -e "s/@threading_model@/${threading_model}/g" \
| sed -e "s/@enable_blas2blis@/${enable_blas2blis}/g" \
| sed -e "s/@enable_blas@/${enable_blas}/g" \
| sed -e "s/@enable_cblas@/${enable_cblas}/g" \
| sed -e "s/@enable_memkind@/${enable_memkind}/g" \
> "${config_mk_out_path}"
@@ -2110,8 +2315,8 @@ main()
| sed -e "s/@enable_pthreads@/${enable_pthreads_01}/g" \
| sed -e "s/@enable_packbuf_pools@/${enable_packbuf_pools_01}/g" \
| sed -e "s/@int_type_size@/${int_type_size}/g" \
| sed -e "s/@blas2blis_int_type_size@/${blas2blis_int_type_size}/g" \
| sed -e "s/@enable_blas2blis@/${enable_blas2blis_01}/g" \
| sed -e "s/@blas_int_type_size@/${blas_int_type_size}/g" \
| sed -e "s/@enable_blas@/${enable_blas_01}/g" \
| sed -e "s/@enable_cblas@/${enable_cblas_01}/g" \
| sed -e "s/@enable_memkind@/${enable_memkind_01}/g" \
> "${bli_config_h_out_path}"
@@ -2304,57 +2509,40 @@ main()
# -- Handle out-of-tree builds ---------------------------------------------
# Under some circumstances, we need to create a symbolic link to the
# Makefile. We only proceed with this if configure was run with a path
# other than "./".
if [ ${dist_path} != "./" ]; then
# Under some circumstances, we need to create some symbolic links to
# properly handle out-of-tree builds.
if [ "${configured_oot}" = "yes" ]; then
# At this point, we know the user did not run "./configure". But we
# have not yet ruled out "<fullpath>/configure" or some # equivalent
# that uses relative paths. To further rule out these possibilities,
# we create a dummy file in the current build directory.
touch "./${dummy_file}"
# If 'Makefile' does not already exist in the current directory,
# create a symbolic link to it. If one does exist, we us -f to
# force creation of a new link.
if [ ! -e "./Makefile" ]; then
# If the dummy file we just created in the current directory does not
# appear in the source distribution path, then we are in a different
# directory and thus we must create a symbolic link.
if [ ! -f "${dist_path}/${dummy_file}" ]; then
echo "${script_name}: creating symbolic link to Makefile."
ln -s "${dist_path}/Makefile"
# If 'Makefile' does not already exist in the current directory,
# create a symbolic link to it. If one does exist, we us -f to
# force creation of a new link.
if [ ! -e "./Makefile" ]; then
echo "${script_name}: creating symbolic link to Makefile."
ln -s "${dist_path}/Makefile"
else
echo "${script_name}: symbolic link to Makefile already exists; forcing creation of new link."
ln -sf "${dist_path}/Makefile"
fi
# If 'common.mk' does not already exist in the current directory,
# create a symbolic link to it. If one does exist, we us -f to
# force creation of a new link.
if [ ! -e "./common.mk" ]; then
echo "${script_name}: creating symbolic link to common.mk."
ln -s "${dist_path}/common.mk"
else
echo "${script_name}: symbolic link to common.mk already exists; forcing creation of new link."
ln -sf "${dist_path}/common.mk"
fi
echo "${script_name}: configured to build outside of source distribution."
else
# Echo what is happening.
echo "${script_name}: configured to build within top-level directory of source distribution."
echo "${script_name}: symbolic link to Makefile already exists; forcing creation of new link."
ln -sf "${dist_path}/Makefile"
fi
# Remove the dummy file.
rm -f "./${dummy_file}"
# If 'common.mk' does not already exist in the current directory,
# create a symbolic link to it. If one does exist, we us -f to
# force creation of a new link.
if [ ! -e "./common.mk" ]; then
echo "${script_name}: creating symbolic link to common.mk."
ln -s "${dist_path}/common.mk"
else
echo "${script_name}: symbolic link to common.mk already exists; forcing creation of new link."
ln -sf "${dist_path}/common.mk"
fi
echo "${script_name}: configured to build outside of source distribution."
else
echo "${script_name}: configured to build within top-level directory of source distribution."
fi

View File

@@ -152,7 +152,7 @@ bin: $(TEST_BINS)
# --Object file rules --
$(TEST_OBJ_PATH)/%.o: $(TEST_SRC_PATH)/%.c $(LIBBLIS_LINK)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@@ -163,7 +163,7 @@ endif
# -- Executable file rules --
%.x: %.o $(LIBBLIS_LINK)
ifeq ($(BLIS_ENABLE_VERBOSE_MAKE_OUTPUT),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@
else
@echo "Linking $@ against '$(LIBBLIS_LINK) $(LDFLAGS)'"

View File

@@ -69,9 +69,9 @@ gint_t bli_info_get_enable_stay_auto_init( void )
return 0;
#endif
}
gint_t bli_info_get_enable_blas2blis( void )
gint_t bli_info_get_enable_blas( void )
{
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
return 1;
#else
return 0;
@@ -85,7 +85,7 @@ gint_t bli_info_get_enable_cblas( void )
return 0;
#endif
}
gint_t bli_info_get_blas2blis_int_type_size( void ) { return BLIS_BLAS2BLIS_INT_TYPE_SIZE; }
gint_t bli_info_get_blas_int_type_size( void ) { return BLIS_BLAS_INT_TYPE_SIZE; }
gint_t bli_info_get_enable_packbuf_pools( void )
{
#ifdef BLIS_ENABLE_PACKBUF_POOLS

View File

@@ -54,9 +54,9 @@ gint_t bli_info_get_heap_addr_align_size( void );
gint_t bli_info_get_heap_stride_align_size( void );
gint_t bli_info_get_pool_addr_align_size( void );
gint_t bli_info_get_enable_stay_auto_init( void );
gint_t bli_info_get_enable_blas2blis( void );
gint_t bli_info_get_enable_blas( void );
gint_t bli_info_get_enable_cblas( void );
gint_t bli_info_get_blas2blis_int_type_size( void );
gint_t bli_info_get_blas_int_type_size( void );
gint_t bli_info_get_enable_packbuf_pools( void );

View File

@@ -81,7 +81,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( gbmv, gbmv )
#endif

View File

@@ -52,7 +52,7 @@ void PASTEF77(ch,blasname)( \
ftype* y, f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( gbmv )
#endif

View File

@@ -73,7 +73,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( hbmv, hbmv )
#endif

View File

@@ -50,7 +50,7 @@ void PASTEF77(ch,blasname)( \
ftype* y, f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( hbmv )
#endif

View File

@@ -72,7 +72,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( hpmv, hpmv )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF77(ch,blasname)( \
ftype* y, f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( hpmv )
#endif

View File

@@ -67,7 +67,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( hpr, hpr )
#endif

View File

@@ -47,7 +47,7 @@ void PASTEF77(ch,blasname)( \
ftype* a \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( hpr )
#endif

View File

@@ -71,7 +71,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( hpr2, hpr2 )
#endif

View File

@@ -48,7 +48,7 @@ void PASTEF77(ch,blasname)( \
ftype* a \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( hpr2 )
#endif

View File

@@ -66,7 +66,7 @@ void PASTEF772(chxy,chr,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCR2_BLAS( rot, ROT_KERNEL )
#endif

View File

@@ -47,7 +47,7 @@ void PASTEF772(chxy,chr,blasname)( \
ftype_r* s \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTR2_BLAS( rot )
#endif

View File

@@ -51,7 +51,7 @@ void PASTEF77(chxy,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCR_BLAS( rotg, rotg, ROTG_KERNEL )
#endif

View File

@@ -46,7 +46,7 @@ void PASTEF77(chxy,blasname)( \
ftype_r* s \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTR_BLAS( rotg, rotg )
#endif

View File

@@ -65,7 +65,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( rotm, ROTM_KERNEL )
#endif

View File

@@ -46,7 +46,7 @@ void PASTEF77(ch,blasname)( \
ftype* dparam \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( rotm )
#endif

View File

@@ -52,7 +52,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( rotmg, ROTMG_KERNEL )
#endif

View File

@@ -47,7 +47,7 @@ void PASTEF77(ch,blasname)( \
ftype* dparam \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( rotmg )
#endif

View File

@@ -73,7 +73,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( sbmv, sbmv )
#endif

View File

@@ -50,7 +50,7 @@ void PASTEF77(ch,blasname)( \
ftype* y, f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( sbmv )
#endif

View File

@@ -72,7 +72,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( spmv, spmv )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF77(ch,blasname)( \
ftype* y, f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( spmv )
#endif

View File

@@ -67,7 +67,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( spr, spr )
#endif

View File

@@ -47,7 +47,7 @@ void PASTEF77(ch,blasname)( \
ftype* a \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( spr )
#endif

View File

@@ -71,7 +71,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( spr2, spr2 )
#endif

View File

@@ -48,7 +48,7 @@ void PASTEF77(ch,blasname)( \
ftype* a \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( spr2 )
#endif

View File

@@ -73,7 +73,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( tbmv, tbmv )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF77(ch,blasname)( \
ftype* x, f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( tbmv )
#endif

View File

@@ -73,7 +73,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( tbsv, tbsv )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF77(ch,blasname)( \
ftype* x, f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( tbsv )
#endif

View File

@@ -72,7 +72,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( tpmv, tpmv )
#endif

View File

@@ -48,7 +48,7 @@ void PASTEF77(ch,blasname)( \
ftype* x, f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( tpmv )
#endif

View File

@@ -72,7 +72,7 @@ void PASTEF77(ch,blasname)( \
bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( tpsv, tpsv )
#endif

View File

@@ -48,7 +48,7 @@ void PASTEF77(ch,blasname)( \
ftype* x, f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( tpsv )
#endif

View File

@@ -89,7 +89,7 @@ f77_int PASTEF772(i,chx,blasname) \
return f77_index; \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( amax, amaxv )
#endif

View File

@@ -45,7 +45,7 @@ f77_int PASTEF772(i,chx,blasname) \
const ftype_x* x, const f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( amax )
#endif

View File

@@ -77,7 +77,7 @@ ftype_r PASTEF772(chr,chx,blasname) \
return asum; \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCR2_BLAS( asum, asumv )
#endif

View File

@@ -45,7 +45,7 @@ ftype_r PASTEF772(chr,chx,blasname) \
const ftype_x* x, const f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTR2_BLAS( asum )
#endif

View File

@@ -81,7 +81,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( axpy, axpyv )
#endif

View File

@@ -47,7 +47,7 @@ void PASTEF77(ch,blasname) \
ftype* y, const f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( axpy )
#endif

View File

@@ -79,7 +79,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( copy, copyv )
#endif

View File

@@ -46,7 +46,7 @@ void PASTEF77(ch,blasname) \
ftype* y, const f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( copy )
#endif

View File

@@ -84,7 +84,7 @@ ftype PASTEF772(ch,blasname,chc) \
return rho; \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCDOT_BLAS( dot, dotv )

View File

@@ -46,7 +46,7 @@ ftype PASTEF772(ch,blasname,chc) \
const ftype* y, const f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTDOT_BLAS( dot )

View File

@@ -117,7 +117,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( gemm, gemm )
#endif

View File

@@ -53,7 +53,7 @@ void PASTEF77(ch,blasname) \
ftype* c, const f77_int* ldc \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( gemm )
#endif

View File

@@ -135,7 +135,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( gemv, gemv )
#endif

View File

@@ -51,7 +51,7 @@ void PASTEF77(ch,blasname) \
ftype* y, const f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( gemv )
#endif

View File

@@ -105,7 +105,7 @@ void PASTEF772(ch,blasname,chc) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCDOT_BLAS( ger, ger )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF772(chxy,blasname,chc) \
ftype* a, const f77_int* lda \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTDOT_BLAS( ger )
#endif

View File

@@ -115,7 +115,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( hemm, hemm )
#endif

View File

@@ -52,7 +52,7 @@ void PASTEF77(ch,blasname) \
ftype* c, const f77_int* ldc \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( hemm )
#endif

View File

@@ -109,7 +109,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( hemv, hemv )
#endif

View File

@@ -50,7 +50,7 @@ void PASTEF77(ch,blasname) \
ftype* y, const f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( hemv )
#endif

View File

@@ -100,7 +100,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( her, her )
#endif

View File

@@ -48,7 +48,7 @@ void PASTEF77(ch,blasname) \
ftype* a, const f77_int* lda \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( her )
#endif

View File

@@ -107,7 +107,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( her2, her2 )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF77(ch,blasname) \
ftype* a, const f77_int* lda \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( her2 )
#endif

View File

@@ -131,7 +131,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( her2k, her2k )
#endif

View File

@@ -52,7 +52,7 @@ void PASTEF77(ch,blasname) \
ftype* c, const f77_int* ldc \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( her2k )
#endif

View File

@@ -124,7 +124,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCCO_BLAS( herk, herk )
#endif

View File

@@ -51,7 +51,7 @@ void PASTEF77(ch,blasname) \
ftype* c, const f77_int* ldc \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTCO_BLAS( herk )
#endif

View File

@@ -77,7 +77,7 @@ ftype_r PASTEF772(chr,chx,blasname) \
return norm; \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCR2_BLAS( nrm2, normfv )
#endif

View File

@@ -45,7 +45,7 @@ ftype_r PASTEF772(chr,chx,blasname) \
const ftype_x* x, const f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTR2_BLAS( nrm2 )
#endif

View File

@@ -83,7 +83,7 @@ void PASTEF772(chx,cha,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCSCAL_BLAS( scal, scalv )
#endif

View File

@@ -46,7 +46,7 @@ void PASTEF772(chx,cha,blasname) \
ftype_x* x, const f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTSCAL_BLAS( scal )
#endif

View File

@@ -78,7 +78,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( swap, swapv )
#endif

View File

@@ -46,7 +46,7 @@ void PASTEF77(ch,blasname) \
ftype* y, const f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( swap )
#endif

View File

@@ -115,7 +115,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( symm, symm )
#endif

View File

@@ -52,7 +52,7 @@ void PASTEF77(ch,blasname) \
ftype* c, const f77_int* ldc \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( symm )
#endif

View File

@@ -109,7 +109,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( symv, symv )
#endif

View File

@@ -50,7 +50,7 @@ void PASTEF77(ch,blasname) \
ftype* y, const f77_int* incy \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( symv )
#endif

View File

@@ -100,7 +100,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( syr, syr )
#endif

View File

@@ -48,7 +48,7 @@ void PASTEF77(ch,blasname) \
ftype* a, const f77_int* lda \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( syr )
#endif

View File

@@ -108,7 +108,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNCRO_BLAS( syr2, syr2 )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF77(ch,blasname) \
ftype* a, const f77_int* lda \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROTRO_BLAS( syr2 )
#endif

View File

@@ -123,7 +123,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( syr2k, syr2k )
#endif

View File

@@ -52,7 +52,7 @@ void PASTEF77(ch,blasname) \
ftype* c, const f77_int* ldc \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( syr2k )
#endif

View File

@@ -116,7 +116,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( syrk, syrk )
#endif

View File

@@ -51,7 +51,7 @@ void PASTEF77(ch,blasname) \
ftype* c, const f77_int* ldc \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( syrk )
#endif

View File

@@ -115,7 +115,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( trmm, trmm )
#endif

View File

@@ -52,7 +52,7 @@ void PASTEF77(ch,blasname) \
ftype* b, const f77_int* ldb \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( trmm )
#endif

View File

@@ -112,7 +112,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( trmv, trmv )
#endif

View File

@@ -49,7 +49,7 @@ void PASTEF77(ch,blasname) \
ftype* x, const f77_int* incx \
);
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTPROT_BLAS( trmv )
#endif

View File

@@ -115,7 +115,7 @@ void PASTEF77(ch,blasname) \
bli_finalize_auto(); \
}
#ifdef BLIS_ENABLE_BLAS2BLIS
#ifdef BLIS_ENABLE_BLAS
INSERT_GENTFUNC_BLAS( trsm, trsm )
#endif

Some files were not shown because too many files have changed in this diff Show More