We have a Linux cluster that consists of different models of hardware.
If I build Julia on one kind of hardware, say
model name : Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
but then run that installation on another kind of hardware, say
model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
I will usually get an error message
ERROR: Target architecture mismatch. Please delete or regenerate
sys.{so,dll,dylib}.
As far as I know, the underlying O/S and software on both machines is the
same, Red Hat Enterprise Linux Server release 6.6 (Santiago), but I cannot
be 100% certain about that. I am compiling with gcc-5.2.0
I tried the suggestion in DISTRIBUTING.md, but setting MARCH to either
core2 or x86-64 failed on the E5-2680 machine - openblas usually fails
../kernel/x86_64/dtrmm_kernel_4x8_haswell.c:79: Error: no such instruction:
`vpermpd $0xb1,%ymm3,%ymm3'
A discussion thread a year ago seemed to indicate some problems as well...
https://groups.google.com/forum/#!topic/julia-users/3H9Krno8aVU
I can of course build an architecture specific Julia for each different
kind of hardware we have, or some subset of them, and then invoke the right
version depending on where the job is run, but is there an easier way?