Как стать автором
Обновить

Комментарии 17

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

Вживую столкнулся со случаем, когда баг в сортировке (программист не учел, что qsort может менять местами порядок равных элементов) испортил исследования одного ученого. Ученый наблюдал в данных своих экспериментов интересный эффект и даже готовился опубликовать о нем научную статью. Но когда был найден и исправлен этот баг — то эффект исчез. Прощай, нобелевка!

А заблуждение насчет эффекта существовало несколько месяцев. Эффект демонстрировался коллегам и студентам как минимум на нескольких семинарах и плакатах.
Спасибо, почитал. К сожалению, одним лишь статическим анализом научное программирование «вылечить» невозможно. Мне довелось налаживать много реализаций численных методов, кода для обработки сигналов. При внешней корректности кода, возможностей для ошибок — неисчислимое число. Может быть неправильно вычислен какой-нибудь индекс или значение по формуле — и все это при отсутствии типичных ошибок, выявляемых статическим анализатором, как то выхода за границы массива, неопределенного поведения C++ и т.д. Я применял изощренные методы для отладки этого кода, и почти каждый раз новый изощренный метод помогал обнаружить новые ошибки.

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

Еще один метод — получить тот же результат другим способом или решить обратную задачу. Так как вероятность получить ошибку в разных алгоритмах, дающую одни и те же последствия, мала — то расхождение ответов свидетельствует об ошибке либо в тестируемом коде, либо в тестирующем.
Я не говорил, что статический анализ панацея. Но я хотел привлечь внимание к этой проблематике. Спасибо за комментарий.
У Меня в прошлом были проблемы с компиляторами rvct z,y build xxxx. обновили на патч поновее отпала математика с
плавающей запятой, перестал правильно sin ,cos и так далее считать на граничных значениях…

Статический анализатор порой не может поймать данных ошибок…
А что, скажите мне пожалуйста, может заставить быть привязанным не к gcc, не к clang, не к интеловскому или майкрософтовскому компиляторам, а вот к этой вот паранормальной (с такими-то багами!) штуковине?
Кстати, тоже интересно. Если честно, то я впервые узнал об этом компиляторе из поста.
Одно время (несколько лет назад) PGI компилятор для фортрана был довольно популярным (особенно для AMD процессоров). Ну и наверное люди продолжают использовать знакомые программы дальше и для других языков.
Сам-то я просто получил баг репорт, вот и пришлось разбираться.
С этим компилятором идет своя стандартная библиотека или они используют стороннюю?
Если я правильно понял, с этим компилятором (pgcpp) идет своя STL, а второй компилятор от PGI (pgc++) использует системную STL.
Один из немногих компиляторов с поддержкой. OpenACC.
На правах рекламы: GCC 5.0 поддерживает OpenACC. И в отличие от PGI, GCC также поддерживает генерацию кода для Intel MIC, а не только CUDA.
На днях я получил баг репорт, что мой код неправильно работает, если его скомпилировать при помощи pgcpp.

Судя по всему не сам автор, а один из его клиентов (пользователей его библиотеки?) по каким-то причинам использует творение PGI.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории