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

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

Модерирует : 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

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

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на ФОРТРАН, как общего так и конкретного характера.
Постарайтесь дать как можно больше информации о возникшей проблеме -- это в конце концов в ваших же интересах чтобы вам помогли...

прежде чем просить помощи в задании
платное решение задач

ресурсы этого топика
ссылка на подборку ресурсов, собранных посетителями этого форума
 
то, чем мы решили поделиться
ссылка на страничку программ etc собственного изготовления, которыми любезно делятся наши форумчане


если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим
 
просьба к пишущим и отвечающим все большие листинги оформлять тегом more
и отключать графические смайлики при размещении фортран-кода

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 18:11 14-01-2007 | Исправлено: akaGM, 09:47 01-03-2020
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно приближаемся к террафлопсам!?
Фортран опять рулит:
http://www.nvidia.com/object/cuda_develop.html

Всего записей: 231 | Зарегистр. 24-07-2005 | Отправлено: 09:30 17-01-2008
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eugeen
А что это за чуда такая (в смысле cuda)? Как я понял, эта штука позволяет использовать графический акселератор видеокарты для численных расчетов, запараллеленных с расчетами на CPU. Вещь, конечно, соблазнительная, особенно если учесть, к примеру, зашитую в современные видеоускорители хардверную поддержку быстрого преобразования Фурье. Только вот никаких вразумительных объяснений по поводу того, как эта штука работает и сложно ли ее запустить в дело, я не нашел. А качать все это, не понимая как следует, что это такое, как-то не интересно. Может, кто объяснит, что это за зверь?

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 22:42 18-01-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, сайтец малоинформативный...
Сонька-Ибиэмка со своим селлом всех подстегнули...
чёрт, а я так радовался что пересел с GF 5200 на 6600, совсем наивный...
 
XPEHOMETP, могу стянуть, а потом как-нибудь передать, хошь на паб положу, хошь как...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 22:54 18-01-2008
XPEHOMETP

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

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 07:05 21-01-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну вроде как раньше был основной процессор и сопроцессор FPU,
а теперь вот GPU (гы-гы), на который Нвидеа перекладывает (вернее, умеет переложить)
операции с плав. точкой...
 
они даже свой НВидеа С компилятор сделали...
все файлы *.cu -- это C++ файлы...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 16:18 21-01-2008
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нагуглил ссылочку на форум, где обсуждают эти вещи: http://distributed.ru/forum/?a=topic&topic=959 . Там дают ссылочку на еще один форум, где некто с ником Devaster разрабатывает вопросы подключения GPU к расчетам. Т.е. он уже какое-то время самостоятельно ковырялся, а теперь использует новые технологии nVidea. И приводятся там результаты тестов, которые, мягко говоря, не обнадеживают.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 22:19 21-01-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, понятно...
хотя, там вполне конкретная задача -- S@H
но, как правильно там кто-то заметил, вот когда ~100% счёта будет крутиться на ГПУ...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 22:28 21-01-2008 | Исправлено: akaGM, 22:29 21-01-2008
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У кого-то получилось прогнать тестовые примеры по CUDA? У меня под линуксом с наскоку не получилось.
Толи хидеров не хватает, толи компилятор не тот. Ошибка при make
Вообще то они там такую древность предлагаюt, кажется gcc 3.4.x
У меня 4.х версия уже как несколько лет.
Короче бредятина. Попробую под виндовозом.
 
А дело то заманчивое. У меня как раз ноут с 8800ГТ

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 12:09 23-01-2008
Makcumkun

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня студент считает конечные разности [уравнения Максвелла на трехмерной сетке] на CUDA. Вполне быстро. Основная проблема это память на карточке.
 
2Eugeen, фортран все же тут ни при чем. Это С. Появилось несколько интерфейсов для CUDA и фортрана, но легче пока что на С писать. К сожалению. К тому же пока что одиночная точность на НВида. Двойную обещают выпустить к концу этого года, но тут уже и карточки надо будет закупать новые.  
 
Вот еще ссылочка до кучу с примерами программ: http://smadasam.googlepages.com/gpufdtdcode

Всего записей: 14 | Зарегистр. 08-12-2004 | Отправлено: 03:26 24-01-2008 | Исправлено: Makcumkun, 03:27 24-01-2008
han84



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток. Прошу помощи. Компилирую программу из под линукса (gfortran) запускаю и она виснет. Вроде зацикливается в этом мете:
 

Код:
    IF(IHNT2(1)<=1) GO TO 14
    DO 10 KP=1,IHNT2(1)
5    R=HIRND(1)
    
        if(IHNT2(1)==2) then
           rnd1=max(RAN(NSEED),1.0e-20)
           rnd2=max(RAN(NSEED),1.0e-20)
           rnd3=max(RAN(NSEED),1.0e-20)
           R=-0.5*(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0
     &          +4.38*0.85*log(rnd3)/(4.38+0.85))
        endif
 
    X=RAN(NSEED)
 
    CX=2.0*X-1.0
    SX=SQRT(1.0-CX*CX)
C********choose theta from uniform cos(theta) distr
    PHI=RAN(NSEED)*2.0*HIPR1(40)
C********choose phi form uniform phi distr 0 to 2*pi
    YP(1,KP)=R*SX*COS(PHI)
    YP(2,KP)=R*SX*SIN(PHI)
    YP(3,KP)=R*CX
    IF(HIPR1(29)==0.0) GO TO 10
    DO 8  KP2=1,KP-1
        DNBP1=(YP(1,KP)-YP(1,KP2))**2
        DNBP2=(YP(2,KP)-YP(2,KP2))**2
        DNBP3=(YP(3,KP)-YP(3,KP2))**2
        DNBP=DNBP1+DNBP2+DNBP3
        IF(DNBP<HIPR1(29)*HIPR1(29)) GO TO 5
            
 
    
C********two neighbors cannot be closer than  
C                HIPR1(29)
8    CONTINUE
10    CONTINUE

 
у меня подозрения что из-за  
 

Код:
    COMMON/RANSEED/NSEED
    SAVE  /RANSEED/

 
что-то с ним не то (либо руки у меня кривые). С фортаном знаком плохо, потому прошу помощи. Под виндой эта самая программа компилировалась и работала нормально. (Использовал компак визуал фортран). Извиняюсь если не совсем по теме.  
Заранее спасибо.

Всего записей: 55 | Зарегистр. 31-05-2007 | Отправлено: 01:02 05-02-2008 | Исправлено: han84, 01:04 05-02-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
han84
ты думаешь по такому куску можно что-нибудь понять? и кто этот вавилон писал?
 

Цитата:
у меня подозрения что из-за SAVE  /RANSEED/

ну и убери, на фиг тебе это?
 
-введи промежуточную отладочную печать для начала
-включи полную дебаг-информацию, особенно для ран-тайм
-включи макс уровень варнингов, избавься от них или пойми о чём идёт речь
-убери всю оптимизацию
-перейди к двойной точности, иначе величины типа 1.0e-20 -- глупость...
 и вообще, мне кажется, что дело у тебя с потерей точности...
-если ничего не поможет и сам не найдёшь причину, то собери под Линем g77
кстати, под виндами ты тоже можешь юзать gfortran (почти что ту же версию, что и для линакса
 
а дальше будем посмотреть...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 08:20 05-02-2008 | Исправлено: akaGM, 08:54 05-02-2008
han84



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

Цитата:
ты думаешь по такому куску можно что-нибудь понять? и кто этот вавилон писал?

 
Да я сам понимаю просто прога около 8 тыс строк, а на этом куске она циклилась. Насчет кто писал так китаец какой-то где-то в 95 вроде.
В общем откомпилировал я эту прогу с помощью intel fortran 10. Все отлично заработало.
Почему не работало под gfortran вроде наколько я понял там генератор случайной величины RAN не работает. Заменял на RAND тот же результат. Вроде какоето различие в версиях фортранов. Если кто подскажет как с этим боротся или ссылочку где можно почитать -- буду признателен.

Всего записей: 55 | Зарегистр. 31-05-2007 | Отправлено: 19:29 05-02-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
han84
да всё там работает...
я всё-таки остаюсь при своём мнении, что у тебя с точностью что-то не то...
 
вот прогони на gfortran и intel'е (и вообще на всём что есть под рукой, я даже С-код не поленился):

Код:
 
      real*4 s, seps
      real*8 d, deps
 
      d = 1.1d0
      deps = 1.d0
      do while (d .ne. 1.0d0)
        d = 1.0d0 + deps
        deps = deps / 2.0d0
      enddo
 
      s = 1.1e0
      seps = 1.e0
      do while (s .ne. 1.0e0)
        s = 1.0e0 + seps
        seps = seps / 2.0e0
      enddo
 
      print *, 'double epsilon: ', deps
      print *, 'single epsilon: ', seps
 
      end
 
////////////////////////////////////////////////////
#include <stdio.h>
  float s, seps;
  double d, deps;
 
void main()
{
  d = 1.1e0;
  deps = 1.e0;
   while (d != 1.0e0) {
    d = 1.0e0 + deps;
    deps = deps / 2.0e0;
  }
 
  s = 1.1e0;
  seps = 1.e0;
  while (s != 1.0e0) {
    s = 1.0e0 + seps;
    seps = seps / 2.0e0;
  }
 
  printf("double epsilon: %E\n", deps);
  printf("single epsilon: %E\n", seps);
}

интелы работает с даблами, они лукавят -- держат экспоненту, а потом просто обрезают мантиссу, а gfortran честно в IEEE и фигачит...
все остальные компиляторы (g77/Visual C/Lachey Fortran и др.) работают так же как ГФортран, можешь проверить...

Цитата:
Насчет кто писал так китаец какой-то где-то в 95 вроде.

я имел ввиду дикое смешение стилей 66/77/90... а так, халтурщики они, особенно в науке...

Цитата:
ссылочку где можно почитать

http://gcc.gnu.org/onlinedocs/gfortran/RAN.html#RAN

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 19:37 05-02-2008 | Исправлено: akaGM, 14:45 06-02-2008
han84



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Спосибо за помощь, попробую еще посмотреть насчет точности (и вообще пороюсь по ссылкам из шапки). Хочется всетаки до конца разобраться.

Всего записей: 55 | Зарегистр. 31-05-2007 | Отправлено: 20:27 05-02-2008
terminat0r



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

Цитата:
я имел ввиду дикое смешение стилей 66/77/90... а так, халтурщики они, особенно в науке...

Ой, ну с размаха и прямо по больному месту!
Гы, видели бы вы, что у нас в коде творится...

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 20:38 05-02-2008
akaGM

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

Цитата:
прямо по больному месту!

ты чё, китаец? гы

Цитата:
что у нас в коде творится...

это смотря в каком коде... в вашем ради бога, вы -- хозяева...
тем более я понимаю -- наследие, небось...
а вот НАГ или подобное зачем трогать? там всё вылизано до меня и лучше меня...
 
кстати, все свои 90/95 (хотя от них там и немного) фиговины я только в жёстком формате пишу 1/2/6/7/72
зато всё всем понятно...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 20:49 05-02-2008 | Исправлено: akaGM, 20:54 05-02-2008
han84



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

Цитата:
я всё-таки остаюсь при своём мнении, что у тебя с точностью что-то не то...

Вы были правы. Я тут поэксперементировал с опциями компиляции ifort. При компиляции с -r8 та же проблема, что и при компицяции с gfortran (программа не работает). Если же откомпилировать в ifort без каких-либо опций или с -double-size 64, то все снова работает. Только проблема в том что мне нужен именно gfortran.  

Цитата:
-перейди к двойной точности, иначе величины типа 1.0e-20 -- глупость...

Пробовал откомпилировать программу с помощью gfortrana с опцией  -fdefault-double-8
мне выдало такую ошибку

Код:
gfortran *.for *.f -o main -fdefault-double-8
<built-in>:0: fatal error: Use of -fdefault-double-8 requires -fdefault-real-8
compilation terminated.
<built-in>:0: fatal error: Use of -fdefault-double-8 requires -fdefault-real-8
compilation terminated.
<built-in>:0: fatal error: Use of -fdefault-double-8 requires -fdefault-real-8
compilation terminated.
 

 
Подскажите как с этим бороться (гугл чего-то не смог помочь). Заранее спасибо.

Всего записей: 55 | Зарегистр. 31-05-2007 | Отправлено: 02:44 15-02-2008 | Исправлено: han84, 03:11 15-02-2008
FuzzyLogic



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

Цитата:
-fdefault-double-8 requires -fdefault-real-8

Ну судя по сообщению при использовании первого флага -fdefault-double-8 вы обязаны использовать и второй -fdefault-real-8

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 12:20 17-02-2008
recvezitor

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос такой. Есть ли какое либо подобие intellisense для фортрана? А то так к этой штуке привык при работе с C# что дописывать до конца название функций для меня уже не в моготу? Может быть какой нибудь аддончик есть?

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
han84
ну дай мне свой код если он не секретный (обещаю не пиратить гы)

Цитата:
просто прога около 8 тыс строк

а... не... тогда лопатить не буду...
 
понимаешь, фортран-трансляторы всегда были "вещью в себе"
вот, например, этот код (где все константы -- одинарные):

Код:
R=-0.5*(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0+4.38*0.85*log(rnd3)/(4.38+0.85))

может работать с даблами, а может и с синглами, плюя на сквозные установки
в IF достаточно использовать /real-size:8 и все _константы_ будут 8-байтными,
а в gfortran'e может и не так...
попробуй, как говорит FuzzyLogic (да и сам компилятор), сразу две опции
-fdefault-double-8 -fdefault-real-8
 
а иначе -- ручками...
 

Код:
 
R=-0.5d0*(log(rnd1)*4.38d0/2.0d0
+ log(rnd2)*0.85d0/2.0d0
+ 4.38d0*0.85d0*log(rnd3)/(4.38d0+0.85d0))
 

 
да по всему коду...
 
кстати, пока писал эту строчку, ещё увидел у тебя прокол -- у тебя же все функции сингловые! т.е. надо ещё поиграться с ними:

Код:
 
SX=SQRT(1.0-CX*CX)  --> SX=dSQRT(1.0d0-CX*CX)
 
log() --> dlog()
exp() --> dexp()
cos/sin --> dcos/dsin
 
даже
a**2 надо переписывать в a**2.d0
 

итд...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 19:01 18-02-2008 | Исправлено: akaGM, 19:08 18-02-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru