Fixed missing changes

Corrections in bli_gemm_front.c, taken the corrections from both public repo and 2.2.1 branch
[CPUPL-1067]

Change-Id: I4887ece6aa20bdfb87d97e7acebbe04cb9feea02
This commit is contained in:
Kiran Varaganti
2020-08-13 00:21:10 +05:30
committed by Dipal M Zambare
parent c811f92ad8
commit 41cf2b7206
25 changed files with 15 additions and 2046 deletions

View File

@@ -1,341 +0,0 @@
#
#
# 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(s) of the copyright holder(s) 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.
#
#
#
# --- Include variables determined at configure-time --------------------------
#
CONFIGURE_DEFS = config\config.mk
!if exist ( $(CONFIGURE_DEFS) )
!include $(CONFIGURE_DEFS)
!else
!error nmake: $(CONFIGURE_DEFS) does not exist! Run configure.cmd first.
!endif
#
# --- Include environment- and build-specific definitions ----------------------
#
MAKE_DEFS = build\defs.mk
# Include build definitions
!if exist ( $(MAKE_DEFS) )
!include $(MAKE_DEFS)
!else
!error nmake: $(MAKE_DEFS) does not exist! Your libblis distribution may be incomplete.
!endif
#
# --- Variable modifications ---------------------------------------------------
#
#
# --- High-level rules ---------------------------------------------------------
#
all: libblis
libblis: libblis-lib
libblis-objs: $(BLIS_OBJS)
libblis-lib: $(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS_LIB)
libblis-dll: $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS_DLL)
lib: libblis-lib
dll: libblis-dll
install: install-lib install-headers
install-lib: $(INSTALL_PREFIX_LIB)\$(LIBBLIS).lib
install-dll: $(INSTALL_PREFIX_DLL)\$(LIBBLIS).dll \
$(INSTALL_PREFIX_DLL)\$(LIBBLIS).lib \
$(INSTALL_PREFIX_DLL)\$(LIBBLIS).exp
install-headers: $(INSTALL_PREFIX_INC)\$(BLIS_H)
clean: clean-build clean-log
distclean: clean-config clean-build clean-log
#
# --- Source code (inference) rules --------------------------------------------
#
# --- C source files in flamec directory ---
{$(SRC_BLI_DIRPATH)}.c{$(OBJ_BLI_DIRPATH)}.obj:
!ifdef VERBOSE
if not exist $(OBJ_BLI_DIRPATH) \
( $(MKDIR) $(OBJ_BLI_DIRPATH) )
$(CC) $(CFLAGS) /c $< /Fo$@
!else
@if not exist $(OBJ_BLI_DIRPATH) \
( ( $(ECHO) nmake: Creating $(OBJ_BLI_DIRPATH) directory ) & \
( $(MKDIR) $(OBJ_BLI_DIRPATH) ) )
@$(ECHO) nmake: Compiling $<
@$(CC) $(CFLAGS) /c $< /Fo$@ >> $(CC_LOG_FILE)
!endif
#
# --- Library generation rules -------------------------------------------------
#
# --- Static library ---
$(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS_LIB): libblis-objs
!ifdef VERBOSE
if not exist $(LIB_LIBBLIS_DIRPATH) \
( $(MKDIR) $(LIB_LIBBLIS_DIRPATH) )
$(COPY) $(OBJ_BLI_DIRPATH)\*.obj $(LIB_LIBBLIS_DIRPATH)
$(CD) $(LIB_LIBBLIS_DIRPATH)
$(LIB) $(LIB_OPTIONS) $(LIB_BLI_OUTPUT_ARG) $(LIB_BLI_INPUT_ARGS)
$(DEL) *.obj
$(CD) $(TOP_BUILD_DIR_ABS)
!else
@if not exist $(LIB_LIBBLIS_DIRPATH) \
( ( $(ECHO) nmake: Creating $(LIB_LIBBLIS_DIRPATH) directory ) & \
( $(MKDIR) $(LIB_LIBBLIS_DIRPATH) ) )
@$(ECHO) nmake: Creating static library $@
@$(COPY) $(OBJ_BLI_DIRPATH)\*.obj $(LIB_LIBBLIS_DIRPATH) >> $(COPY_LOG_FILE)
@$(CD) $(LIB_LIBBLIS_DIRPATH)
@$(LIB) /VERBOSE $(LIB_OPTIONS) $(LIB_BLI_OUTPUT_ARG) $(LIB_BLI_INPUT_ARGS)
@$(DEL) *.obj
@$(CD) $(TOP_BUILD_DIR_ABS)
!endif
# --- Dynamic library (object code file, import library, and export file) ---
$(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS_DLL): libblis-objs
!ifdef VERBOSE
if not exist $(DLL_LIBBLIS_DIRPATH) \
( $(MKDIR) $(DLL_LIBBLIS_DIRPATH) )
$(COPY) $(OBJ_BLI_DIRPATH)\*.obj $(DLL_LIBBLIS_DIRPATH) >> $(COPY_LOG_FILE)
$(CD) $(DLL_LIBBLIS_DIRPATH)
$(DIR) /B *.obj > $(OBJ_LIST_FILE)
$(GENDLL) $(LIBBLIS) $(LIBBLIS) $(CC) $(LINKARGS_FILEPATH) $(SYM_DEF_FILEPATH) /objlist $(OBJ_LIST_FILE)
$(DEL) $(OBJ_LIST_FILE)
$(DEL) *.obj
$(CD) $(TOP_BUILD_DIR_ABS)
!else
@if not exist $(DLL_LIBBLIS_DIRPATH) \
( ( $(ECHO) nmake: Creating $(DLL_LIBBLIS_DIRPATH) directory ) & \
( $(MKDIR) $(DLL_LIBBLIS_DIRPATH) ) )
@$(ECHO) nmake: Creating dynamic library $@
@$(COPY) $(OBJ_BLI_DIRPATH)\*.obj $(DLL_LIBBLIS_DIRPATH) >> $(COPY_LOG_FILE)
@$(CD) $(DLL_LIBBLIS_DIRPATH)
@$(DIR) /B *.obj > $(OBJ_LIST_FILE)
@$(GENDLL) $(LIBBLIS) $(LIBBLIS) $(CC) $(LINKARGS_FILEPATH) $(SYM_DEF_FILEPATH) /objlist $(OBJ_LIST_FILE)
@$(DEL) $(OBJ_LIST_FILE)
@$(DEL) *.obj
@$(CD) $(TOP_BUILD_DIR_ABS)
!endif
#
# --- Install rules ------------------------------------------------------------
#
# --- Header files ---
$(INSTALL_PREFIX_INC)\$(BLIS_H): $(INC_BLI_DIRPATH)\$(BLIS_H) \
$(BUILD_DIRNAME)\$(BLI_CONFIG_H)
!ifdef VERBOSE
if not exist $(INSTALL_PREFIX_INC) \
( $(MKDIR) $(INSTALL_PREFIX_INC) )
$(COPY) $(BUILD_DIRNAME)\$(BLI_CONFIG_H) $(INSTALL_PREFIX_INC) >> $(COPY_LOG_FILE)
$(COPY) $(INC_BLI_DIRPATH)\*.h $(INSTALL_PREFIX_INC) >> $(COPY_LOG_FILE)
!else
@if not exist $(INSTALL_PREFIX_INC) \
( $(MKDIR) $(INSTALL_PREFIX_INC) )
@$(ECHO) nmake: Installing libblis header files to $(INSTALL_PREFIX_INC)
@$(COPY) $(BUILD_DIRNAME)\$(BLI_CONFIG_H) $(INSTALL_PREFIX_INC) >> $(COPY_LOG_FILE)
@$(COPY) $(INC_BLI_DIRPATH)\*.h $(INSTALL_PREFIX_INC) >> $(COPY_LOG_FILE)
!endif
# --- Static library ---
$(INSTALL_PREFIX_LIB)\$(LIBBLIS).lib: $(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS).lib
!ifdef VERBOSE
if not exist $(INSTALL_PREFIX_LIB) ( $(MKDIR) $(INSTALL_PREFIX_LIB) )
if exist $(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS).lib \
( $(COPY) $(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS).lib $(INSTALL_PREFIX_LIB) >> $(COPY_LOG_FILE) )
!else
@if not exist $(INSTALL_PREFIX_LIB) ( $(MKDIR) $(INSTALL_PREFIX_LIB) )
@if exist $(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS).lib \
( ( $(ECHO) nmake: Installing $(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS).lib to $(INSTALL_PREFIX_LIB) ) & \
( $(COPY) $(LIB_LIBBLIS_DIRPATH)\$(LIBBLIS).lib $(INSTALL_PREFIX_LIB) >> $(COPY_LOG_FILE) ) )
!endif
# --- Dynamic library (object code) ---
$(INSTALL_PREFIX_DLL)\$(LIBBLIS).dll: $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).dll
!ifdef VERBOSE
if not exist $(INSTALL_PREFIX_DLL) ( $(MKDIR) $(INSTALL_PREFIX_DLL) )
if exist $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).dll \
( $(COPY) $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).dll $(INSTALL_PREFIX_DLL) >> $(COPY_LOG_FILE) )
!else
@if not exist $(INSTALL_PREFIX_DLL) ( $(MKDIR) $(INSTALL_PREFIX_DLL) )
@if exist $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).dll \
( ( $(ECHO) nmake: Installing $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).dll to $(INSTALL_PREFIX_DLL) ) & \
( $(COPY) $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).dll $(INSTALL_PREFIX_DLL) >> $(COPY_LOG_FILE) ) )
!endif
# --- Dynamic library (import library) ---
$(INSTALL_PREFIX_DLL)\$(LIBBLIS).lib: $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).lib
!ifdef VERBOSE
if not exist $(INSTALL_PREFIX_DLL) ( $(MKDIR) $(INSTALL_PREFIX_DLL) )
if exist $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).lib \
( $(COPY) $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).lib $(INSTALL_PREFIX_DLL) >> $(COPY_LOG_FILE) )
!else
@if not exist $(INSTALL_PREFIX_DLL) ( $(MKDIR) $(INSTALL_PREFIX_DLL) )
@if exist $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).lib \
( ( $(ECHO) nmake: Installing $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).lib to $(INSTALL_PREFIX_DLL) ) & \
( $(COPY) $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).lib $(INSTALL_PREFIX_DLL) >> $(COPY_LOG_FILE) ) )
!endif
# --- Dynamic library (export file) ---
$(INSTALL_PREFIX_DLL)\$(LIBBLIS).exp: $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).exp
!ifdef VERBOSE
if not exist $(INSTALL_PREFIX_DLL) ( $(MKDIR) $(INSTALL_PREFIX_DLL) )
if exist $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).exp \
( $(COPY) $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).exp $(INSTALL_PREFIX_DLL) >> $(COPY_LOG_FILE) )
!else
@if not exist $(INSTALL_PREFIX_DLL) ( $(MKDIR) $(INSTALL_PREFIX_DLL) )
@if exist $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).exp \
( ( $(ECHO) nmake: Installing $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).exp to $(INSTALL_PREFIX_DLL) ) & \
( $(COPY) $(DLL_LIBBLIS_DIRPATH)\$(LIBBLIS).exp $(INSTALL_PREFIX_DLL) >> $(COPY_LOG_FILE) ) )
!endif
#
# --- Clean rules --------------------------------------------------------------
#
clean-log:
!ifdef VERBOSE
if exist $(CC_LOG_FILE) \
( $(DEL) $(CC_LOG_FILE) )
if exist $(FC_LOG_FILE) \
( $(DEL) $(FC_LOG_FILE) )
if exist $(COPY_LOG_FILE) \
( $(DEL) $(COPY_LOG_FILE) )
!else
@if exist $(CC_LOG_FILE) \
( ( $(ECHO) nmake: Deleting $(CC_LOG_FILE) ) & \
( $(DEL) $(CC_LOG_FILE) ) )
@if exist $(FC_LOG_FILE) \
( ( $(ECHO) nmake: Deleting $(FC_LOG_FILE) ) & \
( $(DEL) $(FC_LOG_FILE) ) )
@if exist $(COPY_LOG_FILE) \
( ( $(ECHO) nmake: Deleting $(COPY_LOG_FILE) ) & \
( $(DEL) $(COPY_LOG_FILE) ) )
!endif
clean-config:
!ifdef VERBOSE
if exist $(CNF_DIRNAME) \
( $(RMDIR) $(CNF_DIRNAME) )
if exist $(INC_DIRNAME) \
( $(RMDIR) $(INC_DIRNAME) )
if exist $(SRC_DIRNAME) \
( $(RMDIR) $(SRC_DIRNAME) )
!else
@if exist $(CNF_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(CNF_DIRNAME) directory ) & \
( $(RMDIR) $(CNF_DIRNAME) ) )
@if exist $(INC_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(INC_DIRNAME) directory ) & \
( $(RMDIR) $(INC_DIRNAME) ) )
@if exist $(SRC_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(SRC_DIRNAME) directory ) & \
( $(RMDIR) $(SRC_DIRNAME) ) )
!endif
clean-build:
!ifdef VERBOSE
if exist $(OBJ_DIRNAME) \
( $(RMDIR) $(OBJ_DIRNAME) )
if exist $(LIB_DIRNAME) \
( $(RMDIR) $(LIB_DIRNAME) )
if exist $(DLL_DIRNAME) \
( $(RMDIR) $(DLL_DIRNAME) )
!else
@if exist $(OBJ_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(OBJ_DIRNAME) directory ) & \
( $(RMDIR) $(OBJ_DIRNAME) ) )
@if exist $(LIB_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(LIB_DIRNAME) directory ) & \
( $(RMDIR) $(LIB_DIRNAME) ) )
@if exist $(DLL_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(DLL_DIRNAME) directory ) & \
( $(RMDIR) $(DLL_DIRNAME) ) )
!endif
# Useful for developing when all we want to do is remove the library products.
clean-lib:
!ifdef VERBOSE
if exist $(LIB_DIRNAME) \
( $(RMDIR) $(LIB_DIRNAME) )
if exist $(DLL_DIRNAME) \
( $(RMDIR) $(DLL_DIRNAME) )
!else
@if exist $(LIB_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(LIB_DIRNAME) directory ) & \
( $(RMDIR) $(LIB_DIRNAME) ) )
@if exist $(DLL_DIRNAME) \
( ( $(ECHO) nmake: Deleting $(DLL_DIRNAME) directory ) & \
( $(RMDIR) $(DLL_DIRNAME) ) )
!endif
#
# --- Help target --------------------------------------------------------------
#
help:
@$(NMAKE_HELP)

View File

@@ -1,37 +0,0 @@
/*
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(s) of the copyright holder(s) 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.
*/
GEMM_UKR_PROT( double, d, gemm_armsve256_asm_8x8 )
PACKM_KER_PROT( double, d, packm_armsve256_asm_8xk )

View File

@@ -1,98 +0,0 @@
#
#
# 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(s) of the copyright holder(s) 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.
#
#
# Declare the name of the current configuration and add it to the
# running list of configurations included by common.mk.
THIS_CONFIG := haswell
#CONFIGS_INCL += $(THIS_CONFIG)
#
# --- Determine the C compiler and related flags ---
#
# NOTE: The build system will append these variables with various
# general-purpose/configuration-agnostic flags in common.mk. You
# may specify additional flags here as needed.
CPPROCFLAGS :=
CMISCFLAGS :=
CPICFLAGS :=
CWARNFLAGS :=
ifneq ($(DEBUG_TYPE),off)
CDBGFLAGS := -g
endif
ifeq ($(DEBUG_TYPE),noopt)
COPTFLAGS := -O0
else
COPTFLAGS := -O3
endif
# Flags specific to optimized kernels.
CKOPTFLAGS := $(COPTFLAGS)
ifeq ($(CC_VENDOR),gcc)
CKVECFLAGS := -mavx2 -mfma -mfpmath=sse -march=haswell
ifeq ($(GCC_OT_4_9_0),yes)
# If gcc is older than 4.9.0, we must use a different label for -march.
CKVECFLAGS := -mavx2 -mfma -mfpmath=sse -march=core-avx2
endif
else
ifeq ($(CC_VENDOR),icc)
CKVECFLAGS := -xCORE-AVX2
else
ifeq ($(CC_VENDOR),clang)
CKVECFLAGS := -mavx2 -mfma -mfpmath=sse -march=haswell
else
$(error gcc, icc, or clang is required for this configuration.)
endif
endif
endif
# Flags specific to reference kernels.
CROPTFLAGS := $(CKOPTFLAGS)
ifeq ($(CC_VENDOR),gcc)
CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast
else
ifeq ($(CC_VENDOR),clang)
CRVECFLAGS := $(CKVECFLAGS) -funsafe-math-optimizations -ffp-contract=fast
else
CRVECFLAGS := $(CKVECFLAGS)
endif
endif
# Store all of the variables here to new variables containing the
# configuration name.
$(eval $(call store-make-defs,$(THIS_CONFIG)))

View File

@@ -1,240 +0,0 @@
#
#
# 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(s) of the copyright holder(s) 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.
#
#
#
# --- General build system options --------------------------------------------
#
# Uncomment this for verbose output from nmake.
# VERBOSE = 1
# Assign this varible to be the full path to the directory to which you would
# like the BLIS build products to be installed upon running "nmake install".
# The nmake install target will create the install directory and all requisite
# subdirectories if they do not already exist (in which case the user must have
# permission to create these directories).
INSTALL_PREFIX = c:\field\lib
#
# --- Important build system filenames ----------------------------------------
#
# DLL link arguments. The contents of this file should be customized when
# building a dynamically-linked library. The lines of the file should contain
# linker options, library names, and library paths. Note that the library
# paths must be declared in the following form:
#
# /link /LIBPATH:<path1>
# /link /LIBPATH:<path2>
# /link /LIBPATH:<path3>
#
# where <path1>, <path2>, and <path3> are library paths to add to the list
# of paths to search when the linker attempts to locate other libraries
# listed in the file.
LINKARGS_FILENAME = linkargs.txt
LINKARGS_FILEPATH = $(PWD)\$(LINKARGS_FILENAME)
# Various log file names that capture standard output when VERBOSE is undefined.
CC_LOG_FILE = nmake-cc.log
FC_LOG_FILE = nmake-fc.log
COPY_LOG_FILE = nmake-copy.log
#
# --- General name and directory definitions -----------------------------------
#
# The relative and absolute locations of the top-level Windows build directory.
# This is the directory in which nmake is run (not the directory named "build").
TOP_BUILD_DIR_REL = .
TOP_BUILD_DIR_ABS = $(PWD)
# The revision string.
REV_STR = r$(REVISION)
# The names of the libraries.
LIBBLIS_NAME_ONLY = libblis
LIBBLIS = $(LIBBLIS_NAME_ONLY)-$(ARCH_STR)-$(REV_STR)
# Directories that reside within the top-level Windows directory.
CNF_DIRNAME = config
INC_DIRNAME = include
SRC_DIRNAME = frame
OBJ_DIRNAME = obj
LIB_DIRNAME = lib
DLL_DIRNAME = dll
# Leaves of interest for Windows.
# Relative directory paths to each of the above subdirectories.
INC_DIRPATH = $(TOP_BUILD_DIR_REL)\$(INC_DIRNAME)
SRC_DIRPATH = $(TOP_BUILD_DIR_REL)\$(SRC_DIRNAME)
OBJ_DIRPATH = $(TOP_BUILD_DIR_REL)\$(OBJ_DIRNAME)
LIB_DIRPATH = $(TOP_BUILD_DIR_REL)\$(LIB_DIRNAME)
DLL_DIRPATH = $(TOP_BUILD_DIR_REL)\$(DLL_DIRNAME)
# We only have header files for flamec leaves.
INC_BLI_DIRPATH = $(INC_DIRPATH)
# We have source code for flamec and lapack2flamec leaves.
SRC_BLI_DIRPATH = $(SRC_DIRPATH)
# And we have object file paths corresponding to those source leaves defined
# above.
OBJ_BLI_DIRPATH = $(OBJ_DIRPATH)\$(ARCH_STR)\$(BUILD_STR)
# Separate directories into which we'll move object files when we create the
# static libraries.
LIB_LIBBLIS_DIRPATH = $(LIB_DIRPATH)\$(ARCH_STR)\$(BUILD_STR)
# Separate directories into which we'll move object files when we create the
# dynamic libraries.
DLL_LIBBLIS_DIRPATH = $(DLL_DIRPATH)\$(ARCH_STR)\$(BUILD_STR)
# The install subdirectories.
INSTALL_PREFIX_LIB = $(INSTALL_PREFIX)\libblis\lib
INSTALL_PREFIX_DLL = $(INSTALL_PREFIX)\libblis\dll
INSTALL_PREFIX_INC = $(INSTALL_PREFIX)\libblis\include-$(ARCH_STR)-$(REV_STR)
# Definitions for important header files used in the install-headers rule.
BUILD_DIRNAME = build
BLIS_H = blis.h
#
# --- General shell definitions ------------------------------------------------
#
CD = cd
DIR = dir
COPY = copy
DEL = del /F /Q
MKDIR = mkdir
RMDIR = rd /S /Q
ECHO = echo
#
# --- Helper scripts -----------------------------------------------------------
#
NMAKE_HELP = .\build\nmake-help.cmd
#
# --- Compiler-related definitions ---------------------------------------------
#
#!include $(VERSION_FILE)
# --- C compiler definitions ---
WINDOWS_BUILD = BLIS_ENABLE_WINDOWS_BUILD
VERS_STR = 0.0.9
VERSION = BLIS_VERSION_STRING=\"$(VERS_STR)\"
!if "$(CCOMPILER_STR)"=="icl"
!if "$(BUILD_STR)"=="debug"
CDEBUG = /Zi
COPTIM = /Od
!elseif "$(BUILD_STR)"=="release"
CDEBUG =
COPTIM = /Ox
!endif
CC = icl.exe
CMISCFLAGS = /nologo
CLANGFLAGS =
CPPROCFLAGS = /I.\build /I$(INC_BLI_DIRPATH) /D$(WINDOWS_BUILD) /D$(VERSION)
CWARNFLAGS = /w
CDBGFLAGS = $(CDEBUG)
COPTFLAGS = $(COPTIM)
CRTIMEFLAGS = /MT
CMTHREADFLAGS = /Qopenmp
CFLAGS = $(CMISCFLAGS) $(CLANGFLAGS) $(CPPROCFLAGS) $(CWARNFLAGS) \
$(CDBGFLAGS) $(COPTFLAGS) $(CRTIMEFLAGS) $(CMTHREADFLAGS)
!elseif "$(CCOMPILER_STR)"=="cl"
!if "$(BUILD_STR)"=="debug"
CDEBUG = /Zi
COPTIM = /Od
!elseif "$(BUILD_STR)"=="release"
CDEBUG =
COPTIM = /Ox
!endif
CC = cl.exe
CMISCFLAGS = /nologo
CLANGFLAGS =
CPPROCFLAGS = /I.\build /I$(INC_BLI_DIRPATH) /D$(WINDOWS_BUILD) /D$(VERSION)
CWARNFLAGS = /w
CDBGFLAGS = $(CDEBUG)
COPTFLAGS = $(COPTIM)
CRTIMEFLAGS = /MT
CMTHREADFLAGS = /openmp
CFLAGS = $(CMISCFLAGS) $(CLANGFLAGS) $(CPPROCFLAGS) $(CWARNFLAGS) \
$(CDBGFLAGS) $(COPTFLAGS) $(CRTIMEFLAGS) $(CMTHREADFLAGS)
!endif
#
# --- Library-related definitions ----------------------------------------------
#
# --- Static library definitions ---
LIBBLIS_LIB = $(LIBBLIS).lib
LIB = lib
LIB_OPTIONS = /nologo
LIB_BLI_OUTPUT_ARG = /out:$(LIBBLIS_LIB)
LIB_BLI_INPUT_ARGS = *.obj
# --- Dynamic library definitions ---
LIBBLIS_DLL = $(LIBBLIS).dll
GENDLL = $(TOP_BUILD_DIR_ABS)\gendll.cmd
OBJ_LIST_FILE = libblis-objects.txt
SYM_DEF_FILEPATH = $(TOP_BUILD_DIR_ABS)\$(BUILD_DIRNAME)\libblis-symbols.def

View File

@@ -1,351 +0,0 @@
#! /usr/bin/env python
#
# 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(s) of the copyright holder(s) 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.
#
#
# ------------------------------------------------------------------------------
# Import modules
import sys
import os
import os.path
import getopt
import shutil
import string
# Global variables for command line options, with default settings.
script_name = ""
dry_run_flag = False
verbose_flag = False
# Global constants
flat_config_dirname = "config"
flat_header_dirname = "include"
flat_source_dirname = "frame"
leaf_list_path = "build/leaf_list"
ignore_list_path = "build/ignore_list"
ignore_list_win_path = "build/ignore_list.windows"
# ------------------------------------------------------------------------------
def print_usage():
# Print help information.
print " "
print " %s" % script_name
print " "
print " Field G. Van Zee"
print " "
print " Walk the BLIS source tree and copy all sources necessary for"
print " building BLIS under Windows into a single flat directory with"
print " no subdirectory hierarchy."
print " "
print " Usage:"
print " %s [options] tree_dir flat_dir" % script_name
print " "
print " The following options are accepted:"
print " "
print " -d dry-run"
print " Go through all the motions, but don't actually copy any"
print " files."
print " -v verbose"
print " Be verbose about actions (one line of output her action)."
print " "
# Exit the script.
sys.exit()
# ------------------------------------------------------------------------------
def main():
# Extern our global veriables.
global script_name
global dry_run_flag
global verbose_flag
# Get the script name so we can use it in our output.
( script_dir, script_name ) = os.path.split( sys.argv[0] )
try:
# Get the command line options.
options, args = getopt.getopt( sys.argv[1:], "dv")
except getopt.GetoptError, err:
# print help information and exit:
print str( err ) # will print something like "option -a not recognized"
print_usage()
# Parse our expected command line options.
print 'checking options'
for o, a in options:
if o == "-d":
print 'found dry run'
dry_run_flag = True
elif o == "-v":
verbose_flag = True
else:
assert False, "unhandled option"
# Check the number of arguments after command line option processing.
n_args = len( args )
if n_args != 2:
print_usage()
# Acquire the non-optional arguments.
tree_dir = args[0]
flat_dir = args[1]
# Acquire the list of directories we will ignore.
ignore_list = read_ignore_list()
# Acquire the list of leaf-type directories we will descend into.
leaf_list = read_leaf_list()
# Create strings for each of the base subdirectories in the flat
# destination directory.
flat_config_base_dirpath = os.path.join( flat_dir, flat_config_dirname )
flat_header_base_dirpath = os.path.join( flat_dir, flat_header_dirname )
flat_source_base_dirpath = os.path.join( flat_dir, flat_source_dirname )
# Start a list of directories to create.
dirs_to_create = []
# Append the config directory. We do this outside of the for loop because
# we don't need subdirectories for each leaf type.
dirs_to_create.append( flat_config_base_dirpath )
# For each of the leaf specifications, make the full pathnames of the
# subdirectories that will reside within the root destination directory.
for leaf_spec in leaf_list:
# Unpack the leaf_spec tuple.
src_exts, hdr_exts = leaf_spec
# Append the directory path name to our list.
dirs_to_create.append( flat_header_base_dirpath )
dirs_to_create.append( flat_source_base_dirpath )
# Iterate over the directory list we just created.
for dirpath in dirs_to_create:
# Make the subdirectories within the root destination directory, but
# only if they are not existing directories.
if os.path.isdir( dirpath ) == False:
# Take action only if this is not a dry run.
if dry_run_flag == False:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: creating directory %s" % ( script_name, dirpath )
# Make the directory, and parent directories, for dirpath.
os.makedirs( dirpath )
else:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: (dry-run) creating directory %s" % ( script_name, dirpath )
# Walk the directory structure top-down.
for dirpath, dirnames, filenames in os.walk( tree_dir ):
# Remove directories that appear in the ignore list.
for item in ignore_list:
if item in dirnames:
dirnames.remove( item )
# Consider each leaf specification. If we find the name in the directory
# path, then copy the files with its designated extensions into the flat
# source directory.
for leaf_spec in leaf_list:
# Unpack the leaf_spec tuple.
src_exts, hdr_exts = leaf_spec
# At this point following line can probably be removed
type_dir_name = os.sep + ''
flat_source_leaf_dirpath = flat_source_base_dirpath
flat_header_leaf_dirpath = flat_header_base_dirpath
if dirpath.find( type_dir_name ) != -1:
copy_files_to_flat_subdirs( dirpath, filenames, src_exts, hdr_exts,
flat_source_leaf_dirpath,
flat_header_leaf_dirpath )
# ------------------------------------------------------------------------------
def copy_files_to_flat_subdirs( dirpath, filenames, src_exts, hdr_exts, src_dirpath, hdr_dirpath ):
# Consider all files in dirpath.
for filename in filenames:
# Construct the full file path for the current file.
filepath = os.path.join( dirpath, filename )
# Iterate over the valid source extensions for the current directory
# path.
for src_ext in src_exts:
# If the filename/filepath ends with the source extension, copy it
# to the source subdirectory within the flat destination directory.
if filepath.endswith( src_ext ):
# Take action only if this is not a dry run.
if dry_run_flag == False:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: copying to %s from %s" % ( script_name, src_dirpath, filepath )
# Copy the source file to the source subdirectory.
shutil.copy2( filepath, src_dirpath )
else:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: (dry-run) copying to %s from %s" % ( script_name, src_dirpath, filepath )
# Iterate over the valid header extensions for the current directory
# path.
for hdr_ext in hdr_exts:
# If the filename/filepath ends with the header extension, copy it
# to the include subdirectory within the flat destination directory.
if filepath.endswith( hdr_ext ):
# Take action only if this is not a dry run.
if dry_run_flag == False:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: copying to %s from %s" % ( script_name, hdr_dirpath, filepath )
# Copy the header file to the header subdirectory.
shutil.copy2( filepath, hdr_dirpath )
else:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: (dry-run) copying to %s from %s" % ( script_name, hdr_dirpath, filepath )
# ------------------------------------------------------------------------------
def read_ignore_list():
# Open the ignore list files as read-only.
ignore_file = open( ignore_list_path, 'r' )
ignore_file_win = open( ignore_list_win_path, 'r' )
# Read all lines in the ignore list files. The items in these lists contain
# newlines, which we'll strip out shortly.
raw_list = ignore_file.readlines()
raw_win_list = ignore_file_win.readlines()
# Close the files.
ignore_file.close()
ignore_file_win.close()
# Initialize an empty ignore list for the stripped version of the raw list.
ignore_list = []
# Iterate over the first raw list.
for line in raw_list:
# Append the stripped line to a new list.
ignore_list.append( line.strip() )
# Iterate over the second raw list.
for line in raw_win_list:
# Append the stripped line to a new list.
ignore_list.append( line.strip() )
# Return the list of stripped lines.
return ignore_list
# ------------------------------------------------------------------------------
def read_leaf_list():
# Open the leaf list file.
leaf_file = open( leaf_list_path, 'r' )
# Read the lines in the file.
line_list = leaf_file.readlines()
# Start with a blank list.
leaf_list = []
# Iterate over the lines.
for line in line_list:
# Split the specification by colon to separate the fields.
fields = string.split( string.strip( line ), ':' )
# Get the individual fields of the specification.
src_exts = string.split( fields[0], ',' )
hdr_exts = string.split( fields[1], ',' )
# If it's a singleton list of an empty string, make it an empty list.
if len(src_exts) == 1:
if src_exts[0] == '':
src_exts = []
# If it's a singleton list of an empty string, make it an empty list.
if len(hdr_exts) == 1:
if hdr_exts[0] == '':
hdr_exts = []
# Pack the fields into a tuple.
leaf_spec = ( src_exts, hdr_exts )
# Append the tuple to our list.
leaf_list.append( leaf_spec )
# Return the list.
return leaf_list
# ------------------------------------------------------------------------------
# Begin by executing main().
main()

View File

@@ -1,252 +0,0 @@
#! /usr/bin/env python
#
# 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(s) of the copyright holder(s) 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.
#
#
# ------------------------------------------------------------------------------
# Import modules
import sys
import os
import os.path
import getopt
# Global variables for command line options, with default settings.
script_name = ""
verbose_flag = False
# Global constants
toplevel_dirpath = "."
svn_dirname = ".svn"
entries_filename = "entries"
revision_filename = "revision"
dummy_rev_string = "unknown"
# ------------------------------------------------------------------------------
def print_usage():
# Print help information.
print " "
print " %s" % script_name
print " "
print " Field G. Van Zee"
print " "
print " This script ensures that a revision file exists so nmake can include the"
print " revision number in the subdirectory paths to the build products."
print " "
print " If a .svn directory exists, the revision file is created (or updated)"
print " to contain the revision number contained in .svn\entries file."
print " Otherwise, if a .svn directory does not exist, the revision file is"
print " left untouched if it exists, and created with a dummy value if it does"
print " not."
print " "
print " This script is typically invoked by configure.cmd, but it can also be"
print " run manually."
print " "
print " Usage:"
print " %s" % script_name
print " "
print " The following options are accepted:"
print " "
print " -v verbose"
print " Be verbose. Output what's happening."
print " "
# Exit the script.
sys.exit()
# ------------------------------------------------------------------------------
def main():
# Extern our global veriables.
global script_name
global verbose_flag
# Get the script name so we can use it in our output.
( script_dir, script_name ) = os.path.split( sys.argv[0] )
try:
# Get the command line options.
options, args = getopt.getopt( sys.argv[1:], "v")
except getopt.GetoptError, err:
# print help information and exit:
print str( err ) # will print something like "option -a not recognized"
print_usage()
# Parse our expected command line options.
for o, a in options:
if o == "-v":
verbose_flag = True
else:
assert False, "unhandled option"
# Check the number of arguments after command line option processing.
n_args = len( args )
if n_args != 0:
print_usage()
# Construct the filepaths to the entries and revision files.
entries_filepath = os.path.join( toplevel_dirpath, svn_dirname, entries_filename )
revision_filepath = os.path.join( toplevel_dirpath, revision_filename )
# Test for the existence of the entries file (and by proxy, a working copy).
entries_file_exists = file_exists( entries_filepath )
# If the entries file exists, we are in a working copy, and thus we can
# overwrite the revision file with a potentially new value.
if entries_file_exists == True:
# Read the revision number from the entries file.
rev_num_str = read_revision_from_entries( entries_filepath )
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: Found working copy; writing revision string \"%s\" to %s" % ( script_name, rev_num_str, revision_filepath )
# Write the revision number to the revision file.
write_revision_to_file( rev_num_str, revision_filepath )
# If we can't find the entries file, we probably are in an exported
# copy: either an official snapshot, or a copy that someone exported
# manually--hopefully (and likely) the former.
else:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: Found export. Checking for revision file..." % ( script_name )
# Test for the existence of the revision file.
rev_file_exists = file_exists( revision_filepath )
# If the revision file does not exist, create a dummy file so the
# configure script has something to work with.
if rev_file_exists == False:
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: Revision file not found. Writing dummy revision string \"%s\" to %s" % ( script_name, dummy_rev_string, revision_filepath )
# Write the dummy string to the revision file.
write_revision_to_file( dummy_rev_string, revision_filepath )
else:
# Get the revision number from the file just for the purposes of
# being verbose, if it was requested.
rev_num_str = read_revision_file( revision_filepath )
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: Revision file found containing revision string \"%s\". Export is valid snapshot!" % ( script_name, rev_num_str )
# ------------------------------------------------------------------------------
def file_exists( filepath ):
# Try to open the file read-only.
try:
fp = open( filepath, 'r' )
fp.close()
exists = True
except IOError, err:
exists = False
return exists
# ------------------------------------------------------------------------------
def read_revision_from_entries( entries_filepath ):
# Open the ignore list files as read-only.
entries_file = open( entries_filepath, 'r' )
# Read all lines in the entries file.
raw_list = entries_file.readlines()
# Close the file.
entries_file.close()
# Grab the fourth line, which is where the revision number lives, and strip
# it of whitespace (probably just a newline).
rev_num_str = raw_list[3].strip()
# Return the revision number string.
return rev_num_str
# ------------------------------------------------------------------------------
def write_revision_to_file( rev_string, revision_filepath ):
# Open the revision file for writing.
revision_file = open( revision_filepath, 'w' )
# Write the revision string to the file.
revision_file.write( rev_string )
# Close the file.
revision_file.close()
# ------------------------------------------------------------------------------
def read_revision_file( revision_filepath ):
# Open the revision file.
revision_file = open( revision_filepath, 'r' )
# Read the first (and only) line.
line = revision_file.readline()
# Close the file.
revision_file.close()
# Grab the string and strip the it of whitespace (should just be a newline).
rev_num_str = line.strip()
# Return the revision number string.
return rev_num_str
# ------------------------------------------------------------------------------
# Begin by executing main().
main()

View File

@@ -1,360 +0,0 @@
#! /usr/bin/env python
#
# 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(s) of the copyright holder(s) 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.
#
#
# ------------------------------------------------------------------------------
# Import modules
import sys
import os
import os.path
import getopt
import re
import string
# Global variables for command line options, with default settings.
script_name = ""
dry_run_flag = False
verbose_flag = False
# Global constants
config_dirname = "config"
source_dirname = "frame"
object_dirname = "obj"
object_extension = ".obj"
leaf_list_path = "build/leaf_list"
revision_filename = "revision"
rev_varname = "REVISION"
pwd_varname = "PWD"
arch_varname = "ARCH_STR"
build_varname = "BUILD_STR"
ccompiler_varname = "CCOMPILER_STR"
# ------------------------------------------------------------------------------
def print_usage():
# Print help information.
print " "
print " %s" % script_name
print " "
print " Field G. Van Zee"
print " "
print " Create a config.mk file that is to be included by the nmake Makefile."
print " This config.mk file is based on a template, but also includes variable"
print " definitions that are needed for the specific build were are performing."
print " The variables which are currently appended to config.mk at runtime are:"
print " - the revision string"
print " - the path to the current working directory"
print " - the build string (e.g. debug, release)"
print " - the architecture string (e.g. x86, x64)"
print " - the C compiler to use (e.g. icl, cl)"
print " - a list of paths to the object files to be compiled"
print " The config.mk file is placed within the config subdirectory."
print " "
print " Usage:"
print " %s [options] flat_dir arch build ccompiler path\\to\\config.mk.in" % script_name
print " "
print " The following options are accepted:"
print " "
print " -d dry-run"
print " Go through all the motions, but don't actually output"
print " the nmake definition file."
print " -v verbose"
print " Be verbose about actions (one line of output her action)."
print " "
# Exit the script.
sys.exit()
# ------------------------------------------------------------------------------
def main():
# Extern our global veriables.
global script_name
global dry_run_flag
global verbose_flag
# Get the script name so we can use it in our output.
( script_dir, script_name ) = os.path.split( sys.argv[0] )
try:
# Get the command line options.
options, args = getopt.getopt( sys.argv[1:], "dv")
except getopt.GetoptError, err:
# print help information and exit:
print str( err ) # will print something like "option -a not recognized"
print_usage()
# Parse our expected command line options.
for o, a in options:
if o == "-d":
dry_run_flag = True
elif o == "-v":
verbose_flag = True
else:
assert False, "unhandled option"
# Check the number of arguments after command line option processing.
n_args = len( args )
if n_args != 5:
print_usage()
# Acquire the non-optional arguments.
flat_dir = args[0]
arch_string = args[1]
build_string = args[2]
ccompiler_string = args[3]
input_filepath = args[4]
# Acquire the list of leaf-type directories we will descend into.
leaf_list = read_leaf_list()
# Read the contents of the template file.
template_file_line_list = read_template_file( input_filepath )
# Initialize a new list for the lines to be output
output_file_line_list = template_file_line_list
# Read the revision number from the revision file.
rev_num_str = read_revision_file( revision_filename )
# Add a variable for the revision number of the code we're working with.
rev_var_value = rev_varname + " = " + rev_num_str + "\n"
output_file_line_list.append( rev_var_value )
# Add a variable for the path to the current working directory and append
# it to our list.
pwd_var_value = pwd_varname + " = " + os.getcwd() + "\n"
output_file_line_list.append( pwd_var_value )
# Add a variable for the architecture string and append it to our list.
arch_var_value = arch_varname + " = " + arch_string + "\n"
output_file_line_list.append( arch_var_value )
# Add a variable for the build type string and append it to our list.
build_var_value = build_varname + " = " + build_string + "\n"
output_file_line_list.append( build_var_value )
# Add a variable for the C compiler string and append it to our list.
ccompiler_var_value = ccompiler_varname + " = " + ccompiler_string + "\n"
output_file_line_list.append( ccompiler_var_value )
# Walk the flat subdirectories for each of the leaves.
for leaf_spec in leaf_list:
# Unpack the leaf_spec tuple.
src_exts, hdr_exts = leaf_spec
# Create the paths to the source and object subdirectories.
src_dirpath = os.path.join( flat_dir, source_dirname )
obj_dirpath = os.path.join( flat_dir, object_dirname, arch_string, build_string )
# Get a list of files from the leaf subdirectory.
src_filenames = os.listdir( src_dirpath )
# This will be the nmake variable name to which we will assign the list
# of source files.
nmake_varname = "BLIS_OBJS"
# Generate the line to output.
leaf_line = generate_object_list( nmake_varname, src_filenames, src_exts, obj_dirpath )
# Accumulate the lines.
output_file_line_list.append( leaf_line )
# Get the filename part of the input filepath.
input_filedir, input_filename = os.path.split( input_filepath )
# Remove the .in extension in the output filename.
output_filename = re.sub( '.mk.in', '.mk', input_filename )
# Construct the filepath for the output file.
output_filepath = os.path.join( flat_dir, config_dirname, output_filename )
# Write the output lines.
write_output_file( output_filepath, output_file_line_list )
# ------------------------------------------------------------------------------
def read_revision_file( filepath ):
# Try to open the revision file.
try:
revision_file = open( filepath, 'r' )
except IOError, err:
print "%s: Couldn't open revision file %s" % ( script_name, filepath )
sys.exit(1)
# Read the first (and only) line.
line = revision_file.readline()
# Close the file.
revision_file.close()
# Grab the string and strip the it of whitespace (should just be a newline).
rev_num_str = line.strip()
# Return the revision number string.
return rev_num_str
# ------------------------------------------------------------------------------
def generate_object_list( nmake_varname, src_filenames, src_exts, obj_dirpath ):
# Initialize the string as an assignment operation.
the_line = nmake_varname + " = "
# Return early if there are no source extensions for this leaf spec.
if src_exts == []:
return ""
# Construct a pattern to match any file ending with any of the source file
# extensions given. This string is going to look something like ".[cf]".
src_pattern = '\.['
for src_ext in src_exts:
src_pattern = src_pattern + src_ext
src_pattern = src_pattern + ']'
# Consider all source files.
for src_filename in src_filenames:
obj_filename = re.sub( src_pattern, '.obj', src_filename )
# Create the full path to the file.
obj_filepath = os.path.join( obj_dirpath, obj_filename )
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: adding file %s" % ( script_name, obj_filepath )
# And then add it to the list.
the_line = the_line + obj_filepath + " "
# Be verbose if verbosity was requested.
if verbose_flag == True:
print "%s: %s" % ( script_name, the_line )
# Append a newline to the end of the line, for file.writelines().
the_line = the_line + "\n"
# Return the new line.
return the_line
# ------------------------------------------------------------------------------
def read_template_file( template_filepath ):
# Open the template file as read-only.
template_file = open( template_filepath, 'r' )
# Read all lines in the template file.
template_file_lines = template_file.readlines()
# Close the file.
template_file.close()
# Return the list of lines in the template file.
return template_file_lines
# ------------------------------------------------------------------------------
def write_output_file( output_filepath, output_lines ):
# Take action only if this is not a dry run.
if dry_run_flag == False:
# Open the template file as writable.
output_file = open( output_filepath, 'w' )
# Write the lines.
output_file.writelines( output_lines )
# Close the file.
output_file.close()
# ------------------------------------------------------------------------------
def read_leaf_list():
# Open the leaf list file.
leaf_file = open( leaf_list_path, 'r' )
# Read the lines in the file.
line_list = leaf_file.readlines()
# Start with a blank list.
leaf_list = []
# Iterate over the lines.
for line in line_list:
# Split the specification by colon to separate the fields.
fields = string.split( string.strip( line ), ':' )
# Get the individual fields of the specification.
src_exts = string.split( fields[0], ',' )
hdr_exts = string.split( fields[1], ',' )
# If it's a singleton list of an empty string, make it an empty list.
if len(src_exts) == 1:
if src_exts[0] == '':
src_exts = []
# If it's a singleton list of an empty string, make it an empty list.
if len(hdr_exts) == 1:
if hdr_exts[0] == '':
hdr_exts = []
# Pack the fields into a tuple.
leaf_spec = ( src_exts, hdr_exts )
# Append the tuple to our list.
leaf_list.append( leaf_spec )
# Return the list.
return leaf_list
# ------------------------------------------------------------------------------
# Begin by executing main().
main()

View File

@@ -1,7 +0,0 @@
attic
broken
old
other
temp
tmp
test

View File

@@ -1 +0,0 @@
.git

View File

@@ -1 +0,0 @@
c:h

View File

@@ -1,72 +0,0 @@
::
::
:: 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(s) of the copyright holder(s) 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.
::
::
@echo off
echo.
echo Makefile
echo.
echo Field G. Van Zee
echo.
echo nmake Makefile for building BLIS for Microsoft Windows. nmake targets
echo may be invoked after running the configure.cmd script. Valid targets are:
echo.
echo all - Invoke the lib and dll targets.
echo lib - Build BLIS as a static library.
echo dll - Build BLIS as a dynamically-linked library.
echo help - Output help and usage information.
echo clean - Invoke clean-log and clean-build targets.
echo clean-log - Remove any log files present.
echo clean-config - Remove all products of configure.cmd. Namely, remove the
echo config, include, and src directories.
echo clean-build - Remove all products of the compilation portion of the build
echo process. Namely, remove the obj, lib, and dll directories.
echo distclean - Invoke clean-log, clean-config, and clean-build targets.
echo.
echo The Makefile also recognizes configuration options corresponding to the
echo following Makefile variables:
echo.
echo VERBOSE - When defined, nmake outputs the actual commands
echo executed instead of more concise one-line progress
echo indicators. (Undefined by default.)
echo.
echo Typically, these options are specified by commenting or uncommenting the
echo corresponding lines in the Makefile. However, if the Makefile currently does
echo not define one of the options, and you wish to enable the corresponding
echo feature without editing the Makefile, you may define the variable at the
echo command line when nmake is invoked. For example, you may enable verboseness
echo while invoking the lib target as follows:
echo.
echo nmake lib VERBOSE=1
echo.

View File

@@ -1,87 +0,0 @@
::
::
:: 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(s) of the copyright holder(s) 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.
::
::
@echo off
:ENVIRONMENT
set GEN_CHECK_REV_FILE=.\build\gen-check-rev-file.py
set GATHER_SRC=.\build\gather-src-for-windows.py
set GEN_CONFIG_FILE=.\build\gen-config-file.py
set CONFIG_DEFS_TEMPL=.\build\config.mk.in
set SRC_TREE_DIR=..\frame
set TOP_BUILD_DIR=.
:PARAMS
if "%1"=="" (goto USAGE)
if "%2"=="" (goto USAGE)
if "%3"=="" (goto USAGE)
set ARCH=%1
set BUILD=%2
set CCOMPILER=%3
:TASK_UNIT
echo %0: Checking/updating revision file.
%GEN_CHECK_REV_FILE% -v
echo %0: Gathering source files into local flat directories.
%GATHER_SRC% %SRC_TREE_DIR% %TOP_BUILD_DIR%
echo %0: Creating configure definitions file.
%GEN_CONFIG_FILE% %TOP_BUILD_DIR% %ARCH% %BUILD% %CCOMPILER% %CONFIG_DEFS_TEMPL%
echo %0: Configuration and setup complete. You may now run nmake.
goto END
:USAGE
echo.
echo configure.cmd
echo.
echo A wrapper script for various configuration and setup scripts that need
echo. to be run before nmake when building BLIS for Microsoft Windows.
echo.
echo USAGE:
echo %0 [arch] [build] [cc]
echo.
echo arch -- The architecture string to build.
echo Supported values: {x86,x64}
echo build -- The kind of build.
echo Supported values: {debug,release}
echo cc -- The C compiler to use.
echo Supported values: {icl,cl}
echo.
echo examples:
echo %0 x86 debug icl
echo %0 x64 release cl
echo.
:END

View File

@@ -1,128 +0,0 @@
@echo off
@setlocal enabledelayedexpansion
rem --------------------------------------------------------------------
rem Build a dll out of a set of object files specified by the
rem argument /objlist.
rem
rem The .lib file thus created is an "import" library, which one links
rem with, but the bulk of the code ends up in the associated .dll file.
rem ---------------------------------------------------------------------
set THIS_SCRIPT=%~dp0%~nx0
if "%1"=="" goto USAGE
if "%2"=="" goto USAGE
if "%3"=="" goto USAGE
if "%4"=="" goto USAGE
if "%5"=="" goto USAGE
set gd_lib_name=%1
set gd_link=%gd_lib_name%-static.link
set LINKER=%3
set LINKARGSFILE=%4
set gd_def=%5
:PARSE_ARGS
set IMPORT=
set OBJLIST=
:ARGLOOP
if "%6"=="" goto ENDARGLOOP
if /i not "%6"=="/import" goto OBJARG
set IMPORT=!IMPORT! %7
goto SHIFT
:OBJARG
if /i not "%6"=="/objlist" goto ENDARGLOOP
set OBJLIST=%7
:SHIFT
shift /4
shift /4
goto ARGLOOP
:ENDARGLOOP
if defined OBJLIST goto COMPILER_SETUP
echo Error: must supply /objlist <file with list of object names>
goto USAGE
:COMPILER_SETUP
set gd_path=%2
set gd_dll_path=%gd_path%.dll
set gd_main_c=dll_main__%gd_lib_name%.c
set gd_main_obj=dll_main__%gd_lib_name%.obj
rem create C file for dll_main
for /F "tokens=*" %%i in ("#include <windows.h>") do echo %%i >%gd_main_c%
echo. >>%gd_main_c%
echo BOOLEAN WINAPI DllMain( >>%gd_main_c%
echo HINSTANCE hDllHandle, >>%gd_main_c%
echo DWORD nReason, >>%gd_main_c%
echo LPVOID Reserved){ >>%gd_main_c%
echo. >>%gd_main_c%
echo BOOLEAN bSuccess = TRUE;>>%gd_main_c%
echo. >>%gd_main_c%
echo switch (nReason){ >>%gd_main_c%
echo case DLL_PROCESS_ATTACH: >>%gd_main_c%
echo DisableThreadLibraryCalls( hDllHandle ); >>%gd_main_c%
echo break; >>%gd_main_c%
echo case DLL_PROCESS_DETACH: >>%gd_main_c%
echo break; >>%gd_main_c%
echo. >>%gd_main_c%
echo }; >>%gd_main_c%
echo. >>%gd_main_c%
echo return bSuccess; >>%gd_main_c%
echo }; >>%gd_main_c%
echo.>>%gd_main_c%
rem set up link file by specifying dll filepath and main object
echo /Fe%gd_dll_path% > %gd_link%
echo %gd_main_obj% >> %gd_link%
rem add contents of linkargs file; most of the link argument action is
rem in this file
type %LINKARGSFILE% >> %gd_link%
rem add command-line import libraries, if any
if defined IMPORT echo !IMPORT! >> %gd_link%
rem add export specification
echo %gd_def% >> %gd_link%
rem add contents of OBJLIST file
type %OBJLIST% >> %gd_link%
rem create dll, import lib, and export file
%LINKER% /nologo /c /O2 /Fo%gd_main_obj% %gd_main_c% >> gendll-cl.log
%LINKER% @%gd_link%
:CLEANUP
del /F /Q %gd_link% %gd_main_c% %gd_main_obj% gendll-cl.log
goto END
:USAGE
echo.
echo. gendll.cmd
echo.
echo. Generate a dynamically-linked library from a set of object files
echo. specified in objlist_file.
echo.
echo. Usage:
echo. %0 dllname dllpath linker linkargs_file symbols_file {/import importlib} /objlist objlist_file
echo.
echo. dllname -- the name of the DLL being created, with no extension.
echo. dllpath -- the path to the DLL being created, with no extension.
echo. linker -- the compiler to use to link the DLL.
echo. linkargs_file -- the path to a file containing a list of all linker
echo. arguments--link options, libraries, and library paths--
echo. that that may be needed to successfully link the DLL
echo. being created.
echo. symbols_file -- the path to a file containing a list of symbols to
echo. export in the DLL.
echo. importlib -- the path to a .lib library that you wish to import into
echo. the DLL being created. Optional.
echo. objlist_file -- the path to a file containing the list of object files
echo. that make up the bulk of the DLL being created.
echo.
:END
endlocal

View File

@@ -1,11 +0,0 @@
/nologo
/LD /MT
/LIBPATH:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib"
/LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib"
/nodefaultlib:libcmt /nodefaultlib:libc /nodefaultlib:libmmt
msvcrt.lib
/LIBPATH:"C:\Program Files (x86)\Intel\Compiler\11.1\048\lib\ia32"
/LIBPATH:"C:\Program Files (x86)\Intel\Compiler\11.1\048\mkl\ia32\lib"
mkl_intel_c.lib
mkl_sequential.lib
mkl_core.lib

View File

@@ -1,11 +0,0 @@
/nologo
/LD /MT
/LIBPATH:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64"
/LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64"
/nodefaultlib:libcmt /nodefaultlib:libc /nodefaultlib:libmmt
msvcrt.lib
/LIBPATH:"C:\Program Files (x86)\Intel\Compiler\11.1\048\lib\intel64"
/LIBPATH:"C:\Program Files (x86)\Intel\Compiler\11.1\048\mkl\em64t\lib"
mkl_intel_lp64.lib
mkl_sequential.lib
mkl_core.lib

View File

@@ -1 +0,0 @@
unknown

Binary file not shown.

View File

@@ -5,6 +5,7 @@
# libraries.
#
# Copyright (C) 2019, The University of Texas at Austin
# Copyright (C) 2018, Advanced Micro Devices, Inc.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are

View File

@@ -36,14 +36,6 @@
//#ifndef BLIS_FAMILY_H
//#define BLIS_FAMILY_H
// Allow the sup implementation to combine some small edge case iterations in
// the 2nd loop of the panel-block algorithm (MR) and/or the 2nd loop of the
// block-panel algorithm (NR) with the last full iteration that precedes it.
// NOTE: These cpp macros need to be explicitly set to an integer since they
// are used at compile-time to create unconditional branches or dead code
// regions.
#define BLIS_ENABLE_SUP_MR_EXT 1
#define BLIS_ENABLE_SUP_NR_EXT 0
#if 0
// -- LEVEL-3 MICRO-KERNEL CONSTANTS AND DEFINITIONS ---------------------------

View File

@@ -76,19 +76,6 @@ void PASTEMAC(opname,EX_SUF) \
AOCL_DTL_TRACE_EXIT(AOCL_DTL_LEVEL_TRACE_2) \
return;\
}\
\
/* If C has a zero dimension, return early. */ \
if ( bli_obj_has_zero_dim( c ) ) return; \
\
/* if alpha or A or B has a zero dimension, \
scale C by beta and return early. */ \
if ( bli_obj_equals( alpha, &BLIS_ZERO ) || \
bli_obj_has_zero_dim( a ) || \
bli_obj_has_zero_dim( b ) ) \
{\
bli_scalm( beta, c ); \
return;\
}\
\
/* If the rntm is non-NULL, it may indicate that we should forgo sup
handling altogether. */ \

View File

@@ -4,7 +4,7 @@
An object-based framework for developing high-performance BLAS-like
libraries.
Copyright (C) 2019, Advanced Micro Devices, Inc.
Copyright (C) 2019-20, Advanced Micro Devices, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are

View File

@@ -4,7 +4,7 @@
An object-based framework for developing high-performance BLAS-like
libraries.
Copyright (C) 2019, Advanced Micro Devices, Inc.
Copyright (C) 2019-20, Advanced Micro Devices, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are

View File

@@ -4,7 +4,7 @@
An object-based framework for developing high-performance BLAS-like
libraries.
Copyright (C) 2019, Advanced Micro Devices, Inc.
Copyright (C) 2019-20, Advanced Micro Devices, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are

View File

@@ -74,20 +74,6 @@ void bli_gemm_front
}
}
#endif
// Check parameters.
if ( bli_error_checking_is_enabled() )
bli_gemm_check( alpha, a, b, beta, c, cntx );
#ifdef BLIS_ENABLE_SMALL_MATRIX
// Only handle small problems separately for homogeneous datatypes.
if ( bli_obj_dt( a ) == bli_obj_dt( b ) &&
bli_obj_dt( a ) == bli_obj_dt( c ) &&
bli_obj_comp_prec( c ) == bli_obj_prec( c ) )
{
err_t status = bli_gemm_small( alpha, a, b, beta, c, cntx, cntl );
if ( status == BLIS_SUCCESS ) return;
}
#endif
// Alias A, B, and C in case we need to apply transformations.
bli_obj_alias_to( a, &a_local );

View File

@@ -5,7 +5,7 @@
libraries.
Copyright (C) 2014, The University of Texas at Austin
Copyright (C) 2018 - 2019, Advanced Micro Devices, Inc.
Copyright (C) 2018 - 2020, Advanced Micro Devices, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
@@ -677,10 +677,11 @@ siz_t bli_thread_range_mdim
// function will mistakenly skip over unstored regions of the
// structured matrix, even though they represent part of that matrix
// that will be dense and full (after packing).
if ( family == BLIS_GEMM ) { x = a; use_weighted = FALSE; }
else if ( family == BLIS_HERK ) { x = c; use_weighted = TRUE; }
else if ( family == BLIS_TRMM ) { x = a; use_weighted = TRUE; }
else /*family == BLIS_TRSM*/ { x = a; use_weighted = FALSE; }
if ( family == BLIS_GEMM ) { x = a; use_weighted = FALSE; }
else if ( family == BLIS_HERK ) { x = c; use_weighted = TRUE; }
else if ( family == BLIS_GEMMT ) { x = c; use_weighted = TRUE; }
else if ( family == BLIS_TRMM ) { x = a; use_weighted = TRUE; }
else /*family == BLIS_TRSM*/ { x = a; use_weighted = FALSE; }
if ( use_weighted )
{
@@ -736,10 +737,11 @@ siz_t bli_thread_range_ndim
// function will mistakenly skip over unstored regions of the
// structured matrix, even though they represent part of that matrix
// that will be dense and full (after packing).
if ( family == BLIS_GEMM ) { x = b; use_weighted = FALSE; }
else if ( family == BLIS_HERK ) { x = c; use_weighted = TRUE; }
else if ( family == BLIS_TRMM ) { x = b; use_weighted = TRUE; }
else /*family == BLIS_TRSM*/ { x = b; use_weighted = FALSE; }
if ( family == BLIS_GEMM ) { x = b; use_weighted = FALSE; }
else if ( family == BLIS_HERK ) { x = c; use_weighted = TRUE; }
else if ( family == BLIS_GEMMT ) { x = c; use_weighted = TRUE; }
else if ( family == BLIS_TRMM ) { x = b; use_weighted = TRUE; }
else /*family == BLIS_TRSM*/ { x = b; use_weighted = FALSE; }
if ( use_weighted )
{
@@ -1062,7 +1064,6 @@ void bli_thread_partition_2x2
{
*nt1 = ( work1 >= work2 ? n_thread : 1 );
*nt2 = ( work1 < work2 ? n_thread : 1 );
return;
}