diff --git a/Makefile.rule b/Makefile.rule index 0d7c45ead..4a6e4e9f1 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -163,10 +163,11 @@ COMMON_PROF = -pg # Build Debug version # DEBUG = 1 -# Improve GEMV and GER for small matrices by stack allocation. -# For details, https://github.com/xianyi/OpenBLAS/pull/482 +# Set maximum stack allocation. +# The default value is 2048. 0 disable stack allocation a may reduce GER and GEMV +# performance. For details, https://github.com/xianyi/OpenBLAS/pull/482 # - MAX_STACK_ALLOC=2048 +# MAX_STACK_ALLOC = 0 # Add a prefix or suffix to all exported symbol names in the shared library. # Avoid conflicts with other BLAS libraries, especially when using diff --git a/Makefile.system b/Makefile.system index 9de9232ad..b3e83e2dd 100644 --- a/Makefile.system +++ b/Makefile.system @@ -328,7 +328,8 @@ ifdef SANITY_CHECK CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU) endif -ifdef MAX_STACK_ALLOC +MAX_STACK_ALLOC ?= 2048 +ifneq ($(MAX_STACK_ALLOC), 0) CCOMMON_OPT += -DMAX_STACK_ALLOC=$(MAX_STACK_ALLOC) endif diff --git a/interface/gemv.c b/interface/gemv.c index 97c68bf2d..206390ed9 100644 --- a/interface/gemv.c +++ b/interface/gemv.c @@ -270,10 +270,11 @@ void CNAME(enum CBLAS_ORDER order, } #endif -// stack overflow check -assert(stack_check==3.14159265358979323846); #ifdef MAX_STACK_ALLOC + // stack overflow check + assert(stack_check==3.14159265358979323846); + if(!stack_alloc_size){ blas_memory_free(buffer); }