Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с Intel Fortran через Visual Studio 2003 и не только

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Открыть новую тему     Написать ответ в эту тему

Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
до { eps=abs(eps) } eps= числу в степени е-007. После выполнения - е+066.
если eps объявлено как REAL*8 - ничего удивительного для eps < 0: перед выполнением abs только правая (скорее всего) часть (4 байта) eps передаются abs для выполнения. Тем самым отбрасывается знак "-" 8-байтного числа и, как результат, можете иметь огромное положительное 4-байтное число.

 
Привет!
 
ABS - родовое имя команды для вычисления абсолютного значения. Если eps объявлено как real*8, то компилятор подставит в этом месте вызов dabs(eps) и ничего обрезать не будет.  
Так что дело не в этом.  
 
Без кода судить трудно, но в моей практике числе типа e+66 появлялись в трех случаях:
 
1. Использование ранее не инициализированной переменной. В современных компиляторах выдается предупреждение об этом
2. Обращение к элементу массива, чьи индексы выходят за границы ранее объявленных пределов массива. То же самое, компилятор должен выдать предупреждение.
3. Неустойчивость используемого численного алгоритма, так что большие числа просто отражение этой неустойчивости.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 11:52 29-01-2007
RUSer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10

Цитата:
1. Использование ранее не инициализированной переменной.

такого нет

Цитата:
2. Обращение к элементу массива, чьи индексы выходят за границы ранее объявленных пределов массива.  

предупреждений не было, но на всякий случай добавил 100 ячеек в каждую матрицу (...+10,...+10) - не помогло

Цитата:
3. Неустойчивость используемого численного алгоритма, так что большие числа просто отражение этой неустойчивости.  

поясни, пожалуйста. свою мысль. Что ты понимаешь под неустойчивостью алгоритма и как это связать с проблемой работы программы в режиме отладки и её нормальной работе при компиляции релизом?

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 19:34 29-01-2007
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
To RUSer
 
Так как полного кода нет, то можно высказать самые общие соображения, отчего могут появиться такие числа. что я и сделал.
 
Странно, что то, о чем ты пишешь, происходит в режиме отладки, а в режиме Release этого нет. Более понятно было бы, если бы было наоборот.  
Может быть в режиме Debug у тебя включена оптимизация? Проверь, и если это так. то выключи. Еще полезно посмотреть, что выдает на консоль отладочная печать. Вставь непосредственно до и после строки  eps = abs(eps) печать eps:
 
write(*,*) 'eps befor = ', eps
eps=abs(eps)
write(*,*) 'eps after = ', eps

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 15:17 30-01-2007
RUSer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10

Цитата:
Может быть в режиме Debug у тебя включена оптимизация?

Нет. Она включена в режиме Release.
 
Щас ещё раз засяду за код, может пропустил чего где...

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 20:38 30-01-2007
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RUSer

Цитата:
1. Использование ранее не инициализированной переменной.
такого нет  

implicit none используется?
 

Цитата:
2. Обращение к элементу массива, чьи индексы выходят за границы ранее объявленных пределов массива.  
предупреждений не было, но на всякий случай добавил 100 ячеек в каждую матрицу (...+10,...+10) - не помогло

Это предупреждение можно отключать опцией компилятора (но по-умолчанию должно быть включено).
Насчет автоинициализирования нулями: на этот счет тоже есть опция, но она распространяется только на статические массивы - при выходе за пределы динамического массива как раз можно получить подобные числа.
 

Цитата:
ак это связать с проблемой работы программы в режиме отладки и её нормальной работе при компиляции релизом?

Если все так просто - кто мешает включать/выключать по одной опции дебаг-режима в релизном и отследить, когда перестанет работать?
 
Насчет использования функций, в именах которых явно указан тип - так лучше вообще не делать.
Лучше всего управлять размерностью типов на уровне проекта и не использовать dimension вообще. Тогда нужные функции будут использоваться сами.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 14:24 31-01-2007
recvezitor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не подскажете можно как нибудь вставить в Visual Studio 2005 компилятор Intel Fotran 8.047. В 2002 студию все ставилось если не менять папки по умолчанию. Или может покажете ссылочку с бесплатным компилятором фортрана встраивающегося в 2005ю студию. А то поккупать что то не очень хочется

Всего записей: 95 | Зарегистр. 21-11-2006 | Отправлено: 13:35 18-02-2007
Dust



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
recvezitor

Цитата:
8.047

Возьми фортран посвежее.... Где 8.0 а где VS 2005...

Всего записей: 460 | Зарегистр. 01-03-2002 | Отправлено: 15:04 18-02-2007
recvezitor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ссылочку можно? А то я все что находил (а находил IntelFortran 9.0-9.1) все платное. Или может других производителей. Главное чтобы БЕСПЛАТНО, встраивалось в 2005ю Студию и желательно поновей (и таблеток от жадности).
И раз уж я здесь, то вопрос. Неужели Фортран жив и конкурентноспособен?

Всего записей: 95 | Зарегистр. 21-11-2006 | Отправлено: 16:17 18-02-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Неужели Фортран жив и конкурентноспособен?

не, давным-давно дохл (последний стандарт всего лишь в 2003 г. принимали) и совсем неконкурентен...
 
http://forum.ru-board.com/topic.cgi?forum=33&topic=7860#1

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 17:08 18-02-2007
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
recvezitor

Цитата:
Или может других производителей. Главное чтобы БЕСПЛАТНО, встраивалось в 2005ю Студию и желательно поновей (и таблеток от жадности).

За таблетками - это в раздел "Варезник". Если бесплатно, для 2005 студии и других производителей - это Salford FTN95. С официального сайта можно скачать бесплатный вариант - Personal Edition, который вполне функционален (даже глюки те же, что в платной версии):
 
http://www.silverfrost.com/11/ftn95/overview.asp
http://www.silverfrost.com/32/ftn95/ftn95_personal_edition.asp
 
Персональный FTN95 может использоваться только в сугубо некоммерческих целях, но зато сколько угодно долго. Поддержки нет, но при желании можно в любой момент проапгрейдиться, скачав новую версию. Сейчас доступна версия 5.01, скачать можно здесь:
 
http://www.download.com/Silverfrost-FTN95/3000-2069-10491439.html?part=dl-Silverfro&subj=uo&tag=button
 
Компилятор идет с полной документацией (СНМ-файл), весьма разумно написанной, но, к сожалению, давно толком не обновлявшейся. Очень удобно сделана работа из-под командной строки. К сожалению, во всех последних версиях было изрядное количество багов, надо смотреть их форум, там иногда выкладывают патчи, исправляющие отдельные баги:
 
http://forums.silverfrost.com/index.php
 
Еще там есть специальная библиотека ClearWin+, которая позволяет делать GUI к фортрановским прогам. То есть простенькое окошко с парой кнопок действительно сделать легко, но что-нибудь более сложное... Мать-мать-мать! Ну и кроме того функциональность этой библиотеки весьма и весьма ограничена по сравнению с прямым программированием на Win API, причем использовать возможности Win API, не заложенные в этой библиотеке, она просто не дает.  
 
Я возился с этим компилятором, возился... Надоел он мне, и я на него плюнул окончательно. Но, может, у кого-нибудь другое мнение о нем будет?

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 21:56 18-02-2007 | Исправлено: XPEHOMETP, 21:57 18-02-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
recvezitor
насколько я знаю, в VS встраивается только линейка ms/dec/compaq/intel,
ещё lahey, все они коммерческие...
из бесплатных под вынь32 есть только g77/g90 (без среды) и watcom (со своей средой)
всё...

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 17:26 19-02-2007
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не, Salford FTN95 реально бесплатен (при некоммерческом использовании) и, начиная с 5-й версии, интегрируется в Visual Studio 2005. До этого встраивался в VS 2003. Но можно работать с его собственным IDE Plato, поставляется в комплекте. Но оно глючное (по крайней мере, было). Можно и из-под командной строки запускать.  
 
И в Visual Studio 2005 встраивается еще PGI Fortran (от "The Portland Group STMicroelectronics, Inc."). Тоже коммерческий.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 21:11 19-02-2007
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
recvezitor
Цитата:
Не подскажете можно как нибудь вставить в Visual Studio 2005 компилятор Intel Fotran 8.047. В 2002 студию все ставилось если не менять папки по умолчанию. Или может покажете ссылочку с бесплатным компилятором фортрана встраивающегося в 2005ю студию.

Можно ли чуть по-подробнее о причине такого желания/необходимости вставки фортрановского компилятора в VS? Имеется ли ввиду линкование в один *.exe/dll/lib файл объектных файлов VS и фортрана? Если нет, то и такой необходимости нет.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 06:50 20-02-2007
dima333a



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
 
Что я знаю наверняка что там происходит, но новые версии Intel Fortran нехотят работать без новой Visual Studio.

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 07:27 20-02-2007
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не знаю как новые, у меня была 7-я, соглашалась на установку без Visual Studio, но работать можно было только с командной строки. Также он соглашался на установку в Visual Studio 7 с установленным туда Compaq Visual Fortran.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 09:56 20-02-2007
recvezitor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
"о причине такого желания/необходимости вставки фортрановского компилятора в VS?" - особенной потребности конечно нету. Можно естественно и в 2002 студие работать, но просто хочется самое новенькое. Мне просто 2005 студия нравится(дизайном), но нужно на фортране кодить... Хотя на самом деле мне больше всего понравился С#.
Я решил что проще будет найти 9й фортран интеловский. Надеюсь он в 2005 студию вставится...
И еще... Не покажете ли мне простенький код как вызвать из C# функцию из dll-ки написанную на фортране? К примеру в фортране есть функция, которая принимает два целых и выдает их сумму.

Всего записей: 95 | Зарегистр. 21-11-2006 | Отправлено: 05:30 21-02-2007
dima333a



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP

Цитата:
 Я не знаю как новые, у меня была 7-я, соглашалась на установку без Visual Studio, но работать можно было только с командной строки. Также он соглашался на установку в Visual Studio 7 с установленным туда Compaq Visual Fortran.

 
Седьмая версия и у меня стоит. Хотел поставить 8-ю, и попал в облом. Мотивирование было связанно с тем что новая версия Intel Fortran требует линкер от VS. (требовало как минимум VS.net). T.k. у меня место на лаптопном хардрайве очень ограниченно, то я остался с CVF6.6. В принципе я отлаживаю все на лаптопе, под CVF. А потом компилирую на кластере уже под Linux. Там стоит Intel Fortran v8.х Все довольны.

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 07:15 21-02-2007
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
recvezitor
С C# я не использовал фортран. Если только начинаете, то будет полезно ознакомиться с help-ом в фортране (как Intel, так и Compaq):
Tab: Index
Type in the keyword to find: : Mixed-language

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 07:23 21-02-2007
recvezitor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да не с фортраном то я знаком и с С# тоже. Просто у меня есть примеры как связать С++ и фортран , есть примеры как связать С++ и С#. А как связать фортран и С#...
А еще воросик... Можно в Фортране как нибудь переменную символьного типа, чтобы потом на этапе выполнения программы задавать ее длину. Чтонибудь типа  
character(len=*)::a
allocate(a(10))
А то меня бесят строки с кучей пробелов в конце
 
Добавлено:
Вот я что еще хотел спросить. Читая эту ветку, я натолкнулся на упоминание МКР - метод конечных разностей. Здесь кто то этим серьезно занимается? Или может быть кто то занимается МКЭ - методом конечных элементов? И вообще в нашей стране этим занимаются? Или мы опять в отстое???

Всего записей: 95 | Зарегистр. 21-11-2006 | Отправлено: 10:03 21-02-2007
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На счет связывания фортрана и С# не знаю, но в Salford FTN95 есть такая штука: Visual ClearWin. Состоит она в том, что GUI делается на Java#, а расчетная часть на фортране. И там это дело рассматривается в справке: managed code, как использовать .NET-массивы и прочее. Я это юзать не пытался, сказать ничего не могу.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 14:36 21-02-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с Intel Fortran через Visual Studio 2003 и не только


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru