diff --git a/deps/blas.mk b/deps/blas.mk index 873242dc95dd4..13b29014c808b 100644 --- a/deps/blas.mk +++ b/deps/blas.mk @@ -99,7 +99,12 @@ $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/openblas-skylakexdgemm.patch-applied: $(BUILDDIR patch -p1 -f < $(SRCDIR)/patches/openblas-skylakexdgemm.patch echo 1 > $@ -$(BUILDDIR)/$(OPENBLAS_SRC_DIR)/build-configured: $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/openblas-skylakexdgemm.patch-applied +$(BUILDDIR)/$(OPENBLAS_SRC_DIR)/openblas-winexit.patch-applied: $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/source-extracted + cd $(BUILDDIR)/$(OPENBLAS_SRC_DIR) && \ + patch -p1 -f < $(SRCDIR)/patches/openblas-winexit.patch + echo 1 > $@ + +$(BUILDDIR)/$(OPENBLAS_SRC_DIR)/build-configured: $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/openblas-skylakexdgemm.patch-applied $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/openblas-winexit.patch-applied echo 1 > $@ $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/build-compiled: $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/build-configured diff --git a/deps/patches/openblas-winexit.patch b/deps/patches/openblas-winexit.patch new file mode 100644 index 0000000000000..b3268c2f8806b --- /dev/null +++ b/deps/patches/openblas-winexit.patch @@ -0,0 +1,27 @@ +commit b16fa2e7111dc4dc1d9d987bd5dcbf89c82b9ee8 +Author: Keno Fischer +Date: Sun Dec 29 15:08:13 2019 -0500 + + win32: Don't run cleanup if we're about to exit anyway + + If the process is about to exit, there's no point trying to do + a bunch of work to clean up resources. The kernel will release + them much more efficiently when the process exits at the end + of this function. + +diff --git a/exports/dllinit.c b/exports/dllinit.c +index 4a05c0e1..88f9af65 100644 +--- a/exports/dllinit.c ++++ b/exports/dllinit.c +@@ -50,7 +50,10 @@ BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved) { + gotoblas_init(); + break; + case DLL_PROCESS_DETACH: +- gotoblas_quit(); ++ // If the process is about to exit, don't bother releasing any resources ++ // The kernel is much better at bulk releasing then. ++ if (!reserved) ++ gotoblas_quit(); + break; + case DLL_THREAD_ATTACH: + break;