- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well this is strange:
http://software.intel.com/sites/default/files/forum/356681/capture.png
So when compiling with -Qprof-gen, the program compiles and runs fine, when using -Qprof-use (or without PGO at all) the program doesn't compile. I tried using -FORCE in the linker, but to no avail.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Georg Zitzlsberger (Intel) wrote:Everything is there already, so the files aren't generated by the compiler. It's part of the libvpx package and all it does is get compiled (i.e no files generated). This is why I'm confused why Qprof-gen is the only way to be able to compile the package?Hello,
it doesn't seem to be directly related to the compiler at all. Is quantize_sse2.asm some generated assembly file? Or any of the included assembly files therein?
The one you provided indeed has undefined symbols (at least they're not marked as external as far as I can see). But it's just a small window to look through and without more data it's not possible to help here.You say that just enabling the /Qprof-gen option causes the problem. So, compare the assembly files with and without this option (quantize_sse2.asm and all other files that are included).
Best regards,
Georg Zitzlsberger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Georg Zitzlsberger (Intel) wrote:
Hello,
that's what I've expected: in one case all the symbols are defined, in the other, none.
Initially I got it kind of wrong: I assumed that /Qprof-gen caused the problem which is not true. What you wrote suggests that *nothing* works except using /Qprof-gen. Is that true?Please still provide me the full command line for building asm_enc_offsets.c for both, using /Qprof-gen and not using PGO at all. Optionally you could also provide it for /Qprof-use.
Thank you & best regards,
Georg Zitzlsberger
Yes, only Qprof-gen works. Sorry, I forgot to post the command line:
-O3 -QaxAVX -arch:SSE3 -Qparallel -fp:precise -Qprof-gen -Qprof-dirc:/iccpgo -w
The above is the working command line. Below are the ones I've tried but don't work:
-O3 -QaxAVX -arch:SSE3 -Qparallel -fp:precise -Qprof-use -Qprof-dirc:/iccpgo -w
-O3 -QaxAVX -arch:SSE3 -Qparallel -fp:precise -w
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Georg Zitzlsberger (Intel) wrote:
Hello,
I understand now, what's going on in your project build. The file asm_enc_offsets.c is compiled into asm_enc_offsets.obj. Some hand-made tool (host_obj_int_extract.exe) tries to extract symbol information from it. That obviously only works if the produced object file is a real/plain object file.
However, when you use PGO, the object files created contain lots of other information (similar to IPO) and the hand-made tool cannot handle this.Solution: Build asm_enc_offsets.c without PGO (neither /Qprof-gen, nor /Qprof-use). You won't need it anyways for it as far as I can see.
If you plan to use IPO, it's the same here, too. Don't apply IPO to asm_enc_offsets.c.
Btw.: Should also be the same for asm_com_offsets.c and all others host_obj_int_extract.exe is using.
Best regards,
Georg Zitzlsberger
What's strange is that it doesn't compile if Qprof isn't defined at all, the only time it compiles is when Qprof-gen has been defined. This is what confuses me, why does Qprof-gen work, but not using Qprof at all not work? Even an empty command line doesn't compile. I thought there might be something that Qprof-gen does to ignore the undefined symbols (sort of like -FORCE).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Georg Zitzlsberger (Intel) wrote:
Hello,
I cannot say without having any build log to reproduce the problem -- here: the case when PGO is not used at all.
With the information I have at hand, I was able to properly create the file asm_enc_offsets.asm. This worked for both non-PGO and PGO's first phase (/Qprof-gen). As described, and expected, it only failed for PGO's second phase (/Qprof-use).
It still might fail for the same reason for non-PGO if you're using IPO (as described above). You could also try to build with /Qipo- to be sure.If this does not help I'd expect a completely different problem. Please provide me at least the corresponding build log to figure it out.
What do you mean by "empty command line"?Best regards,
Georg Zitzlsberger
Here's the build log using just -O3 and -w. I'll try using -Qipo-
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Georg Zitzlsberger (Intel) wrote:
Hello,
just checked and it's IPO that's enabled. However, in a way that's not obvious right away. Microsoft Visual Studio* compilers know the option /GL which is global optimization (Microsofts way of doing IPO). If /GL is set with our compiler we enable IPO. However, there's a bug in the compiler driver that /GL- (note the minus) does not guarantee to turn off IPO. It erroneously enables it and also issues an incorrect warning message you didn't see because you turned off all warnings:
icl: command line warning #10006: ignoring unknown option '/G-'Solution: Remove /GL- option. This does not have any side-effects if you use the Intel compiler as IPO is disabled by default.
I'll let engineering know about the bug so it can be fixed. (edit: defect ticket DPD200317705)
Best regards,
Georg Zitzlsberger
Thanks for your help! I found it odd that even stating -Qipo- didn't help at all.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page