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 > 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
>>
>>
>