1

Я работаю в инжиниринговой компании, которая в значительной степени полагается на точность вычисленных математических результатов, полученных с помощью программного обеспечения в Windows 7 (MATLAB, ANSYS, внутренне написанные коды Фортрана). Недавно я был назначен в группу, которая отвечает за то, чтобы обновления для Windows не оказывали негативного влияния на программное обеспечение в Windows. Мне сказали, что идея этих проверок заключалась в том, что обновление операционной системы может потенциально изменить арифметические результаты программного обеспечения, которое мы используем. Возможно, в прошлом были проблемы с программным обеспечением на Unix/Linux, на которое влияли обновления ядра.

Первая часть моего вопроса состоит в том, насколько вероятно (или даже возможно ли), что обновление до Windows 7 с помощью исправлений, пакетов обновления, более новых версий .NET Framework и т.д. Может изменить результаты математических вычислений, выполненных программным обеспечением. ? Могут ли какие-либо изменения в расчетных результатах быть больше, чем просто типичные ошибки округления? В идеале набор тестовых сценариев должен выполняться каждым программным обеспечением, но на самом деле это не время или экономия для каждого отдельного патча Windows.

Вторая часть, есть ли какие-либо предложения о том, как легко проверить, вызвало ли обновление Windows какие-либо изменения, которые могут повлиять на результаты нашего программного обеспечения? Как уже упоминалось, запуск полного набора тестов на каждом программном обеспечении не очень выполним, и я думаю, что наш текущий процесс может быть значительно улучшен.

Мне также было бы интересно узнать, как другие инженерные компании, особенно в таких регулируемых отраслях, как атомная и космическая, решают эту проблему, обеспечивая, что программное обеспечение Windows дает ожидаемые результаты для инженерных расчетов. Неужели они также беспокоятся о том, что каждое обновление для Windows будет давать им разные расчетные значения? Я действительно не уверен, где следует провести черту между ответственностью за проверку наших расчетов и чрезмерной параноидальностью.

1 ответ1

0

.NET JIT можно обновить, чтобы более агрессивно оптимизировать арифметику с плавающей точкой.

Если обновление ОС разрешает поддержку более нового набора команд, такого как AVX2, это также может изменить способ соединения IL.

Я бы не стал считать JIT-обновления чрезвычайно редкими. Вероятно, они не попадут в обновление для системы безопасности, но я не удивлюсь, если оно перейдет с .NET 4.5.0 на 4.5.1.

Фактически, новая версия RyuJIT будет включена по умолчанию в следующей версии .NET.

Помимо этого целого числа IEEE арифметические инструкции выполняются без участия ОС. Их результат указан точно (включая операции с плавающей запятой).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .