NWChem suddenly started to crash with SIGSEGV.


Click here for full thread
Gets Around
Quote:Deej Aug 2nd 3:55 pm
Followup: Apparently NWChem will only run on the same type of CPU as it is compiled. We have a mix of AMD and Intel systems on our HPC Grid, and due to current Grid usage, the job was always getting assigned to an AMD node but the machine that things are compiled on is an Intel box.


NWChem will absolutely run on different CPU types from which it is compiled. You just need to set the compiler flags to generate code that will run on the architecture where NWChem runs. If you have many architectures, you need to either target the least common denominator or generate a multi-architecture binary (aka fat binary, which may not be supported by GCC).

The most obvious instance of NWChem supporting different CPU types is when it is cross-compiled, which is necessary on Blue Gene systems, for example. Blue Gene binaries are generated on 64-bit POWER login nodes, which supports a different ISA _and_ ABI than the compute nodes.

One way to make it so that NWChem is not portable to different x86 processors is to use "-march=native" or "-mtune=native". It is possible to build GCC such that this is the default. It may also be the default flags in the NWChem build system. If you want a portable binary, consider using "-mtune=generic", although this may reduce the performance. See https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/x86-Options.html for details. You may be able to find GCC flags for the union of all of the ISAs in your cluster, which may be better than "-mtune=generic".

Note that the most likely place where processor-specific instructions exist are in the BLAS library. If you dynamically link BLAS, then you should be fine as long as each machine has the appropriate BLAS library in the local LD_LIBRARY_PATH. If you link statically, you need to use a BLAS library that supports all of the processors you need to run on. Without knowing more about your build, it's hard to give better recommendations here.

Even though you are not trying to use the Intel compilers, because I work for Intel, I feel compelled to link to https://software.intel.com/en-us/articles/optimization-notice.