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

Reply via email to