Числовые проблемы устойчивости чисел для параллельного сокращения - PullRequest
0 голосов
/ 26 сентября 2019

Я просматривал некоторые онлайн-ресурсы, связанные с суммированием чисел с плавающей точкой и вопросами точности.Например: https://devtalk.nvidia.com/default/topic/1044661/cuda-programming-and-performance/how-to-improve-float-array-summation-precision-and-stability-/

https://hal.archives -ouvertes.fr / hal-00949355v4 / document

Большинство из них рекомендует использовать некоторую форму ручного вмешательства при работе с плавающимиСуммирование точек для любого современного оборудования.Например, (1) использовать алгоритм Кахана для суммирования с плавающей запятой, или (2) сортировать и суммировать числа более близких величин и т. Д. Обрабатываются ли такие нюансы ядрами редукции MPI_AllReduce или OpenMP?

1 Ответ

1 голос
/ 27 сентября 2019

Говоря только об OpenMP: стандарт ничего не говорит о порядке, в котором применяются операции сокращения, и, действительно, он может даже различаться при каждом выполнении кода.(Некоторые среды выполнения OpenMP, такие как LLVM / Intel, реализуют детерминированное сокращение *, но гарантируют только детерминизм между запусками с одинаковым количеством потоков).

Если вы хотите отсортировать или выполнить сокращение другими способами, вам нужно будет реализовать это самостоятельно ...

...