We built our application using the Intel Fortran and C compilers. It also uses MKL. However when we try and run it on an AMD EPYC 7742 we get the message
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 and POPCNT instructions.
The compiler options we are using are:
FORTRAN_FLAGS.....=-real_size 64 -integer_size 64 -align dcommons,rec16byte,sequence -auto -reentrancy threaded -fpic -c -xSSE4.2 -axCORE-AVX2,CORE-AVX-I,AVX -nologo -threads -static-intel
C_FLAGS...........=-c -align -fPIC -xSSE4.2 -axCORE-AVX2,CORE-AVX-I,AVX -static
Our app runs great on all the Intel processors. However we need to make it work at some level to support a customer system.
What compiler options should we use?
Will MKL work on this AMD processor?
Replace -xSSE4.2 with "-arch SSE4.2" (no quotes). -x, other than -xHost (which you could also use if you are running on the same system), requires that the application run on an Intel CPU.
MKL will work on AMD CPUs.
If you are using Intel C++, the same advice applies, but I will note that -ax on non-Intel CPUs always takes the "generic" code path. You can change what the generic path (defaults to SSE2) is with -arch.