"Runtime Checks (all)" Problems in Ifort 2013

"Runtime Checks (all)" Problems in Ifort 2013

I'm curious what happened with the /check:all option in Ifort 2013 that would adversely impact my application run-times. I solved all of my previous numerical issues with the /fp:source flag. As an aside, for only a 20% performance hit max, I get digit for digit identical answers on everything from Core 2 x86 to AVX x64 CPUs with /fp:source - I'm not sure why you all don't make this the default. But, one of my builds is a "/check:all" build, which mainly comes in useful to detect bad user input (resulting in array bounds errors in some arbitrary place in the code). So, here are some of the typical run speeds for my app:

In order to turn off this warning, I disabled all optimization ("O0" instead of "O2") for the /check:all build, and the run time went up to 344 minutes.

So, what happened to /check:all in Ifort 2013? Why is it running so much more slowly? Is warning 10182 a lie, considering that me manually disabling optimization gives me an even worse run time than the compiler disabling the optimization?

There's a new /check:stack option which is causing the difference you see. This inserts checks for stack corruption around calls, and is also what triggers the warning you mention. Try turning off just that option and see what you get.