No_Romance
|
only sky...
|
|
|
|
Рег.: 05.11.2005
|
Сообщений: 2755
|
Из: Nowhere
|
Рейтинг: 6191
|
|
Intel Fortran: Release vs Debug mode - разный результат
22.04.2012 13:55
|
|
|
При компиляции в режиме Debug - программа работает правильно, но медленно. В режиме Release возникают ошибки - при расчетах в числах возникают бесконечности. Программа обрабатывает в цикле неструктурированные данные и содержит много вложенных if. Как отловить баг?
|
"Reality is merely an illusion, albeit a very persistent one." (Albert Einstein) |
|
yegor
|
old hand
|
|
|
|
Рег.: 17.05.2006
|
Сообщений: 876
|
|
Рейтинг: 815
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: No_Romance]
22.04.2012 14:04
|
|
|
Я бы под valgrind-ом для начала запустил.
|
Пользователю все равно, в какой системе не разбираться. |
|
tst
|
old hand
|
|
|
|
Рег.: 30.09.2008
|
Сообщений: 895
|
|
Рейтинг: 1531
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: No_Romance]
22.04.2012 14:09
|
|
|
По просьбе КО хотелось бы спросить - а опции компилятора (особенно, насчет оптимизации) в этих двух режимах сопоставимы ?
|
|
monoid
|
|
|
|
|
Рег.: 14.02.2004
|
Сообщений: 1689
|
Из: ГЗ::Б::12
|
Рейтинг: 1331
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: No_Romance]
22.04.2012 14:26
|
|
|
Интеловский компилятор в Release-конфигурации может включать оптимизации вычислений с плавающей точкой, которые могут приводить к изменениям в результатах вычислений. Можно начать с того, что передать ему -fp-model strict. Подробнее о флагах можно почитать, если запустить компилятор с опцией -help (раздел Floating Point).
Если это не поможет, можно попробовать включать разные уровни оптимизации, и выяснить, на каком возникает косяк.
Ну и не нужно забывать, что это может быть не только результат слишком агрессивных оптимизацией или баг в компиляторе, но баг в вашей программе, который не проявляется при консервативной компиляции в debug-режиме.
|
# |
|
No_Romance
|
only sky...
|
|
|
|
Рег.: 05.11.2005
|
Сообщений: 2755
|
Из: Nowhere
|
Рейтинг: 6191
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: monoid]
22.04.2012 14:32
|
|
|
Quote:
Можно начать с того, что передать ему -fp-model strict
Эта опция и в дебаге и в релизе по умолчанию fast. Т.к. в дебаге все работает, то, наверное, не поможет.
|
"Reality is merely an illusion, albeit a very persistent one." (Albert Einstein) |
|
monoid
|
|
|
|
|
Рег.: 14.02.2004
|
Сообщений: 1689
|
Из: ГЗ::Б::12
|
Рейтинг: 1331
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: No_Romance]
22.04.2012 14:36
|
|
|
В дебаге оптимизации не включены, так что состояние этой опции в дебаге влияет слабее, чем в релизе.
|
# |
|
No_Romance
|
only sky...
|
|
|
|
Рег.: 05.11.2005
|
Сообщений: 2755
|
Из: Nowhere
|
Рейтинг: 6191
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: monoid]
22.04.2012 15:48
|
|
|
Никакие изменения опций компилятора не помогают, кроме как вместо Optimization: maximize speed сделать Optimization: disabled. Но тогда скорость такая же как при дебаге.
|
"Reality is merely an illusion, albeit a very persistent one." (Albert Einstein) |
|
vond
|
|
|
|
|
Рег.: 08.04.2004
|
Сообщений: 6076
|
Из: Москва
|
Рейтинг: 1202
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: No_Romance]
22.04.2012 16:05
|
|
|
Рискну предположить что какие-то из переменных не инициализированы в коде. Отсюда разница: в Debug они все инициализируются в 0, а в Release - нет. Или в фортране нет такого? Лет десять не видел фортрана 
Присоединяюсь к предложению запустить под valgrind.
|
|
No_Romance
|
only sky...
|
|
|
|
Рег.: 05.11.2005
|
Сообщений: 2755
|
Из: Nowhere
|
Рейтинг: 6191
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: vond]
22.04.2012 16:10
|
|
|
Quote:
запустить под valgrind
у меня windows...
|
"Reality is merely an illusion, albeit a very persistent one." (Albert Einstein) |
|
vond
|
|
|
|
|
Рег.: 08.04.2004
|
Сообщений: 6076
|
Из: Москва
|
Рейтинг: 1202
|
|
Re: Intel Fortran: Release vs Debug mode - разный результат
[re: No_Romance]
22.04.2012 16:16
|
|
|
И чего? Если надо, то Linux найдешь (виртуалку готовую скачать хотя бы). IFC под Linux тот же самый.
Я в подобной ситуации заморачивался портированием/отделением windows-специфичного кода, лишь бы иметь возможность запускаться под valgrind на linux.
|
|