| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > Fortran90 - одинаковая работа под nix и win

Fortran90 - одинаковая работа под nix и win

Ответ
Поиск в этой теме
Непрочитано 13.03.2014, 06:05 #1
Fortran90 - одинаковая работа под nix и win
ETCartman
 
Регистрация: 09.12.2008
Сообщений: 4,649

Столкнулся с проблемой (вероятно известной), что программа скомпилированная в Mingw и в gcc под линуксом проходит верификационные тесты не вполне одинаково.
Может быть разница в инструкциях, может еще где. Программы расчетного плана, сами расчеты очень сложные, как отловить что именно не так - не знаю. Может кто то что то общее посоветует. Cygwin может быть?
Поскольку фортран по сути дела является самой древней расчетной программой сам по себе - с огромной коллекцией кодов на все случаи жизни, постольку вопрос адресую именно в этот раздел.
К слову и ранее сталкивался многие программы разрабатываемые и успешно используемые на Linux не проходят 100% тесты под виндой (хотя большинство).
Просмотров: 7011
 
Непрочитано 13.03.2014, 06:42
#2
ННВ


 
Регистрация: 21.05.2010
Сообщений: 148


Может быть разница в типах данных. Попробуйте везде заменить тип REAL на REAL(8). Или, по-старому, на DOUBLE PRECISION. Может, разные компиляторы по-разному "жуют" их.
Я где-то уже видел подобную проблему. Поищу ту тему на форуме и пришлю Вам.
ННВ вне форума  
 
Автор темы   Непрочитано 13.03.2014, 09:24
#3
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


да, спасибо если что.
там есть и real и real*8 (в сольвере кстати). И кстати ошибка в очень тонких вещах, типа потери устойчивости потока (это cfd код), даже не в цифровых значениях а в сдвижке по времени.
Вложения
Тип файла: zip dolfyn-cfd_0.601.zip (1.07 Мб, 53 просмотров)
ETCartman вне форума  
 
Непрочитано 13.03.2014, 13:13
#4
ННВ


 
Регистрация: 21.05.2010
Сообщений: 148


http://forum.ru-board.com/topic.cgi?forum=33&topic=7619


Цитата:
Сообщение от ETCartman Посмотреть сообщение
И кстати ошибка в очень тонких вещах
Боюсь, что тут не помогу. Надо разбираться в самом расчёте.
ННВ вне форума  
 
Автор темы   Непрочитано 13.03.2014, 19:16
#5
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


разбираться лично мне сложно, поскольку я ни особенностей данного алгоритма ни сам фортран толком не знаю. сама проблема возможно даже надумана - никто серьезных научных расчетов в среде виндоус в мире не делает, разработка в основном для юникс систем.
вероятно у автора была такая же проблема потому что он пытался компилять под разные компиляторы в виндоус. и выложенный им exe как раз дает правильные результаты
Я хоть и не исключаю но все таки не уверен что дело там в доубл пресижн, скорее открытый фортран компилятор под виндой не прав.
Хотя в моем случае результаты различаются не так сильно как по ссылке от вас - тут численные значения максимальные одинаковы а разница по времени и в частоте срыва вихрей (определяемой числом струхаля)
Конечно в вычислительном отношении такого рода задачи чувствительны вообще к массе парметров (в том числе к типу и густоте сетки). Так что тут мелкая деталь могла сыграть свою роль.
как минус еще - разработка кода заброшена, я смог скачать только с вебархива кое что. http://web.archive.org/web/201305191.../index_en.html
А сама программа замечательная по лаконичности и возможностям практическим.
Миниатюры
Нажмите на изображение для увеличения
Название: срыв вихрей.PNG
Просмотров: 132
Размер:	94.3 Кб
ID:	124284  

Последний раз редактировалось ETCartman, 13.03.2014 в 20:15.
ETCartman вне форума  
 
Автор темы   Непрочитано 14.03.2014, 20:39
#6
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


PS немного прояснил ситуацию у автора. Он профессиональный пользователь фортран в отличие от меня, говорит что разница возможна из-за настроек оптимизации компилятора в машинный код (для виндоус), а в принципе все должно быть окей и ничего в самом коде менять специально не надо.
сам он профессиональный CFDист в аэрокосмической индустрии и соответственно ничем помочь по части виндоус не может т.к. не запускал его много лет и вся работа и быт у него в опенсьюзи или убунту.
ETCartman вне форума  
 
Непрочитано 14.03.2014, 21:36
#7
ННВ


 
Регистрация: 21.05.2010
Сообщений: 148


Спасибо за информацию. Я в фортране "чайник" и ничего сложнее послойного суммирования не написал. Да и то с ошибками(((.
Вот ещё ресурс есть, где можно посмотреть кое-что по фортрану. Если интересно.

https://modelingguru.nasa.gov/index.jspa
ННВ вне форума  
 
Непрочитано 15.03.2014, 00:57
#8
ibragimr


 
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163


Цитата:
Сообщение от ETCartman Посмотреть сообщение
никто серьезных научных расчетов в среде виндоус в мире не делает
Прошу прощения, что влезаю в разговор. Уважаемый, ETCartman, просто интересно,в двух словах в чем причина?

Интересуюсь небезосновательно: изучаю Fortran и работаю с Intel'овским компилятором, но под Windows. С UNIX системами пока знаком только теоретически На освоение новой ОС нужно затратить n-ое количество времени и поэтому хочу понять так ли велики преимущества разработки под UNIX, что стоит пожертвовать этим временем?

Сразу оговорюсь, как простого пользователя винда меня вполне (хотя и не во всех аспектах) устраивает и лезть в Linux, просто чтобы быть "круче" не хочется сейчас. И конечно на серьезные научные расчеты я не претендую: все в рамках аспирантской работы.
__________________
С уважением, Ibragim:drinks:
ibragimr вне форума  
 
Автор темы   Непрочитано 15.03.2014, 01:25
#9
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


Преимущества фортрана описаны хорошо - это довольно узкая ниша численных расчетов (тот же ANSYS написан на фортране частично и имеет фортраноподобный встроенный язык APDL)
большое количество уже написанных открытых кодов на все случаи жизни, сам язык очень простой именно для своих целей - то есть позволяет сосредоточиться на конкретной задаче а не на тонкостях программирования. Хотя старый фортран имел по сравнению с современными версиями массу сложностей типа выделения памяти и т.д. Но тогда все было таким.
Причина по которой UNIX системы используют в научных и инженерных расчетах - в основном традиция и возможности параллелизации, также ряд других преимуществ, включая отчасти и стоимость которая чувствительна для большого парка компьютеров. То есть это несколько иные причины по которым линукс используют в домашних компьютерах (безопасный от вирусов веб серфинг и удобства типа скорости).
Под линукс конечно не все программы работают, строители его обычно не используют в работе. Но под серьезными расчетами и не подразумеваются инженерные расчеты типа в скад или лира, речь о моделировании чего то а не об автоматизации инженерного проектирования.
самый простой путь для инженера - скачать iso файл с www.caelinux.com и установить его на пристяжной флеш диск с помощью http://unetbootin.sourceforge.net/. Поскольку сейчас компания майкрософт создает всякого рода сложности для совместной установки систем (в попытках сохранить монополию) то наверно использование стороннего пристяжного диска самый простой вариант. к тому же для новичка проще не надо разбивать существующий чистый диск на необходимые разделы (только в FAT32 предварительно отформатировать).
Коли вы работаете с интелкомпилятором - не могли бы вы компильнуть исходники которые я выложил выше?
Там в src есть батник - надо только пути прописать в заголовке

Последний раз редактировалось ETCartman, 15.03.2014 в 03:04.
ETCartman вне форума  
 
Непрочитано 15.03.2014, 08:15
#10
ННВ


 
Регистрация: 21.05.2010
Сообщений: 148


Цитата:
Сообщение от ETCartman Посмотреть сообщение
Там в src есть батник - надо только пути прописать в заголовке
Надо изменить Makefile - прописать нужные компиляторы и сборщики. Вообще, Makefile - это правило, по которому происходит компиляция и линковка.
ННВ вне форума  
 
Непрочитано 15.03.2014, 13:38
#11
ibragimr


 
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163


ETCartman, спасибо за развернутый ответ.

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

Итоги. Батник и мэйкфайл написаны для компилятора g95. Для винды и интел-го фортрана их надо переписывать, я к сожалению пока этим не владею, потому что работаю через IDE (мои проекты максимум из 5 файлов состоят на данный момент).

Попробовал собрать через VS, но и тут не вышло. Где-то на 5 файлов он объектники не создал. Все ошибки указывают на процедуру openfile в файле preprocessor. Например, не совпадает количество actual и dummy аргументов в вызове процедуры openfile; где-то пишет, что не совпадает тип аргументов.

Вот определение процедуры openfile:

subroutine openfile(iunit,casename,extension,reqform,status,idebug) ! Тут 6 аргументов, указаний, что какой-либо из них OPTIONAL я не увидел

Вот пример вызова этой процедуры, где компилятор ругается:

call openfile(IOdbg,casename,'.dbg','FORMATTED','APPEND','UNKNOWN',debug) ! Тут указано 7 аргументов

Вроде ошибка на лицо, но мне кажется, что я просто чего-то не знаю.

Есть еще две ошибки в файле smagorinsky.f90 и tools.f90:

"Ошибка 44 error #6404: This name does not have a type, and must have an explicit type. [FL2] D:\Ibragim\ETCartman\smagorinsky.f90 39 " - определение переменной FL2 я действительно не нашел, а инструкция Implicit None указана

Ошибка 33 error #8284: If the actual argument is scalar, the dummy argument shall be scalar unless the actual argument is of type character or is an element of an array that is not assumed shape, pointer, or polymorphic. [CELLLIST] D:\Ibragim\ETCartman\tools.f90 532 - тут даже не полез разбираться.

Никаких проблем насчет использования double pressision я не заметил. Если верить справке, то real(8) и double pressision воспринимается как одно и тоже, хотя могу ошибаться.
__________________
С уважением, Ibragim:drinks:

Последний раз редактировалось ibragimr, 15.03.2014 в 14:52.
ibragimr вне форума  
 
Автор темы   Непрочитано 15.03.2014, 22:43
#12
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


Странно - у меня и в линукс и виндоус собралось все без проблем. В линукс стандартно через makefile а в виндоус в mingw текущей версии gfortran через батник. Правда при запуске в виндоус потребовалось 2 динамических библиотеки, и собственно из-за чего возник вопрос в топике - программа считает внешне правильно, но на самом деле не вполне верно. Не верно скорее всего из-за оптимизационных настроек - когда код фортрана переводится в ассемблер.
я думаю надо попробовать собрать в линуксе для виндоус через кросскомпилятор.
ETCartman вне форума  
 
Непрочитано 16.03.2014, 00:15
#13
ibragimr


 
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163


Скорее всего ошибка где-то в моих действиях. Кстати, я не удосужился прочесть даже faq на сайте (а зря). Буду пробовать собрать снова
__________________
С уважением, Ibragim:drinks:
ibragimr вне форума  
 
Непрочитано 16.03.2014, 01:06
#14
ibragimr


 
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163


Итак, проект я собрал. Во вложении следующие файлы
1. dolfyn.exe и preprocessor.exe - соответственно препроцессор и программа.
2. Файлы примера wes2.
3. Тут же в папке и посчитанные результаты.

Компилировал я для 32-х разрядной системы без каких-либо изменений стандартных настроек компилятора. Это так сказать что получилось на быструю руку.

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

P.S. в файле smagorinsky.f90 действительно переменная FL2 не определена. Я посмотрел в каких формулах она задействована и указал ей тот же тип (real) и тогда проект собрался.
Вложения
Тип файла: rar example.rar (781.7 Кб, 39 просмотров)
__________________
С уважением, Ibragim:drinks:
ibragimr вне форума  
 
Автор темы   Непрочитано 16.03.2014, 03:38
#15
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


спасибо, скачал, но проверить пока не могу.
кстати в линуксовском makefile стоят настройки как раз real-8 которые возможно в виндоус я не учел просто
64 бита по идее для больших моделей
но я пока простые примеры осваиваю.
у вас после расчета примера был создан файл odx для интеловского постпроцессора opendx
с которого кстати там сделан скриншорт
но в качестве постпроцессора можно также использовать paraview или GMSH
надо только в .din файл добавить команду use vtk или use gmsh
В GMSH сначала загружается vtk файл с сеткой а потом сверху добавляются результаты в узлах.


Код:
[Выделить все]
SHELL = /bin/sh

#F90 = ifc
#F90 = g95    
#F90 = ifort

F90 = gfortran
F90FLAGS = -O2   # -ffast-math -funroll-loops -O3

F90DP = gfortran -fdefault-real-8

F77FILES = \
  solver_sparsekit2.f\
  lapacks.f  
# solver_bcg2.f
# solver_ma27.f
Вложения
Тип файла: zip karman.zip (334.1 Кб, 23 просмотров)
ETCartman вне форума  
 
Непрочитано 16.03.2014, 15:59
#16
ibragimr


 
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163


Собрал проект еще раз (см. вложение).

Почти ничего не менял, кроме файлов с результатами. Разбираться с din файлом мне было лень, поэтому я поступил так (см. вложение):

- в файле modules есть набор флагов, которые отвечают за выбор типа файлов результатов;
- в головном файле dolfyn нашел блок проверок этих флагов;
- поставил истину напротив нужных мне значений.

Теперь при решении создаются все возможные файлы результатов. Проверьте, надеюсь что все правильно работает и я ничего не попортил

По поводу чисел с двойной точностью применительно к компилятору от интела (из справки):

"If a kind parameter is specified, the real constant has the kind specified. If a kind parameter is not specified, the kind is default real.

Default real is affected by compiler options specifying real size and by the REAL directive.

The default KIND for DOUBLE PRECISION is affected by compiler option double-size. If this compiler option is not specified, default DOUBLE PRECISION is REAL(8).

No kind parameter is permitted for data declared with type DOUBLE PRECISION.

REAL(4) and REAL*4 (single precision) are the same data type. REAL(8), REAL*8, and DOUBLE PRECISION are the same data type."

Во вложении есть скрин настроек компилятора. По умолчанию получается что компилятор приравнивает объявление double precission к real(8).
Миниатюры
Нажмите на изображение для увеличения
Название: double_size.png
Просмотров: 70
Размер:	421.8 Кб
ID:	124460  Нажмите на изображение для увеличения
Название: output_files.png
Просмотров: 63
Размер:	343.8 Кб
ID:	124461  
Вложения
Тип файла: rar exam_a_tube.rar (1.04 Мб, 27 просмотров)
__________________
С уважением, Ibragim:drinks:
ibragimr вне форума  
 
Автор темы   Непрочитано 18.03.2014, 02:08
#17
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


нет пока времени на детальное тестирование
ваш exe не запустился с пометкой not valid win32 application
добавлю тоже свою версию (с real-8 для F77 файлов) и старую стабильную с офсайта
проблема та же что и в топике, но дело не в компиляторе а в самом коде по моему
удивительно весьма, но вроде как открытой версии фортран90 для 64 бита вроде бы даже и нет. есть проект разрабатываемый гуглом, AMD и т.д. называемый open64
виндоус я там не нашел и разбираться лень.

PS добавил статичные билды без надобности dll
Вложения
Тип файла: zip exe.zip (1.74 Мб, 25 просмотров)
Тип файла: zip staticBuild.zip (729.5 Кб, 28 просмотров)

Последний раз редактировалось ETCartman, 18.03.2014 в 20:56.
ETCartman вне форума  
 
Непрочитано 18.03.2014, 21:58
#18
ibragimr


 
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163


Вы правы, проверил на XP - не запускается. Проверял до этого на домашних машинах, но они все у меня 64-ые. Если найду в чем причина такого поведения, отпишусь
__________________
С уважением, Ibragim:drinks:
ibragimr вне форума  
 
Автор темы   Непрочитано 18.03.2014, 22:11
#19
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


у меня 64 битная естественно, XP со всеми обновлениями
Но в принципе я задачу решил и понял что и почему. Компилятор работает одинаково
64 битного под виндоус вроде бы нет.
ETCartman вне форума  
 
Непрочитано 18.03.2014, 22:17
#20
ibragimr


 
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163


Получается мой ексешник у вас и на 64 битной системе не запустился??
__________________
С уважением, Ibragim:drinks:
ibragimr вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > Fortran90 - одинаковая работа под nix и win

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Акты скрытых работ Витос Прочее. Архитектура и строительство 324 05.03.2015 12:24
Совместная работа архитектора и конструктора в Autodesk Revit wetr Revit 27 22.01.2014 13:55
Сколько может стоить работа по проектированию сборного ЖБИ? jola Организация проектирования и оформление документации 41 21.06.2013 16:29
Работа ПТОшником в строительстве: разная или одинаковая? Alma3 Профессии и трудовые отношения 5 25.05.2012 12:59