From 42d13b4fc74eb7ec67473c45ba8de28193b7c225 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 31 Mar 2016 14:52:09 -0400 Subject: [PATCH] Use fewer processes while building OpenBLAS Closes #15716 --- deps/Makefile | 7 +- .../md5 | 1 - .../sha512 | 1 - .../md5 | 1 + .../sha512 | 1 + deps/openblas-make.patch | 34 +++++++++ deps/openblas-win64.patch | 75 ------------------- deps/openblas.version | 4 +- 8 files changed, 42 insertions(+), 82 deletions(-) delete mode 100644 deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/md5 delete mode 100644 deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/sha512 create mode 100644 deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/md5 create mode 100644 deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/sha512 create mode 100644 deps/openblas-make.patch delete mode 100644 deps/openblas-win64.patch diff --git a/deps/Makefile b/deps/Makefile index 669382a1760a0..4636d8d915750 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -1184,10 +1184,11 @@ else ifeq ($(OPENBLAS_NO_AVX2), 1) OPENBLAS_BUILD_OPTS += NO_AVX2=1 endif +# Do not overwrite the "-j" flag +OPENBLAS_BUILD_OPTS += MAKE_NB_JOBS=0 + $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/config.status: $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/Makefile -ifeq ($(OS),WINNT) - cd $(dir $@) && patch -p1 < $(SRCDIR)/openblas-win64.patch -endif + cd $(dir $@) && patch -p1 < $(SRCDIR)/openblas-make.patch perl -i -ple 's/^\s*(EXTRALIB\s*\+=\s*-lSystemStubs)\s*$$/# $$1/g' $<.system touch $@ $(OPENBLAS_OBJ_SOURCE): $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/config.status diff --git a/deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/md5 b/deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/md5 deleted file mode 100644 index 43459f64579c2..0000000000000 --- a/deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -0d12e5bd5beb6a6948ea72efc3126264 diff --git a/deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/sha512 b/deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/sha512 deleted file mode 100644 index da697473111c7..0000000000000 --- a/deps/checksums/openblas-53e849f4fcae4363a64576de00e982722c7304f9.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -4bfbd7ed531138ec935346c0476a5ff857938c9e1e8090f71ed21fe6329a07b1b38577bfa1e5bfabfc397209c1b800aec315c5bfbe917229ec0dcf5a523ea688 diff --git a/deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/md5 b/deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/md5 new file mode 100644 index 0000000000000..e40e0d29fc087 --- /dev/null +++ b/deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/md5 @@ -0,0 +1 @@ +a3850786d63f4af657d2aeb1baab5b20 diff --git a/deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/sha512 b/deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/sha512 new file mode 100644 index 0000000000000..1889300acd40c --- /dev/null +++ b/deps/checksums/openblas-a71e8c82f6a9f73093b631e5deab1e8da716b61f.tar.gz/sha512 @@ -0,0 +1 @@ +0a3e7bb0660148207732a58d411bb492f674d57e6733eee1c293b749f00516efd9d47e62193a9ac480bbbddb0b25c5bd4a66eb9caa717a0d2906c9dcbb3c39fe diff --git a/deps/openblas-make.patch b/deps/openblas-make.patch new file mode 100644 index 0000000000000..342c35a9653d2 --- /dev/null +++ b/deps/openblas-make.patch @@ -0,0 +1,34 @@ +commit 7aac0aff8ec22598734f5effa2fcc107c95c0655 +diff --git a/Makefile.rule b/Makefile.rule +index 847ee1c..6d0d8f4 100644 +--- a/Makefile.rule ++++ b/Makefile.rule +@@ -112,7 +112,10 @@ NO_AFFINITY = 1 + # NO_PARALLEL_MAKE = 1 + + # Force number of make jobs. The default is the number of logical CPU of the host. +-# This is particularly useful when using distcc ++# This is particularly useful when using distcc. ++# A negative value will disable adding a -j flag to make, allowing to use a parent ++# make -j value. This is usefull to call OpenBLAS make from an other project ++# makefile + # MAKE_NB_JOBS = 2 + + # If you would like to know minute performance report of GotoBLAS. +diff --git a/getarch.c b/getarch.c +index f9c49e6..1e0b086 100644 +--- a/getarch.c ++++ b/getarch.c +@@ -1013,7 +1013,12 @@ int main(int argc, char *argv[]){ + #endif + + #ifdef MAKE_NB_JOBS ++ #if MAKE_NB_JOBS > 0 + printf("MAKE += -j %d\n", MAKE_NB_JOBS); ++ #else ++ // Let make use parent -j argument or -j1 if there ++ // is no make parent ++ #endif + #elif NO_PARALLEL_MAKE==1 + printf("MAKE += -j 1\n"); + #else diff --git a/deps/openblas-win64.patch b/deps/openblas-win64.patch deleted file mode 100644 index a93e874499f7c..0000000000000 --- a/deps/openblas-win64.patch +++ /dev/null @@ -1,75 +0,0 @@ -commit 640cccc2b159dba6d99b9eea11b7f23f98d6c85d -Author: Zhang Xianyi -Date: Mon Nov 30 15:19:45 2015 -0600 - - Refs #697. Fixed gemv bug for Windows. - - Thank matzeri's patch. - -diff --git a/interface/gemv.c b/interface/gemv.c -index 0a222a6..97c68bf 100644 ---- a/interface/gemv.c -+++ b/interface/gemv.c -@@ -37,6 +37,7 @@ - /*********************************************************************/ - - #include -+#include - #include "common.h" - #include "l1param.h" - #ifdef FUNCTION_PROFILE -@@ -224,13 +225,17 @@ void CNAME(enum CBLAS_ORDER order, - #ifdef ALIGNED_ACCESS - stack_alloc_size += 3; - #endif -- if(stack_alloc_size < 128) -+// if(stack_alloc_size < 128) - //dgemv_n.S require a 128 bytes buffer -- stack_alloc_size = 128; -+// increasing instead of capping 128 -+// ABI STACK for windows 288 bytes -+ stack_alloc_size += 288 / sizeof(FLOAT) ; - - if(stack_alloc_size > MAX_STACK_ALLOC / sizeof(FLOAT)) - stack_alloc_size = 0; - -+// stack overflow check -+ volatile double stack_check = 3.14159265358979323846; - FLOAT stack_buffer[stack_alloc_size]; - buffer = stack_alloc_size ? stack_buffer : (FLOAT *)blas_memory_alloc(1); - // printf("stack_alloc_size=%d\n", stack_alloc_size); -@@ -265,6 +270,8 @@ void CNAME(enum CBLAS_ORDER order, - - } - #endif -+// stack overflow check -+assert(stack_check==3.14159265358979323846); - - #ifdef MAX_STACK_ALLOC - if(!stack_alloc_size){ -diff --git a/exports/Makefile b/exports/Makefile -index 177e975..29a9ca8 100644 ---- a/exports/Makefile -+++ b/exports/Makefile -@@ -96,9 +96,9 @@ libgoto_hpl.def : gensymbol - ifeq (, $(SYMBOLPREFIX)$(SYMBOLSUFFIX)) - $(LIBDYNNAME) : ../$(LIBNAME) osx.def - else --../$(LIBNAME).renamed : ../$(LIBNAME) objconv.def -- $(OBJCONV) @objconv.def ../$(LIBNAME) ../$(LIBNAME).renamed --$(LIBDYNNAME) : ../$(LIBNAME).renamed osx.def -+../$(LIBNAME).osx.renamed : ../$(LIBNAME) objconv.def -+ $(OBJCONV) @objconv.def ../$(LIBNAME) ../$(LIBNAME).osx.renamed -+$(LIBDYNNAME) : ../$(LIBNAME).osx.renamed osx.def - endif - ifeq ($(NOFORTRAN), $(filter $(NOFORTRAN),1 2)) - #only build without Fortran -@@ -220,7 +220,7 @@ linktest.c : gensymbol ../Makefile.system ../getarch.c - perl ./gensymbol linktest $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > linktest.c - - clean :: -- @rm -f *.def *.dylib __.SYMDEF* -+ @rm -f *.def *.dylib __.SYMDEF* *.renamed - - include ../Makefile.tail - diff --git a/deps/openblas.version b/deps/openblas.version index 7c97e1bf1705d..58b9467205abf 100644 --- a/deps/openblas.version +++ b/deps/openblas.version @@ -1,2 +1,2 @@ -OPENBLAS_BRANCH=v0.2.15 -OPENBLAS_SHA1=53e849f4fcae4363a64576de00e982722c7304f9 +OPENBLAS_BRANCH=v0.2.17 +OPENBLAS_SHA1=a71e8c82f6a9f73093b631e5deab1e8da716b61f