Proposed updates (mostly from @nikizadehgfdl, @bensonr, and @thomas-robinson )
For prod, -xsse2 to -march=core-avx-2. This changes the ISA from xsse2 to avx2, and provides generic hardware support. It's believed avx2 can now support run-to-run reproducibility.
For repro and debug, -xsse2 to -march=core-avx-i. So far, this appears to provide complete reproducibility (across layouts, openmp, threads)
For intel-classic, add -qno-opt-dynamic-align to FLAGS and CFLAGS, needed for run-to-run reproducibility when using vector ISAs.
For intel, add -qno-opt-dynamic-align to FFLAGS only (as icx does not support it)
For all, add -qopt-report-phase=vec and -qopt-report=2 to CFLAGS and FLAGS when VERBOSE is used
For intel-oneapi and intel, remove -sox from FFLAGS as ifx does not support it
For intel-oneapi and intel, remove -ftrapuv from CFLAGS_DEBUG as icx (clang) does not support it
For intel-oneapi and intel, set HAVE_GETTID macro as the GNU library seems to have gettid
Remove the unneeded and problematic (interferes with parallel make) SHELL variable
Remove MAKEFLAGS as it will request too much parallelism for batch jobs, and can be confusing as there are other switches in the FRE workflow to set the fremake parallelism
42 #45
Proposed updates (mostly from @nikizadehgfdl, @bensonr, and @thomas-robinson )
For prod, -xsse2 to -march=core-avx-2. This changes the ISA from xsse2 to avx2, and provides generic hardware support. It's believed avx2 can now support run-to-run reproducibility.
For repro and debug, -xsse2 to -march=core-avx-i. So far, this appears to provide complete reproducibility (across layouts, openmp, threads)
3 templates: intel-oneapi, intel-classic, intel (ifort/icx)
For intel-classic, add -qno-opt-dynamic-align to FLAGS and CFLAGS, needed for run-to-run reproducibility when using vector ISAs.
For intel, add -qno-opt-dynamic-align to FFLAGS only (as icx does not support it)
For all, add -qopt-report-phase=vec and -qopt-report=2 to CFLAGS and FLAGS when VERBOSE is used
For intel-oneapi and intel, remove -sox from FFLAGS as ifx does not support it
For intel-oneapi and intel, remove -ftrapuv from CFLAGS_DEBUG as icx (clang) does not support it
For intel-oneapi and intel, set HAVE_GETTID macro as the GNU library seems to have gettid
Remove the unneeded and problematic (interferes with parallel make) SHELL variable
Remove MAKEFLAGS as it will request too much parallelism for batch jobs, and can be confusing as there are other switches in the FRE workflow to set the fremake parallelism