Hi,
when I compile my code using the icx compiler I get the following warning:
clang: warning: argument unused during compilation: '-fno-alias' [-Wunused-command-line-argument]
When I use the icc compiler I don't get this warning. I get the same warning when I use the compiler flag, -qopt-zmm-usage=high, but again only with icx. From the assembler code I can see that zmm registers are used. So can I assume that fno-alias is also active? Why do I get these warnings and can I ignore them?
Hi Stephan,
I cannot reproduce this issue on my end. Which compiler module are you using? Maybe you could post the sequence of commands (after logging in to fritz) the eventually leads to the error message.
Thanks,
Georg.
module load intel (the loaded version is intel/2021.4.0)
cd to the exercise directory
make
This are is the output in the shell when I run make:
icx -c -O3 -xHost -fno-alias src/kernel_bench_a.c
icx -c -O3 -xHost -fno-alias src/timing.c
icx -O3 -xHost -fno-alias kernel_bench_a.o timing.o -o kernel_bench_a
clang: warning: argument unused during compilation: '-fno-alias' [-Wunused-command-line-argument]
icx -c -O3 -xHost -fno-alias src/kernel_bench_b.c
icx -O3 -xHost -fno-alias kernel_bench_b.o timing.o -o kernel_bench_b
clang: warning: argument unused during compilation: '-fno-alias' [-Wunused-command-line-argument]
icx -c -O3 -xHost -fno-alias src/kernel_bench_c.c -o kernel_bench_c_icx.o
icx -O3 -xHost -fno-alias kernel_bench_c_icx.o timing.o -o kernel_bench_c_icx
clang: warning: argument unused during compilation: '-fno-alias' [-Wunused-command-line-argument]
icc -c -O3 -xHost -fno-alias src/kernel_bench_c.c -o kernel_bench_c_icc.o
icc -O3 -xHost -fno-alias kernel_bench_c_icc.o timing.o -o kernel_bench_c_icc
OK, thanks. Now I know what's happening, and it's actually a known problem. The warnings are emitted by the linker, which does not need these options and could silently ignore them (and the icc compiler, when calling the linker, does exactly that). However, in case of the new clang-based Intel compiler infrastructure, this is not done. The linker sees these optimization options and does not know what to make of them. We expect that this will be fixed with some future update because it's a nuisance. Till then you have to either live with the warnings or separate the linker options from the compiler options in your makefile.