On Sun, Sep 18, 2016 at 4:24 PM, Roland Haas rhaas@illinois.edu wrote:
Hello Erik,
It's strange that code without "-xHost" does not run on the head node.
What
other compiler options are there? The only reason I can see is that the Intel compiler has been installed in a special way to use additional compiler flags, and these flags make the code not work any more on Sandy Bridge.
It is some runtime detection that fails. I get: --8<-- Please verify that both the operating system and the processor support Intel(R) F16C instructions. --8<-- and adding -xHost complains that "icc: command line warning #10121: overriding '-xCORE-AVX-I' with '-xHost'" so it seesm as if some vectorization is enabled by the cray cc wrapper.
To my knowledge, the processors accept the same machine instructions. The CPU tuning might be different.
Is this also true for vectorization? Or maybe this really is just a lack of OS support for the AVX registers on the login nodes. -xAVX seems to work fine and the only difference (according to the man page for icpc) are "Float-16 conversion instructions and the RDRND instruction". Float16 conversion would fit the F16C acronym in the error message.
The best option for us is then probably "-xHost -axCORE-AVX-I". This ensures (-x) that the code runs on the front end, but it will apply code optimizations (-ax) for the compute nodes.
-erik