“Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, FXSAVE, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, MOVBE, POPCNT, F16C, AVX, FMA, BMI, LZCNT and AVX2 instructions.”
I’ve been through this several times, and perhaps it needs to be added to the FAQ. See https://cjcoats.github.io/ioapi/ERRORS.html#inst:
This is a build-compatibility problem: the compiler has been told it can use an instruction-set not compatible with the processor you’re running SMOKE on.
Over the years, Intel has added multiple generations of new instructions to their processors that will give improved performance if you build executables that use them. But if you use the newer, higher-performance instructions in an executable and run it on an older processor, this is just the sort of error message you will get.
Various compilers have different compile-flags that tell the compiler just which instruction-set to use; some (e.g, PGI) default to “use the instruction-set for the processor on which the compiler is currently running”…
You have an executable built for Haswell-or-later processors, but you are running it on an earlier (SandyBridge or before) processor.
Re-build netCDF, I/O API, and SMOKE on the same processor you’re going to use to run SMOKE, using compile-flags compatible with its processor (e.g., for Intel, add -xHost
to the compile-flags: that says “Compile using the instruction-set for the processor the compiler is running on.”).