For the SDK project nbody, the validation (“nbody -compare”) of the GPU method with the CPU reference implementation is kind of misleading. It mostly seems to compare initial conditions for the two computations and does not validate the compute-intensive N-body computations:
If I remove the following call at around line 186 in bodysystemcpu.cpp:
_computeNBodyGravitation();
the comparison still passes!
_computeNBodyGravitation() is where all the work is done doing the N-body comparisons. If that doesn’t execute then it seems that a reasonably rigorous validation should detect such a gross change in the program. I suggest that the compare be restructured in such a way that such a change would be detected.
(Note: This is for a single-precision implementation - I don’t know if this may change with DP.)