|
|
|
OK54 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.2.2009 Репутация: нет Всего: нет |
Добрый день!
Работаю с gfortran (MinGW x32) под Windows 7, скаченный на mingw.org. Компилирую dll фортран программы. Столкнулся с проблемой что под windows xp работает неправильно. Т.е. фортран программа представляет собой сложную математическую модель, на разных win 7 выдает нормальные одинаковые результаты, на различных windows xp выдает одинаковые ненормальные результаты, а именно значение одной из переменных отличается в 3 раза. До этого другую модель компилировал, так не было такой проблемы... Дело в том что у нас на работе лицензия на XP. Может надо какие-нибудь настройки сделать или адекватные дистрибутивы под XP посоветуете? или может какие-то используемые операторы в фортран программе несовместимы с XP. Или XP можно как-то аккуратно проапгрейдить, так чтобы заработало??? |
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Я посоветую отладить программу.
Внезапно. |
|||
|
||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 5 Всего: 49 |
Чудес не бывает. Подобные штуки обычно означают, что в программе есть некорректная работа с памятью (для области применения Фортрана это почти всегда обращение к несуществующему элементу массива), которая приводит к "несанкционированной" перезаписи каких-то данных этой же программы. Соответственно, попробуйте собрать ее с ключом компилятора -fcheck=all и посмотреть, что получится.
Именно. |
|||
|
||||
OK54 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.2.2009 Репутация: нет Всего: нет |
этих программ не одна, и фиг знает как этот быдло код работает. это вариант, но запарюсь.
Еще идеи? Есть сообщения типа warning, я их отключил, т.к. не понял. Может в них дело? Правда с предыдущей программой несмотря на это все ок было. Добавлено через 2 минуты и 13 секунд Ооо...Фантом, спасибо! Странно, только русский сериал про чернобыль смотрел, серия про Фантомов |
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Выкинуть этот ###код. Я, кстати, серьёзен. Тебе реально повезло, что тебе на относительно раннем этапе работы с программой попалась система, которая наглядно показывает уровень человека, который её писал. Соответственно, сейчас ты можэшь решыть -- выкинуть это барахло или отладить. Замечу, что работать с этим в таком виде в win8, где оно "вроде работает" -- я бы тожэ не стал. Рискованное развлечение. |
|||
|
||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 5 Всего: 49 |
У программ на Фортране зачастую есть еще одна особенность: их авторы нередко бывают весьма посредственными программистами, но при этом очень хорошими и даже уникальными специалистами в той области, для которой пишут программы. В результате "###код" зачастую очень трудно или просто невозможно заменить, на написание его с нуля могут уйти годы (если это вообще удастся). Так что решать проблему радикально я бы не советовал... |
|||
|
||||
OK54 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.2.2009 Репутация: нет Всего: нет |
да, там не сложно запутаться в операторах goto и куче громадных глобальных массивов. Видимо код создавали по блок схеме алгоритма, отсюда и goto. Переписывать некогда кучу программ.
С опцией -fcheck=all перестало работать, вернее там программа прекратила работу из-за выхода переменной за некоторые границы. |
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Значит, выкинуть его программу и оставить только то, в чём он силён -- его уравнения, и, возможно, разностные схемы. Разностная схема -- она только в первый раз страшная, к десятому их можно писать за полчаса и не приходя в сознание. |
|||
|
||||
Фантом |
|
||||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 5 Всего: 49 |
Поскольку часть сборок при этом работает правильно, это означает, что сам по себе выход проблемой не является, если только на месте "лишнего" элемента не размещается какая-то другая переменная. Поэтому отладка достаточно проста: найдите определение этого массива и увеличьте его размеры так, чтобы вылезания за границу не происходило. Добавлено через 1 минуту и 33 секунды Если бы в численном моделировании все можно было бы сначала записать в виде какого-то небольшого набора уравнений... |
||||
|
|||||
OK54 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.2.2009 Репутация: нет Всего: нет |
> Ну да, индекс массива вылезает за границу, как и предполагалось. Вы, кстати, должны были получить сообщение, какой именно, в каком массиве и в каком месте программы.
Не массив, а просто значение переменной по логике программы. Думаете дело в обращении к несуществующему элементу массива? Я сейчас сымитировал такую ситуацию, программа действительно ничего и не сообщает об ошибке при выключенных предупреждениях. При включенных предупреждениях кроме моей строчки нигде не сообщает о выходе за границы, если только это индекс где-то не динамически отсчитывается. Вот все типы предупреждений в проге: 1. Warning: Label 61 at (1) defined but not used 2. Warning: Unused variable 'jcn' declared at (1) 3. Ini26.for:90:0: warning: 'j100' may be used uninitialized in this function [-Wmaybe-uninitialized] 4. Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) 5. Warning: Deleted feature: ASSIGN statement at (1) 6. Warning: Deleted feature: Assigned GOTO statement at (1) 7. Warning: Deleted feature: PAUSE statement at (1) 8. Warning: Nonconforming tab character in column 1 of line 2 |
|||
|
||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 5 Всего: 49 |
Не может быть.
Это предупреждения компилятора, а нам нужна ошибка времени выполнения. Индекс, естественно, вычисляется динамически, иначе эту ошибку давно бы поймали. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Fortran | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |