#! /bin/bash PKG=julia VERSION=1.0.0 BUILD=0 PREFIX=/pkg/$PKG-$VERSION-$BUILD #PREFIX=/dev/shm/$PKG-$VERSION-$BUILD set -xe umask 022 BUILD_TMPDIR=/dev/shm/$PKG-$VERSION-$BUILD.build.tmp test -d $BUILD_TMPDIR && rm -rf $BUILD_TMPDIR mkdir -p $BUILD_TMPDIR/home export TMPDIR=$BUILD_TMPDIR export HOME=$BUILD_TMPDIR/home exec </dev/null mkdir -p $PREFIX cat >$PREFIX/profile <<-EOF PATH=$PREFIX/bin:\$PATH EOF . $PREFIX/profile export MAKEFLAGS="-j $(nproc)" BUILDDIR=$PREFIX/build mkdir -p $BUILDDIR cd $BUILDDIR test -e julia-${VERSION}-full.tar.gz || wget https://github.com/JuliaLang/julia/releases/download/v${VERSION}/julia-${VERSION}-full.tar.gz test -d julia || tar xvf julia-${VERSION}-full.tar.gz cd julia patch -p1 <<'EOF' From 44d590277454035841803083f57af1b861192595 Mon Sep 17 00:00:00 2001 From: Donald Buczek <buczek@molgen.mpg.de> Date: Fri, 30 Jun 2017 11:41:41 +0200 Subject: [PATCH 1/2] Allow OpenBLAS NUM_THREADS to be overwritten When building OpenBLAS we have some default for its NUM_THREADS build option. Allow this default to be overwritten by a new OPENBLAS_NUM_THREADS make variable. --- deps/blas.mk | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/deps/blas.mk b/deps/blas.mk index 55216c8..b9bf8ed 100644 --- a/deps/blas.mk +++ b/deps/blas.mk @@ -14,17 +14,18 @@ OPENBLAS_BUILD_OPTS += GEMM_MULTITHREADING_THRESHOLD=50 ifneq ($(ARCH),x86_64) # Assume we can't address much memory to spawn many threads # It is also unlikely that 32-bit architectures have too many cores -OPENBLAS_BUILD_OPTS += NUM_THREADS=8 +OPENBLAS_NUM_THREADS:=8 else ifeq ($(OS),WINNT) # Windows seems unable to handle very many -OPENBLAS_BUILD_OPTS += NUM_THREADS=16 +OPENBLAS_NUM_THREADS:=16 else ifeq ($(OS),Darwin) # This should suffice for the largest macs -OPENBLAS_BUILD_OPTS += NUM_THREADS=16 +OPENBLAS_NUM_THREADS:=16 else # On linux, try to provision for the largest possible machine currently -OPENBLAS_BUILD_OPTS += NUM_THREADS=16 +OPENBLAS_NUM_THREADS:=16 endif +OPENBLAS_BUILD_OPTS += NUM_THREADS=$(OPENBLAS_NUM_THREADS) else OPENBLAS_BUILD_OPTS += USE_THREAD=0 endif -- 2.4.1 --- ist etwas runtergehackt aber dadurch dass auf all unseren Servern mehr als 8 threads sind, sollte es immer greifen mit `OPENBLAS_NUM_THREADS=x julia` kann man es zur laufzeit erhoehen diff --git a/base/sysimg.jl b/base/sysimg.jl index dd605b0..ed3c7b2 100644 --- a/base/sysimg.jl +++ b/base/sysimg.jl @@ -459,7 +459,7 @@ function __init__() if !haskey(ENV, "OPENBLAS_NUM_THREADS") && !haskey(ENV, "OMP_NUM_THREADS") cpu_threads = Sys.CPU_THREADS::Int if cpu_threads > 8 # always at most 8 - ENV["OPENBLAS_NUM_THREADS"] = "8" + ENV["OPENBLAS_NUM_THREADS"] = "1" elseif haskey(ENV, "JULIA_CPU_THREADS") # or exactly as specified ENV["OPENBLAS_NUM_THREADS"] = cpu_threads end # otherwise, trust that openblas will pick CPU_THREADS anyways, without any intervention -- EOF make -j $(nproc) prefix="${PREFIX}" MARCH=x86-64 OPENBLAS_NUM_THREADS=80 make install prefix=${PREFIX} MARCH=x86-64 cp -av ${BUILDDIR}/julia/usr/bin/julia-debug ${PREFIX}/bin/ cp -av ${BUILDDIR}/julia/usr/lib/libjulia-debug.so* ${PREFIX}/lib/ cp -av ${BUILDDIR}/julia/usr/lib/julia/sys-debug.so ${PREFIX}/lib/julia/ for i in `ls ${PREFIX}/bin`; do ln -sv ${PREFIX}/bin/$i{,-$VERSION} done exit