From Sept 2006:
I have some legacy software in need of performance improvement. The software is single thread, single process. How effective are OpenMP and Intel C++ on the pathway to improvement?
I have the Intel C++ compiler (
icc) available, which supports OpenMP along with some other auto parallelize features, and a four processor Xeon box to experiment on.
Now, I’m experianced enough not to expect a silver bullet fired out of my C++ compiler will kill the performance monster. On the other hand, there is some interest in finding out how hard it will be to refactor this software into a form that benefits from an SMP platform. If nothing else, shaking out the makefile to support an alternative compiler to the GCC 3.4.4 will make for a stronger build process. And, in looking over some discussion threads regarding the Intel compiler and this particular feature I see that
icc will report on the loops in the code that are deemed safe for parallelization and will tell me something about why the other loops are not safe for the speed treatment.
So far I am still getting GCC to compile the code base cleanly.
The work was fun and seemed to be helpful in digging into the code, but eventually the client decided other issues, like clearly stating the problem were more relevant to success than doubling the speed of the code. And I could not agree more.