On Mon, Nov 23, 2015 at 11:43 AM, Ian Watson <ianiwat...@gmail.com> wrote: > 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
Yes, you should build with an architecture that is compatible with all the ones you want to run on. > > ../kernel/x86_64/dtrmm_kernel_4x8_haswell.c:79: Error: no such instruction: > `vpermpd $0xb1,%ymm3,%ymm3' binutils too old https://github.com/julialang/julia#linux-build-troubleshooting > > 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? > >