>
>
Feeling the new Intel Parallel Studio X…

Andrey Karpov
Articles: 674

Feeling the new Intel Parallel Studio XE 2011 beta

So I've gotten to try the C++ compiler included into Intel Parallel Studio XE 2011 beta at last. Here is a brief report of my experiments.

You may download and try the new version of Parallel Studio here: Intel Parallel Studio XE 2011 for Windows* Beta Registration. The license for the beta-version is provided for several months, so you've got enough time to experiment with the tool. The size of the distribution package (for IA-32/Intel 64 - 1 GB) is a bit surprising but I think it won't be a problem to download it at present.

I and my colleagues in Intel Parallel Studio were interested in one single question all in all - the build of PVS-Studio. We wanted to see if we would get a performance gain and how great it would be.

I am not interested in abstract small demo programs where some mathematical matter is quickly calculated. This is too far from reality. But here we've got our own absolutely real project whose job is to work with graphs (a parse tree).

The PVS-Studio analyzer has configurations for builds under Win32 and Win64. Of course we were interested first of all in the 64-bit version but unfortunately something went wrong with it. We use Boost which we did not manage to build for Win64. Perhaps we did something wrong and have clumsy hands. But it seems that the reason lay in the compiler's defect that resulted in printing the following message on many files:

c:\boost_1_44_0\libs\iostreams\src\file_descriptor.cpp(294) 
(col. 1): internal error: 0_1374
compilation aborted for libs\iostreams\src\file_descriptor.cpp 
(code 4)

We did not encounter any issues with other configurations of the Boost library:

As you may see, the Debug version is successfully built both in the 32-bit and 64-bit modes. Unfortunately, we are not interested in Debug-versions, so we had to confine ourselves to comparing Release Win32 and Release Win64.

Another small accompanying unpleasant thing was that Intel C++ still cannot support "nullptr" that has appeared in C++0x. So we had to insert the following code into stdafx.h:

#ifdef __INTEL_COMPILER
  #define nullptr 0
#endif

And now the most interesting thing - measuring the speed of internal tests. Simple recompilation of the project does not give anything and even causes slow-down of its work:

But using the switches /Qipo "Multifile interprocedural optimization" and /GA "Optimize for Windows Applications" gives a significant performance gain:

However, the option /Qparallel (Tells the auto-parallelizer to generate multithreaded code for loops that can be safely executed in parallel) did not influence the work in any appreciable way. Well, perhaps we "simply cannot cook them" and, shame on us, we were not interested in continuing the experiment. It was not interesting for us because more detailed experiments with optimization capabilities are relevant for us only when dealing with a 64-bit version. We hope that the release-version of Intel Parallel Studio will be stabler and we will be able to continue then. However, it is already evident that we can get a significant benefit from changing the compiler. So I recommend you to try it.