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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

akaGM

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

Цитата:
9.1.033

маздай... весь мир плюётся...
или вертайся на 9.0 (как это сделал я) или дожидайся 9.2...
 
кстати, для очистки совести можешь посмотреть багрепорты, может там и о твоих проблемах уже известно...
 
--------
чтобы не быть голословным:
я упёрся с winteracter
/взято с http://www.winteracter.com/

Цитата:
 
Note:
The Winteracter libraries are still compiled with v9.0 at the time of writing, due to a serious regression in the 9.1 compiler release. We expect to build a later update with 9.1, if/when this compiler fault is fixed.  
 

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 20:21 10-01-2007 | Исправлено: akaGM, 20:51 10-01-2007
RUSer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
заменил уже на 9.0 - не помогло...

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 22:27 10-01-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RUSer
c 2005?
тогда:
1. если есть возможность, попробуй ещё раз на 2003
2. смотри траблы по 2005 на интел-саппорте
3. напиши (уже только для полного успокоения) везде
impilicit none
 
4. показывай код, если это возможно и он не очень большой
5. ещё раз опиши проблему...
 
риторически:
а на хрен было вообще переходить на 2005?
фортран он и в комманд-лайне -- фортран...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 22:49 10-01-2007 | Исправлено: akaGM, 22:56 10-01-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и вообще...
есть уверенность, что нет ошибок в логике работы программы?
может в релизе они особо не проявляются (до поры до времени), а в режиме дебага включаются какие-то проверки и всё слетает...
может именно под дебагом всё работает _верно_, т.е. то как ты _просишь_, а не как ты _хочешь_...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 18:20 12-01-2007
RUSer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
1. на 2003 - нету такой возможности, прибил хороший дистриб по ошибке, а взять негде... Остался только кривой, какой не ставится...
2. пороюсь
3. пробовал и так, и так - пофигу
4. кода на 59 кбайт одной прогой...
5. Описываю расширенно...
 
Я пишу обычно на делфях, но если на них реализовать МКР, то расчёт будет длится довольно долго. Мне посоветовали писать на фортране, сказав, что расчёт на нём будет быстрее, да и заточен он под математику...
Вот, написал... Поэтому и могу сравнить -  

Цитата:
нет ошибок в логике работы программы?  
т.к. есть прога на делфях... Релиз совпадает с делфийской прогой, а отладка - на выходе пишет NaN.

Цитата:
риторически:
а на хрен было вообще переходить на 2005?
фортран он и в комманд-лайне -- фортран...

я там ещё немного дописал по расчёту, поэтому мне и требуется пошаговая отладка кода со всеми промежуточными результатами. А писать для сравнения тоже самое на делфях - это получается только время тратить, мягко говоря...
По поводу перехода см. п.1
 
Если есть что-то подобное VS, то скажите. Мне главное, чтобы особо долго в ней разбираться не пришлось...

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 18:59 13-01-2007
akaGM

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

Цитата:
МКР
метод конечных разностей? рунге-кутта? или что?
так, для праздного интереса...
 

Цитата:
а отладка - на выходе пишет NaN
у тебя что, на выходе одно число?
может действительно не лады с инициализацией?
если у тебя "чистый 90/95" код, то прогони под лахеем (если есть такой), у него
самая подробная инфа при компиляции имхо...
 

Цитата:
4. кода на 59 кбайт одной прогой...  
дай, если не жалко, гляну...
 
akaGM на яндексе
 

Цитата:
Я пишу обычно на делфях... Мне посоветовали писать на фортране, сказав, что расчёт на нём будет быстрее, да и заточен он под математику...
более чем верный совет/решение...
аналогичный случай, счёт -- фор, гуй -- дельфи...
 

Цитата:
я там ещё немного дописал по расчёту, поэтому мне и требуется пошаговая отладка кода со всеми промежуточными результатами
ну это-то при небольших программах решается элементарно с промежуточными райтами, был бы опыт...
 

Цитата:
Если есть что-то подобное VS
под винды нет, под линь -- много чего...
но тебе ж не подойдёт...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 20:42 13-01-2007 | Исправлено: akaGM, 20:46 13-01-2007
dima333a



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

Цитата:
т.к. есть прога на делфях... Релиз совпадает с делфийской прогой, а отладка - на выходе пишет NaN.  

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

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 00:51 14-01-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
стандарт фортрана гласит:
"переменная всегда имеет начальное значение ноль"
но сегодня я бы на это не расчитывал и никому не советовал полагаться...
 

Цитата:
обнуляются константы при инициализации

хорошо сказано...
 

Цитата:
 
Если есть что-то подобное VS
под винды нет, под линь -- много чего...
 
но тебе ж не подойдёт...

 
тут я не совсем прав...
есть, например, иде от ваткома, правда она убогая, но зато свободная...
 
http://openwatcom.org/index.php/Main_Page
 
кстати, обновился в декабре...
 

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 14:50 14-01-2007 | Исправлено: akaGM, 14:57 14-01-2007
RUSer



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

Цитата:
метод конечных разностей

 

Цитата:
прогони под лахеем

А что это?
 
Прога: http://ifolder.ru/865401
Пароль в ПМ
 

Цитата:
решается элементарно с промежуточными райтами

если ты имеешь ввиду выкидывать все промежуточные цифры в файл, то здесь это не пойдёт - объём будет слишком большим.
 
dima333a

Цитата:
Если компилировать в режиме отладки, то там обычно автоматом обнуляются константы при инициализации.  

поясни свою фразу...
А то я, глупый, всю жизнь считал, что константа всегда неизменна о_О На то она и константа...

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 14:57 14-01-2007
akaGM

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

Цитата:
прогони под лахеем
 
А что это?
 

 
компилятор с фортрана Lahey
 
http://www.lahey.com
 
щас его купили Fujitsu
самая лучшая диагностика при компиляции, я его для этих целей и держу...
 

Цитата:
Пароль в ПМ

ну ты и защитился...
13 кил в мыло трудно пульнуть?
взял, гляну...
 
---------------------
навскидку...
 
придётся поменять _везде_
типа

Код:
 
data  m0/1.256637e-6/,pi/3.1415927/
 
           xzaz=12*kx*0.5
           farrot=farrot*1e-3
           intermax=intermax/250
           torque=2*pi*Rrot*lrot*Rrot*Kke*fxo
 

 
на

Код:
 
data  m0/1.256637d-6/, pi/3.1415927d0/
 
           xzaz=12.d0*kx*0.5d0
           farrot=farrot*1d-3
           intermax=intermax/250.d0
           torque=2.d0*pi*Rrot*lrot*Rrot*Kke*fxo
 

 
 
вроде ясно, да?

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 15:10 14-01-2007 | Исправлено: akaGM, 15:24 14-01-2007
RUSer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что менять - понятно. Вопрос - для чего? Что означает "d"?

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 15:35 14-01-2007
akaGM

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

Цитата:
Что означает "d"?

то, что счёт идёт с двойной точностью, а не с одинарной...
real*8, а "е" всё перебивает...
фортран -- он такой...
может в этом всё дело, nan может возникать из-за потери точности,
давай правь, не ленись...
 
+
вместо твоего:

Код:
 
real*8 pi
data  pi/3.1415927/  
 

 
константы надо определять вот так:

Код:
 
      real*8 pi
      parameter (pi = 3.1415927d0)
 

 
ты же определил не константу, а переменную и инициализировал её...
кстати, получишь заодно оптимизацию+ускорение... копеечную, правда, но тем не менее...
 

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 16:03 14-01-2007 | Исправлено: akaGM, 16:17 14-01-2007
dima333a



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

Цитата:
поясни свою фразу...  
А то я, глупый, всю жизнь считал, что константа всегда неизменна о_О На то она и константа...

 
O как накинулись...  имелось в виду _переменные_.
 

Цитата:
стандарт фортрана гласит:  
"переменная всегда имеет начальное значение ноль"  
но сегодня я бы на это не расчитывал и никому не советовал полагаться...  

 
Из личного опыта - _Это не правда_. В интеловском компиляторе есть специальная опция по этому поводу.
 
/Qzero        implicitly initialize all data to zero
 
/Qnobss_init  disable placement of zero-initialized vars in BSS (use DATA)
 
Сам с этим столкнулся.

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 16:14 14-01-2007 | Исправлено: dima333a, 16:24 14-01-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RUSer
 
вот тебе диагностика лахея (выделения мои), 3 неинициализации, правь:

Код:
 
Lahey/Fujitsu Fortran 95 Compiler Release 5.00f
 
Compiling file kstat.f90.
Compiling program unit kstat at line 1:
  1619-S: "kstat.f90", line 141: ddxy not an array name or invalid array reference.
  2018-S: "kstat.f90", line 141: When IMPLICIT NONE is specified, yz must be declared in a type declaration statement.
  2005-W: "kstat.f90", line 143: ier is used but never set.
  2005-W: "kstat.f90", line 562: ourepslow is used but never set.
 

 
на первые две строчки наплюй, это лахей твою строчку в 540 символов не схавал...
да и третья вроде понятна -- временная статусная переменная, отбрасываем...
а вот последняя -- самое то...
 
 
dima333a
из личного опыта -- это правда...
далее цитирую себя...

Цитата:
но сегодня я бы на это не расчитывал и никому не советовал полагаться...  

пример же интела -- пример реализации...
 
----------------------
 
RUSer
 
на сегодня закончил смотреть твой код...
 
1. перевари всё что я сказал выше
+
2. что-то мне кажется что есть вот такая ошибка:
 

Код:
 
integer*4 outepslow
real*8 ourepslow
 

 
outepslow
эта описана, инициализирована (читается из файла параметров), но не используется
 
ourepslow
а эта описана, неинициализирована, но используется, причём как целое:
 
if (ourepslow.eq.1) then
 
 
клавиши "r" и "t" рядом расположены...
или ошибка "копи/пасте"? гы
 

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 16:18 14-01-2007 | Исправлено: akaGM, 18:08 14-01-2007
dima333a



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

Цитата:
пример же интела -- пример реализации...

 
Ну тут вся соль в том, что "стандарт говорит одно, а в жизни ...", насчет того что бы "полагатся на это", я с тобой полностью согласен. Мой опыт собственно и заключался в том что ю слишком сильно полагался на стандарт. А каждый компилятор это как отдельный зверь, со своими повадками.

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 18:58 14-01-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну а при моём следовании стандарту, все мои программы до сих пор работают и компилятся на 3-4 платформах без адаптации (вин, *никс, vax, cray)
при этом используя стандартные же nag и port библиотеки...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 15:45 16-01-2007
RUSer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
 
Спасибо за свежий взгляд
 

Цитата:
outepslow
эта описана, инициализирована (читается из файла параметров), но не используется
 
ourepslow
а эта описана, неинициализирована, но используется, причём как целое:
 
if (ourepslow.eq.1) then
 
 
клавиши "r" и "t" рядом расположены...
или ошибка "копи/пасте"? гы  

 
гы Этот случай всё равно никогда не возникает, если вх. параметры верны, а не от балды.
 
Щас вернулся к коду, буду менять всё как ты говорил.
 
Ещё раз спасибо.

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 14:57 27-01-2007
akaGM

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

Цитата:
Этот случай всё равно никогда не возникает, если вх. параметры верны

ещё как возникает...
outepslow всегда = 1 (из твоего же файла), а ourepslow или 0 или мусор при релизе/отладке
if (ourepslow.eq.1) then
 
сам проверь...
 
---
у нас теперь новая крыша...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 15:23 27-01-2007 | Исправлено: akaGM, 15:47 27-01-2007
RUSer



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

Цитата:
!               Если процесс затухает очень медленно
!       ---------------------------------------------------------------
!               if (outepslow.eq.1) then
!          if (abs(epsmax/epsmaxold).gt.0.999) then
!                  if (abs(epsmax/epsmaxold).lt.1) then
!                     ctlow=ctlow+1
!                     print *, ctlow
!                     if (ctlow.gt.ctlowmax) then
!                        epsmax=0
!                        ! Прекращение расчета из-за очень медленного убывания погрешности
!                        print *,'ЏаҐЄа йҐ-ЁҐ а бзҐв  Ё§-§  ®зҐ-м ¬Ґ¤«Ґ--®Ј® гЎлў -Ёп Ї®ЈаҐи-®бвЁ'
!                     end if
!                  end if
!                end if
!             end if
!               if (int.gt.intermax) then
!                   epsmax=0
!                   !Прекращение расчета из-за достижения  максимального количества итераций
!                   print *, 'ЏаҐЄа йҐ-ЁҐ а бзҐв  Ё§-§  ¤®бвЁ¦Ґ-Ёп  ¬ ЄбЁ¬ «м-®Ј® Є®«ЁзҐбвў  ЁвҐа жЁ© '
!               end if

Эти случаи у мя возникают, хотя и редко - пр. когда с параметрами модели эксперементирую. Вывод: по логике всё работает
 
В отладке же у меня срабатывает условие:

Цитата:
!               Защита от математического переполнения
!       ---------------------------------------------------------------
            if (epsmax.gt.1) then                
               
               print *,'         !!  Њ ⥬ вЁзҐбЄ®Ґ ЇҐаҐЇ®«-Ґ-ЁҐ  !! '
               print *,'         !!  Ђў аЁ©-®Ґ § ўҐаиҐ-ЁҐ а Ў®вл  !! '
               print *,'         !! ЌҐв १г«мв в®ў ¬®¤Ґ«Ёа®ў -Ёп !! '                
               stop
            end if

З.Ы. И да, outepslow - там была очепятка Что самое интеросное - работало же о_О

Всего записей: 390 | Зарегистр. 24-08-2004 | Отправлено: 15:55 27-01-2007
akaGM

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

Код:
 
      real*8 t, s
 
      t = -0.999999999
      print *, t, abs(t), dabs(t)
      s = -0.999999999d0
      print *, s, abs(s), dabs(s)
      end
 

исполни...
 
тогда поймёшь, что

Код:
 
  if (abs(epsmax/epsmaxold).gt.0.999) then
                  if (abs(epsmax/epsmaxold).lt.1) then  
 

надо менять на:

Код:
 
  if (dabs(epsmax/epsmaxold).gt.0.999d0) then
                  if (dabs(epsmax/epsmaxold).lt.1.0d0) then  
 


Цитата:
И да, outepslow - там была очепятка...

ну так...
Зоркий Сокол!
 
---
кстати, в нашем новом доме можешь высказаться...
ведь ты тоже к Фору через Дельфи пришёл... осознанно, так скать...
через дЭльфии к з**вёздам!

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 16:16 27-01-2007 | Исправлено: akaGM, 16:30 27-01-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