Interestingly, my strace output shows that icc is looking in
Is this something to be concerned about? Is there some way to get icc to use xild first? Should I even care?
Thanks for your time and help.
if I do use -ipo, will icc automaticall call the correct one? Or will I have to do something extra?
Edit: Easy test - took a hello world program, and compiled as thus:
icpc hello.cpp -ipo -o hello
ran it through strace, and still no reference to xild. Or is the compiler being even smarter, and realizing that it stll doesn't need xild?
Though it does seem a little odd - I would have expected it to just always call xild, if it can. It also seems slightly odd, since I'm guessing there's no way to use xiar without specifying it explicitly, since icc doesn't call that one itself.
Thanks agan for your help!
Why cannot I see icpc calls xild with multi-file -ipo set up? (source code: https://codesign.llnl.gov/lulesh/lulesh2.0.3.tgz)
strace icpc -DUSE_MPI=0 lulesh.cc lulesh-comm.cc lulesh-viz.cc lulesh-util.cc lulesh-init.cc -v -qopenmp -ipo -lm -o lulesh2.0 &>t
I can only see gnu ld is called.
It is really confusing.
In my mind, the compilation is as follows (https://software.intel.com/en-
There are two possible models and they should be able to generate the same binary.
However, my experiment w/ LULESH 2.0 does not support such a claim.
I compare the two generated executables with diff.
My question is: is the claim wrong or I should use other tool to compare executables generated by the following two models?
[Model 1: explicitly link w/ xild for ipo]
1. icpc -ipo *.cc to compile each .cc file into object file with Intel intermediate IR.
2. xild performs IPO with *.o (with Intel IR)
3. xild invoke gnu ld to link libraries and generate final executable.
[Model 2: implicitly link w/ icpc for ipo]
1. same as 1 in Model 1.
2. icpc -DUSE_MPI=0 lulesh.o lulesh-comm.o lulesh-viz.o lulesh-util.o lulesh-init.o (may or may not add -ipo flag)
//icpc will do ipo and then invoke ld to generate final executable.