Обеспечение соответствия стандарту IEEE 754 и числовой точности в проектах C++ HPCC++

Программы на C++. Форум разработчиков
Ответить
Гость
 Обеспечение соответствия стандарту IEEE 754 и числовой точности в проектах C++ HPC

Сообщение Гость »


В настоящее время я участвую в крупномасштабном проекте C++ HPC, ориентированном на численное моделирование, в частности на методе конечных элементов (FEM). Наш проект охватывает различные платформы на базе Linux и включает в себя компиляцию с использованием различных архитектур и компиляторов, включая GCC, Clang и ICC.
В стремлении к оптимальной производительности без ущерба для числовой точности и стабильности мы столкнулись с проблемой с некоторыми флагами оптимизации, такими как -O3, которые неявно включают такие флаги, как -ffast-math, потенциально жертвуя точностью ради незначительного прироста скорости. В частности, такие флаги, как -funsafe-math-optimizations, -ffinite-math-only и -fno-rounding-math, активируются вместе с -O3, что вызывает обеспокоенность.
Чтобы решить эту проблему, мы изучаем реализацию тестов, которые могут предупреждать нас об отклонениях от соответствия стандартам чисел с плавающей запятой во время компиляции. В идеале эти тесты должны работать статически и выдавать предупреждения о проблемных конфигурациях оптимизации до начала выполнения.
Хотя мы встречали ссылки, обсуждающие соответствие стандарту IEEE 754 и стандартную обработку крайних случаев (например, сигнализацию NaNs, FTZ/DAZ), мы не нашли руководства по реализации таких тестов.
Мой вопрос: Существует ли стандартный подход или существующий набор инструментов для проведения тестов для обеспечения соблюдения требований стандарту IEEE 754 и соответствующей обработке вычислений с плавающей запятой в проектах C++? Хотя мы знаем о таких методах, как проверка определенных макросов (

Код: Выделить всё

__FAST_MATH__
, __FINITE_MATH_ONLY__) or querying std::numeric_limits::is_iec559, we're seeking comprehensive solutions that cover all aspects of compliance and precision.
Any insights or recommendations would be greatly appreciated. Thank you!
These are the references I have consulted:

Источник: https://stackoverflow.com/questions/781 ... c-projects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»