Sunday, March 20, 2011

Resolving Single and Double Precision Discrepancy between pre-Nehalem Chipsets and Nehalem Chipsets

One of our researchers was running a job running on an SMP with older Intel Processors such as Intel(R) Xeon(R) CPU X7460 @2.66GHz (code-named "Dunnington") and we notice the accuracy between single and double precision was in the order of 5 decimal different.

For example:
0.623291xxxxxxx (Single Precision Code)
0.623290xxxxxxx (Double Precision Code)

One important thing to note is that the Intel Compiler is 11.x

But if we run the same code on the newer Intel Nehalem Architecture, you will see that the discrepancy between the single and double precision quite large. We notice the discrepancy of the order of 1 decimal point.

For example:
0.523667xxxxx (Single Precision Code)
0.4353836xxxxx (Double Precision Code)

Similarly, the Compiler used is the Intel Compiler 11.x

If we compare the results between the Dunnington Chipsets and the Nehalem Architecture, the discrepancy is really quite unacceptable.

Well, the solution is actually quite easy, you should update the Intel Compiler to the latest Intel® Parallel Studio XE 2011 for Linux* and your discrepancy should be eliminated and your results should be similar as what given to discrepancy. The Intel® Parallel Studio XE 2011 for Linux* has the latest libraries for the Nehalem Architecture.

For more information on where to download, do look at the Free Non-Commercial Intel Compiler Download

No comments: