HerbGrind: инструмент для поиска ошибок с плавающей запятой


Числовой формат с плавающей запятой используется для большинства вычислений, и мы склонны доверять ему, но это доверие неуместно. Вычисления с плавающей запятой могут быть настолько ошибочными, что напоминают шум. Теперь есть способ автоматически определять, когда что-то идет не так.

Исследователи Алекс Санчес-Стерн, Павел Панчеха, Сорин Лернер и Захари Татлок из UCSD и Вашингтонского университета разработали новый инструмент для поиска проблем с вычислениями с плавающей запятой.

Если вы считаете, что ошибка с плавающей запятой незначительна, примите во внимание следующее:

Приложения с большими плавающими точками играют центральную роль в науке, технике и финансах, позволяя инженерам приближенно вычислять вещественные числа. Обеспечение того, чтобы эти приложения давали точные результаты (близкие к идеальному действительному числу), было сложной задачей на протяжении десятилетий. Неточность из-за ошибок округления привела к рыночным искажениям, отозванным научным статьям и неверным результатам выборов.

Предлагаемое решение — Herbgrind:

динамический двоичный анализ, который определяет возможные основные причины численных ошибок в приложениях с большими плавающими точками. Herbgrind использует различные методы для решения проблем, связанных с поиском первопричин в больших программах.

Во-первых, чтобы выявить скрытую ошибку с плавающей точкой, Herbgrind следует прошлым работам, инструментируя программу для вычисления высокоточных операций с плавающей точкой параллельно с обычными операциями IEEE-754, а затем сравнивая результаты с высокой и обычной точностью для выявления ошибок. .

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

В-третьих, чтобы описать возможную основную причину, Herbgrind отслеживает ошибочные вычисления и преобразует их в упрощенные выражения, улучшение которых уменьшит ошибку вывода.

В документе есть несколько примеров проблем с плавающей запятой, которые обнаруживаются Herbgrind и затем легко исправляются. например, график конкретной сложной функции до и после исправления проблемы с плавающей запятой:

Правильный сюжет справа.

Хорошая новость в том, что Herbgrind имеет открытый исходный код, и вы можете получить его на GitHub:

Herbgrind — это бесплатное программное обеспечение (бесплатное, как в свободе, но вам также не нужно ничего платить), оно общедоступно на github. Работа над ним еще не завершена, поэтому он будет работать не на всех компьютерах или приложениях. Если вы хотите внести свой вклад, свяжитесь с нами или отправьте запрос на перенос!

В настоящее время Herbgrind в основном поддерживает 64-разрядную версию Linux, но 32-разрядная версия также может работать, и в настоящее время ведется некоторая работа по поддержке OSX.


Добавить комментарий