diff --git a/julia-1.0.0-0.build.sh b/julia-1.0.0-0.build.sh new file mode 100755 index 0000000..31426c8 --- /dev/null +++ b/julia-1.0.0-0.build.sh @@ -0,0 +1,113 @@ +#! /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 $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 +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