- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Ed, your name sounds familar - seems we may have worked together many years ago. MKL may run a different code path based on the processor type, array alignment or # of threads.Perhaps that is what you're running into, see this article: http://software.intel.com/en-us/articles/getting-reproducible-results-with-intel-mkl/ If these tips don't address your issues, we would certainly be interested in a test case.
Thanks,
Shane Story
- 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
I've been told the OpenMP run-time library allocates with the maximum available alignments, but don't know the details.
- 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
I'm experiencing a very similar issue, can you provide more details about how you fixed this problem?
Thank you!
Regards,
Yanick Ct
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am having the same issue (or at least I think it is) with ifort (IFORT) 12.1.0 20110811 in an OpenMP program, not calling any of the MKL functions.
Could you please share the solution that you found? Is it just about proper alignment?
Thank you!
Best regards
Andreas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Andreas Klaedtke wrote:
I am having the same issue (or at least I think it is) with ifort (IFORT) 12.1.0 20110811 in an OpenMP program, not calling any of the MKL functions.
Could you please share the solution that you found? Is it just about proper alignment?
Thank you!
Best regards
Andreas
This doesn't look to me much like the subject of the earlier part of the thread. The only way I know of where ifort has an option to call or not call MKL is the -opt-matmul option, where Fortran MATMUL is converted automatically to call MKL. For those versions of ifort which implement this, it is set implicitly by -O3 and may be set outside -O3 by -opt-matmul. If you have MATMUL in a parallel region, even if MKL is called, it will not use additional threads unless OMP_NESTED is set.
I don't see how alignment issues could cause an MKL function call to be skipped.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The reason why I think it is related is because AVX seems to be the culprit and the symptoms are similar:
Threaded code that if compiled with -O3 -axAVX,SSE4.2 produces different results if rerun.
If compiled with -O3 -axSSE4,2 it produces identical results.
But I do not think that the MKL functions are used anywhere or are related to the issue I am seeing (I only change the compiler flags of one Fortran source file), the rest remains the same. And this one source file has no links to the MKL.
It would be great though to see how this threads issue was resolved in the end.
Should I open another thread?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It would be easy to check (ldd) whether Intel MKL is used due to the an implicit option as mentioned by Tim. Anyhow, let's assume it's not about Intel MKL -- you're then back to memory alignment, different code paths, and multi-versioned code. The latter picks a version in the generated code depending on a heuristic (e.g., small trip count asks for scalar code, etc.).
Anyhow, in case of the Intel Fortran Compiler V13 you can supply "-align array32byte" on the compiler's command line. This aligns the start of arrays accordingly when possible. Beyond this, you may have a look at http://software.intel.com/en-us/articles/consistency-of-floating-point-results-using-the-intel-compiler, and in particular have a look into the PDF/paper that's attached to this article (IMF precision/consistency, etc.).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It was an alignment issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much for the reply!
Best regards
Andreas

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