Hello Jameson, I have more/less the same issue as Glen H---I need to build a single Julia for a large cluster with a varied set of x86_64 architectures. My strategy would be to build on the newest arch (to get maximum dynamic openblas support) but with restricted ARCH/MARCH setting, x86_64 / x86-64 (mind the _ - difference). Indeed the oldest arch is an AMD with SSE2 but not SSE3, the rest is Intel core2 and higher up.
However, today's 0.4-dev download with Make.user ARCH=x86_64 MARCH=x86-64 gives on fresh make (after download): checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for x86_64-linux-gcc... gcc -march=x86_64 -m64 checking whether the C compiler works... no configure: error: in `/homes/eva/q/qleuween/src/julia/deps/libuv': configure: error: C compiler cannot create executables See `config.log' for more details make[1]: *** [libuv/config.status] Error 77 make: *** [julia-deps] Error 2 To me it seems that libuv is using an ARCH setting for MARCH, but I don't know how to circumvent this. Cheers, ---david On Thursday, September 11, 2014 at 4:50:34 AM UTC+2, Jameson wrote: > > openblas defaults to detecting the runtime system and picking the best > code to run for that computer. > > The recommendation to remove `sys.so` has been deprecated. Setting ARCH / > MARCH is now the preferred solution. (note that core2 is not the least > common denominator, since there exist some AMD chips without some of the > core2 instructions – instead use x86_64 / x86-64) > > > On Wed, Sep 10, 2014 at 10:17 PM, Glen Hertz <[email protected] > <javascript:>> wrote: > >> Hi, >> >> I'm trying to deploy Julia to users in a compute farm environment with >> many machines running on different CPUs. This has been discussed here: >> >> >> https://groups.google.com/forum/?fromgroups=#!searchin/julia-users/make$20dist/julia-users/B8x6CYbFUNY/Ph5Cunhl5EwJ >> >> The recommendation was to use `make dist` which builds a tarball that >> doesn't include `sys.so` and you can move it to any machine. With the 0.3 >> release `make dist` builds `sys.so` so I removed it but the executable is >> still not portable. What are the most likely steps to build Julia so it >> works on different hardware? I did something like this (on a RHEL 5.5 >> system): >> >> "Make.user": >> FC=gfortran44 >> CC=gcc44 >> CXX=g++44 >> MARCH=core2 >> OPENBLAS_TARGET_ARCH=CORE2 >> >> (I updated binutils, python and patchelf). >> >> When I run `make dist` it crease a tarball with a `sys.so` so I deleted >> it. It still segfaults. >> >> It doesn't seem like `OPENBLAS_TARGET_ARCH` is working since >> `versioninfo()` shows it was compiled for `Nehalem`. Note, to rebuild I >> did: >> >> ``` >> cp Make.user .. >> git clean -xdf >> cp ../Make.user . >> make dist >> ``` >> >> Please let me know if there is something better I can try out and if I >> get something working I can update the documentation. >> >> Thanks, >> >> Glen >> >> >
