4.1.3.2 : Impact de la parallélisation sur la précision

Toutes les approches jusqu'à présent s'appliquent déjà à des programmes séquentiels. La validation de la précision de calculs avec des programmes parallélisés passe au début par une démarche analogue : la comparaison du résultat en séquentiel et en parallèle peut déjà être surprenante. En effet, la première différence entre la version séquentielle et la version parallèle d'un calcul vient de l'ordre des séquences d'opérations : par exemple, les réductions d'un Monte-Carlo vont passer d'une longue somme des résultats de chaque itération dans la version séquentielle à une somme des sommes partielles issues de la sous-séquence de chaque thread. Mathématiquement, l'associativité et la commutativité de l'addition des nombres réels nous garantissent l'identité des résultats. Mais les nombres à virgule flottante ne vérifient pas ces deux propriétés élémentaires avec la même systématique. Dans ce cas, on peut améliorer cette approche en utilisant des accumulateurs de plus haute précision, ou des algorithmes de sommation comme celui de W. Kahan [204]Pracniques: Further Remarks on Reducing Truncation Errors, 1965, Kahan, William, mais cela complique l'expression du code et devient difficilement applicable à tous les calculs parallélisés.