Итак, в настоящее время я исследую случайную проблему и обнаружил, что причина заключается в том, что во время цикла и накопления плавающих чисел в неупорядоченном контейнере перемещение разницы в порядке приводит к тому, что числовой результат отличается из-за плавающего округления, см. ниже игрушечный код Python для интуитивной демонстрации:
Код: Выделить всё
a = 0.016836150909
b = 0.018234567891
c = 0.015432109876
result1 = (a + b) + c
result2 = (a + c) + b
print(f"(a + b) + c = {result1}")
print(f"(a + c) + b = {result2}")
print(f"Equal? {result1 == result2}") # print False
Теперь мне интересно, есть ли способ для пользователя GCC в Linux поиграть с хеш-семенем, с помощью которого определяется порядок цикла undered_map? То есть я хочу иметь возможность воспроизводить числовые различия, вызванные несоответствием порядка, без изменений исходного кода.
N.B. Однажды я узнал, что GCC предлагает Tunables, которые позволяют разработчикам изменять поведение во время выполнения. Смогут ли здесь помочь какие-нибудь настройки?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... rdered-map