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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
и отключать графические смайлики при размещении фортран-кода

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

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
Да я это понял: просто вопрос показался нелепым.

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 22:01 02-04-2020
akaGM

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

Цитата:
Не памяти, а точности: памяти у меня 128 гигов.
ну а чем тогда четверная точность не устраивает?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 22:35 02-04-2020
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если я, опять-таки, правильно (?) понял, то расчёты с использованием double-double осуществляются раз в 5-6 быстрее, чем с double precision. Тогда получается, что современный интеловский фортранный компилятор - прошлый век? Однако, посмотрев стандарт Fortran 2018, не обнаружил в нём double-double переменных!. Тогда получается, что Фортран, заточенный под вычисления, тем более современный Фортран - туфта? Что-то где-то нестыковка.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 22:59 02-04-2020
akaGM

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

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 23:40 02-04-2020
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Оно может и так, а может и нет, но хотелось бы увидеть более понятные фразы/ответы/пояснения по использованию double-double переменных от GeorgeMame, интересующегося этой темой.
Он упомянул "Julya", а меня с некоторых пор интересует Julia как HPC, но никак не начну с ним знакомиться.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 00:13 03-04-2020 | Исправлено: Igorr, 00:14 03-04-2020
akaGM

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

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 02:17 03-04-2020
SergeSerge3leo



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

Цитата:
Дело не в вере, а в знаниях.  

Знания это не ко мне, мне достаточно опыта. От конкретноного теста/микротеста зависит. Вот, например, реализация для C++/Fortran https://www.davidhbailey.com/dhbsoftware/

Код:
$ ./qd_timer -all -long
 
Timing double
-------------
   add:   0.000332 us 3012.0482 mop/s
   mul:   0.000393 us 2546.1489 mop/s
   div:   0.003836 us  260.6882 mop/s
  sqrt:   0.003858 us  259.2353 mop/s
   sin:   0.011125 us   89.8876 mop/s
   log:   0.009600 us  104.1667 mop/s
   dot:   0.000278 us 3593.8904 mop/s
   exp:   0.008600 us  116.2791 mop/s
   cos:   0.011700 us   85.4701 mop/s
 
Timing long double
------------------
sizeof(long double) = 16
numeric_limits<long double>::digits = 64
numeric_limits<long double>::max_exponent = 16384
numeric_limits<long double>::digits10 = 18
numeric_limits<long double>::max_exponent10 = 4932
   add:   0.000347 us 2883.9221 mop/s
   mul:   0.000384 us 2602.4723 mop/s
   div:   0.004065 us  246.0327 mop/s
  sqrt:   0.004140 us  241.5459 mop/s
   sin:   0.036775 us   27.1924 mop/s
   log:   0.025300 us   39.5257 mop/s
   dot:   0.000441 us 2269.5035 mop/s
   exp:   0.035700 us   28.0112 mop/s
   cos:   0.036450 us   27.4348 mop/s
 
Timing __float128
-----------------
sizeof(__float128) = 16
FLT128_MANT_DIG = 113
FLT128_MAX_EXP = 16384
FLT128_DIG = 33
FLT128_MAX_10_EXP = 4932
   add:   0.017075 us   58.5643 mop/s
   mul:   0.019338 us   51.7117 mop/s
   div:   0.067597 us   14.7934 mop/s
  sqrt:   0.308253 us    3.2441 mop/s
   sin:   0.751050 us    1.3315 mop/s
   log:   0.903700 us    1.1066 mop/s
   dot:   0.018333 us   54.5468 mop/s
   exp:   0.876600 us    1.1408 mop/s
   cos:   0.775125 us    1.2901 mop/s
 
Timing dd_real
--------------
   add:   0.003032 us  329.8697 mop/s
   mul:   0.005218 us  191.6351 mop/s
   div:   0.009126 us  109.5740 mop/s
  sqrt:   0.016970 us   58.9275 mop/s
   sin:   0.287975 us    3.4725 mop/s
   log:   0.354000 us    2.8249 mop/s
   dot:   0.004247 us  235.4603 mop/s
   exp:   0.285200 us    3.5063 mop/s
   cos:   0.281125 us    3.5571 mop/s
 
Timing qd_real
--------------
   add:   0.026845 us   37.2509 mop/s
   mul:   0.061427 us   16.2796 mop/s
   div:   0.257101 us    3.8895 mop/s
  sqrt:   0.825525 us    1.2114 mop/s
   sin:   2.881025 us    0.3471 mop/s
   log:  10.244400 us    0.0976 mop/s
   dot:   0.044701 us   22.3708 mop/s
   exp:   3.058200 us    0.3270 mop/s
   cos:   2.876050 us    0.3477 mop/s

Ну а в реальном приложении может оказаться как для sin() - 2.5 раза, а не как для сложения - 6 раз.
 
Добавлено:
Igorr

Цитата:
Если я, опять-таки, правильно (?) понял, то расчёты с использованием double-double осуществляются раз в 5-6 быстрее, чем с double precision.  

Не совсем так, при сравнении `real*16' и `type (dd_real)' ожидается 2.5-5 раз, а double precision много быстрее их всех.

Цитата:
Однако, посмотрев стандарт Fortran 2018, не обнаружил в нём double-double переменных!. Тогда получается, что Фортран, заточенный под вычисления, тем более современный Фортран - туфта?

Имеющий руки, да сам добавит. А то что нет в стандартной библиотеке, то увы, безупречную реализацию double-double ещё никто не сделал. Подозреваю, реализовать все требования IEEE 754 весьма и весьма затруднительно, следовательно, в виду геморроев на ровном месте, каждый сам себе злобный Буратино, язык позволяет.
 
 
Добавлено:
P.S.
 
GeorgeMame

Цитата:
При этом -fast нельзя использовать. Для корректности сравнения и для double тоже.

В double-double `-fast' прочие оптимизации с нарушением стандартов Fortran или IEEE нельзя использовать, потому что "полетит" сама реализация double-double. Это один из недостатков double-double.
 
А для приложений, в которых с накоплением ошибок полный бардак нет тонкостей, как раз корректно сравнивать `-fast'  против double-double без `-fast'

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 06:13 03-04-2020 | Исправлено: SergeSerge3leo, 07:10 03-04-2020
GeorgeMame

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Под корректностью сравнения я имел в виду не результаты расчетов, а одинаковые условия трансляции. И потом, приведение quadruple к IEEE 754 (в алгоритме приведения используется и long double) и является причиной низкой скорости расчетов с quadruple. Я сравнивал скорости диагонализации больших симметричных упакованных матриц со схемой хранения RFP на double и на quadruple: скорость различалась примерно в 100 раз.

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 10:42 03-04-2020 | Исправлено: GeorgeMame, 10:57 03-04-2020
SergeSerge3leo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeorgeMame
Ограничения на методы оптимизации для всех единиц трансляции куда «инлайнится» реализация double-double, на мой взгляд, это часть накладных расходов реализации double-double. Поэтому для корректного сравнения в приложениях, которые нормально относятся к «-fast» и прочим оптимизациям, следует относить потери от их запрета на счёт реализации double-double.
 
Ну, 100 раз это ж, скорее всего, некоторое преувеличение ж. В части, скажем, линейной алгебры для прямых методов без итераций, для `real*16' можно ожидать потерь производительности в 50 раз, для `type (dd_real)'  потерь в 10-12 раз. В итерационных методах, немного меньше.
 
В тоже время, при использовании `real*10' с классической техникой накопления на повышенной точности в реализации скалярного произведения, а ля библиотека NAG x03ayf (x03aaf с sw=.true.), алгоритм Кнута, с которого собственно этот double-double и пошёл, ожидаемая потеря производительности десятки процентов (меньше двух раз) при сопоставимой точности.
 
Впрочем, выбор зависит от приложения. Одну из ссылок на реализацию я давал выше.
 
P.S.
А в части требований IEEE 754, для double-double представляется несколько затруднительным обеспечить все предусмотренные режимы округлений и особых ситуаций.

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 11:42 05-04-2020 | Исправлено: SergeSerge3leo, 13:12 05-04-2020
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В старое (доброе время) когда не было четверной точности, а лучшей машиной была БЭСМ-6, я написал небольшой код для точных решений систем линейных уравнений (в целочисленной арифметике на обыкновенных дробях). Может кому пригодится:
      S U B R O U T I N E  LUFACT ( N , LU , IPS , SCALES , IER )
      I M P L I C I T  I N T E G E R * 4 ( A - Z )
C Подпрограмма реализует LU разложение исходной матрицы
C     N - размерность системы уравнений
C     LU- матрица коэффициентов    
C     IPS - вспомогательный массив
C     SCALES - вспомогательный массив
C     IER - индикатор ошибки
     D I M E N S I O N  IPS( N ) , SCALES( 2, N ) , ROWNRM( 2 )  
     * , BIG( 2 ) , ISIZE( 2 ), PIVOT( 2 ), EM( 2 ), PC( 2 )  
     * , LU( 2, N, N )
C135
      IER  =  0
      D O  3  I = 1 , N
      IPS( I ) = I
      ROWNRM( 1 ) = 0
      ROWNRM( 2 ) = 1
      D O  1  J = 1 , N
      IF ( ROWNRM( 1 )*LU( 2 , I , J ) .GE.
     *     ROWNRM( 2 )*IABS(LU( 1 , I , J ) ) ) GO TO 1
      ROWNRM( 1 ) = IABS ( LU( 1 , I , J ) )
      ROWNRM( 2 ) = LU( 2 , I , J )
    1 C O N T I N U E
C136
      IF ( ROWNRM( 1 ) )  2 , 1001 , 2
    2 SCALES( 1 , I ) = ROWNRM( 2 )
      SCALES( 2 , I ) = ROWNRM( 1 )
    3 C O N T I N U E
C137
      NM1 = N-1
      D O  9  K = 1 , NM1
      BIG( 1 ) = 0
      BIG( 2 ) = 1
      DO 4 I = K , N
      IP = IPS( I )
      ISIZE( 1 ) = IABS ( LU( 1 , IP , K ) )*SCALES( 1 , IP )
      ISIZE( 2 ) = LU( 2 , IP , K )*SCALES( 2 , IP )
      C A L L  SOKRAS ( ISIZE( 1 ) , ISIZE( 2 ) )
      IF ( ISIZE( 1 )*BIG( 2 ) .LE. ISIZE( 2 )*BIG( 1 ) ) GO TO 4
      BIG( 1 ) = ISIZE( 1 )
      BIG( 2 ) = ISIZE( 2 )
      PIVROW = I
    4 C O N T I N U E
C138
      IF ( BIG( 1 ) .EQ. 0 ) GO TO 1002
C13  
      IF ( PIVROW .EQ. K ) GO TO 5
      J = IPS( K )
      IPS( K ) = IPS( PIVROW )
      IPS( PIVROW ) = J
    5 KP = IPS( K )
      PIVOT( 1 ) = LU( 2 , KP , K )
      IF ( LU( 1 , KP , K ) )  6 , 1002 , 7
    6 PIVOT( 1 ) = -PIVOT( 1 )
    7 PIVOT( 2 ) = IABS(LU( 1 , KP , K ) )
      LU( 1 , KP , K) = PIVOT( 1 )
      LU( 2 , KP , K) = PIVOT( 2 )
      KP1 = K+1
      D O  8  I = KP1 , N
      IP = IPS( I )
      EM( 1 ) = LU( 1 , IP , K )*PIVOT( 1 )
      EM( 2 ) = LU( 2 , IP , K )*PIVOT( 2 )
      C A L L  SOKRAS ( EM( 1 ) , EM( 2 ) )
      LU( 1 , IP , K ) = EM( 1 )
      LU( 2 , IP , K ) = EM( 2 )
      D O  8  J = KP1 , N
      PC( 1 ) = EM( 1 )*LU( 1 , KP , J )
      PC( 2 ) = EM( 2 )*LU( 2 , KP , J )
      C A L L  SOKRAS ( PC( 1 ) , PC( 2 ) )
      LU( 1 , IP , J ) = LU( 1  , IP , J )*PC( 2 )-
     *                   LU( 2  , IP , J )*PC( 1 )
      LU( 2 , IP , J ) = LU( 2  , IP , J )*PC( 2 )
      C A L L SOKRAS ( LU( 1 , IP , J ) , LU( 2 , IP , J ) )
    8 CONTINUE
    9 CONTINUE
C140
      IP = IPS( N )
      PIVOT( 1 ) = LU( 1 , IP , N )
      PIVOT( 2 ) = LU( 2 , IP , N )
      IF( PIVOT( 1 ) ) 10 , 1002 , 11
   10 PIVOT( 2 ) = -PIVOT( 2 )  
   11 LU( 1 , IP , N ) = PIVOT( 2 )
      LU( 2 , IP , N ) = IABS( PIVOT( 1 ) )
      R E T U R N
C141
 1001 IER  =  1
      R E T U R N
C142
 1002 IER  =  2
      R E T U R N  
      E N D
      S U B R O U T  I N E  LUSOLV ( N , LU , B , X , IPS )
      I M P L I C I T  I N T E G E R * 4 ( A - Z )
C Подпрограмма реализует решение системы ур-ний
C     после  LU разложения исходной матрицы
C     N - размерность системы уравнений
C     LU- матрица коэффициентов    
C     IPS - вспомогательный массив
C     B - вектор правых частей
C     Х - вектор корней системы
C
      D I M E N S I O N  B( 2 , N ) , X( 2 , N ) , IPS( N )
     *                , LU( 2 , N , N ) , ISUM( 2 ) , PC( 2 )
      NP1 = N+1
C144
      IP = IPS( 1 )
      X( 1 , 1 ) = B( 1 , IP )
      X( 2 , 1 ) = B( 2 , IP )
      D O  2  I = 2 , N
      IP = IPS( I )
      IM1 = I-1
      ISUM( 1 ) = 0
      ISUM( 2 ) = 1
      D O  1  J = 1 , IM1
      PC( 1 ) = LU( 1 , IP , J )*X( 1  , J )
      PC( 2 ) = LU( 2 , IP , J )*X( 2  , J )
      C A L L SOKRAS ( PC( 1 ) , PC( 2 ) )
      ISUM( 1 ) = ISUM( 1 )*PC( 2 )+ISUM( 2 )*PC( 1 )
      ISUM( 2 ) = ISUM( 2 )*PC( 2 )
    1 C A L L SOKRAS ( ISUM( 1 ) , ISUM( 2 ) )
      X( 1 , I ) = B( 1 , IP )*ISUM( 2 )-B( 2 , IP )*ISUM( 1 )
      X( 2 , I ) = B( 2 , IP )*ISUM( 2 )
    2 C A L L  SOKRAS ( X( 1 , I ) , X( 2 , I ) )
      IP = IPS( N )
      X( 1 , N ) = X( 1 , N )*LU( 1 , IP , N )
      X( 2 , N ) = X( 2 , N )*LU( 2 , IP , N )
      C A L L SOKRAS ( X( 1 , N ) , X( 2 , N ) )
C145
      D O  4  IBACK = 2 , N
      I = NP1-IBACK
      IP = IPS( I )
      IP1 = I+1
      ISUM( 1 ) = 0
      ISUM( 2 ) = 1
      D O  3  J = IP1 , N
      PC( 1 ) = LU( 1 , IP , J )*X( 1 , J )
      PC( 2 ) = LU( 2 , IP , J )*X( 2 , J )
      C A L L  SOKRAS ( PC( 1 ) , PC( 2 ) )
      ISUM( 1 ) = ISUM( 1 )*PC( 2 )+ISUM( 2 )*PC( 1 )
      ISUM( 2 ) = ISUM( 2 )*PC( 2 )
    3 C A L L  SOKRAS( ISUM( 1 ) , ISUM( 2 ) )
      PC( 1 ) = X( 1 , I )*ISUM( 2 )-X( 2 , I )*ISUM( 1 )
      PC( 2 ) = X( 2 , I )*ISUM( 2 )
      C A L L  SOKRAS ( PC( 1 ) , PC( 2 ) )
      X( 1 , I ) = PC( 1 )*LU( 1 , IP , I )
      X( 2 , I ) = PC( 2 )*LU( 2 , IP , I )
    4 C A L L  SOKRAS( X( 1 , I ) , X( 2 , I ) )
      R E T U R N
      E N D
      S U B R O U T I N E  SOKRAS ( IA , IB )
      I M P L I C I T  I N T E G E R  *  4  ( A - Z )
C     Подпрограмма сокращения дробей
C     IA - числитель (он же носитель знака числа)
C     IB - знаменатель
C
       IF (IA.EQ.0) IB=1
       IF ( IB .LE. 0 ) S T O P  9999
      IK = MIN ( IABS( IA ) , IABS ( IB ) )
      I F ( IK .LE. 1 ) R E T U R N
   99 C O N T I N U E
        LCH = IA/IK
      IF ( LCH*IK .NE. IA ) GO TO 1
        LZN = IB/IK
      IF ( LZN*IK .NE. IB ) GO TO 1
        IA = LCH
        IB = LZN
      GO TO 99
   1  C O N T I N U E
      IK = IK-1
      IF ( IK .GT. 1 ) GO TO 99
      R E T U R N
      E N D
      I M P L I C I T  I N T E G E R * 4 ( A - Z )
C
C    Тестовая программа
C
    PARAMETER(N=3)
      I N T E G E R * 4  LU( 2,N,N)
      DIMENSION IPS( N ) , SCALES(2,N)  
C143
      DIMENSION B(2,N),X(2,N)
      CALL BACKW1(N,LU,B,SCALES,IPS,X)
       STOP 10
    END
 
       SUBROUTINE BACKW1(N,LU,B,SCALES,IPS,X,IERR)
       I M P L I C I T  I N T E G E R * 4 ( A - H , O - Z )
       D I M E N S I O N  IPS( N ) , SCALES( N , 2 )  
     *  , B( N , 2 ) , X ( N , 2 ) , LU( N , N , 2)
       DO 1 I=1,N
        B(I,1)=0
        B(I,2)=1
        DO 1 J=1,N
        LU(J,I,1)=1
    1 LU(J,I,2)=1
       B(2,1)=1
       DO 2 I=1,N
       DO 2 J=2,N
    2 LU(I,J,1)=(1-I)**(J-1)
       CALL DECOMP (N,N,LU,IPS,SCALES,IERR)  
       CALL SOLVE(N,N,LU,B,X,IPS)
       WRITE (*,10) (X(I,1),X(I,2), I=1,N)
       RETURN
   10  FORMAT(1X,1P,I5,'/',I5)
    END

Всего записей: 231 | Зарегистр. 24-07-2005 | Отправлено: 16:29 08-04-2020
KChernov



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

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 18:08 08-04-2020 | Исправлено: KChernov, 21:46 08-04-2020
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я за свои 72 года видел много хвастунов, которые раздвигали пальцы и грозились "перегнать Америку".  Я им в ответ напоминал слова одного известного (в мои юношеские годы) программиста - "...зато моя программа реально работает, а Вашей еще и в помине нет!
Видно Вы и настоящих фортрановских прог не видели, таких, например, как RELAP, ATHLET или CATHARE для расчетного обоснования безопасности АЭС, каждый под 100000 строк коди и более.
Много в России "умельцев" грозились перевести эти коды "в современные формы", но кишка оказалась тонка - "..и уходили они с позором..".

Всего записей: 231 | Зарегистр. 24-07-2005 | Отправлено: 20:13 08-04-2020
SergeSerge3leo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
Художника, каждый охаить может, художника понять трудно.
 
Eugeen
Ну а публикация, реально же, тяп-ляп:

  1. "Старое" форматирование Fortran-66 не выдержано. Например, перед END меньше 6 пробелов. Вероятно, по причине не использования тэгов "code" http://forum.ru-board.com/board/codes.html ;
  2. В тесте вызываются DECOMP()/SOLVE() о шести аргументов, а определены LUFACT()/LUSOLV() о пяти аргументах.
  3. ...

 
Так что, вместо быстрой альтернативы поиску модуля объектов рациональной арифметики для современного Fortran, честно говоря, черти что.
 
P.S.
Да, в "точной" рациональной арифметике есть катастрофическая проблема с ростом знаменателей и числителей, поэтому о широкой применимости речи нет.   Говорят, "приближенная" рациональная арифметика имеет перспективу

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 20:43 08-04-2020 | Исправлено: SergeSerge3leo, 21:06 08-04-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
 
гы, жЫвой :)
 

Цитата:
для расчетного обоснования безопасности АЭС

Цитата:
место жительства: Обнинск
куда я только попал :)

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 20:47 08-04-2020
KChernov



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

Цитата:
гы, жЫвой  

Не дождётесь!
 

Цитата:
для расчетного обоснования безопасности АЭС
Цитата:
место жительства: Обнинск
куда я только попал

Да, да, ФЭИ
 
 
SergeSerge3leo

Цитата:
Художника, каждый охаить может, художника понять трудно.  

Ух и навидался я подобных художеств (и имхо они от слова худо)
Включая коды, где всё в одном файле (уже не помню, было там больше 1Мб кода или нет, но с условной компиляцией на моей дубовой коре2 7200 оно перед каждым запуском минут по 15 компилировалось()
Во времена БЭСМ-6 подобный стиль был аппаратно обусловлен, а сейчас не стоит приучать молодёжь к плохому - она сама способная
 
 
Eugeen
А мне вот интересно, а на что вы собственно надеялись публикуя своё код в теме, где в первую очередь студенты задачки решают, но в контексте оптимизированного кода?
Ибо для оптимизированных решений уж точно стоит применять оптимизированные алгоритмы. Например про алгоритм Евклида что-нибудь приходилось слышать?
 

Цитата:
...зато моя программа реально работает, а Вашей еще и в помине нет!  

Нет, я верю, что на БЭСМ-6 этот код работал.
Но я также уверен, что он будет так себе работать сейчас для современных размерностей задач. Так что я бы не стал так просто бросаться такими утверждениями - ваша программа РАБОТАЛА и РЕШАЛА те старые задачи.
 

Цитата:
Видно Вы и настоящих фортрановских прог не видели, таких, например, как RELAP, ATHLET или CATHARE для расчетного обоснования безопасности АЭС, каждый под 100000 строк коди и более.

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

Цитата:
Много в России "умельцев" грозились перевести эти коды "в современные формы", но кишка оказалась тонка - "..и уходили они с позором.."

Так молодёжь просто приходила, видела эти >100000 строк коды, с гулькин хрен зарплаты (особенно по сравнению с начальством) + мутные перспективы (ибо в первую очередь двигали своих), и те, кто действительно был способен что-то подобное сделать (а не просто править готовые коды, постепенно превращая их в монстров), просто находили себе нормальную работу - плавали, знаем.
 

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 21:46 08-04-2020 | Исправлено: KChernov, 21:50 08-04-2020
akaGM

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

Цитата:
А мне вот интересно, а на что вы собственно надеялись публикуя своё код в теме
кстати, да...
присоединюсь к вопросу:
"на фига?"
 

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

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 00:39 09-04-2020
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1.Вообще-то это фортран, который был на т.н. ЕС ЭВМ (плохая копия с IBM\360). Текст здесь конечно не выровнен, каюсь, но знатокам это - раз плюнуть.
2. Я не из ФЭИ (из ВО "Безопасность", руководитель экспертизы безопасности АЭС)
3. Так уж сложилось, что коды, о которых я упомянул, писались поколениями из-за сложности и проблем верификации и валидации. После Чернобыля и Фукусимы требования к таким кодам существенно возросло. Там ведь в "одном флаконе" и многофазная неравновесная гидродинамика (1D-3D) температурные поля (3D) и нейтронная кинетика (3D), химические реакции (металл-водные, кориум-жертвенный материал и т.п.), механика (динамика турбины, насосов) + взаимодействие с АСУ ТП блока АЭС и еще куча всяких примочек, понятных только спецам в безопасности. Понятно, что никакая молодежь сейчас не способна системно охватить такую проблему, хотя спецам деньги у нас предлагаются ~ 150 000 р\мес. Нет даже желающих работать в этой сфере, хотя мы посылаем своих спецов повышать квалификацию в МАГАТЭ, в GRS (под Мюнхеном).  
Вот и до наведения "марафета" в программном хозяйстве руки уже не доходят.
По моим (проверенным) сведениям фортран до сих пор серьезно поддерживается именно благодаря и МАГАТЭ и национальным регуляторам, таким как US NRC иначе проблемы с безопасностью ядерно- и радиационно- опасных объектов по всему миру. А Гераклов, способных всё вышеупомянутое сделать на Питоне пока не видно, похоже я уже не доживу.  
4. В старых компиляторах фортрана (БЭСМ-6, ЕС ЭВМ)  можно было хулиганить. Напр. в ПП определять COMMON (1), а внутри этого  строить свои структуры, массивы и еще черти што. Главное  - удобство и понимание выравнивания границ. В формальных и фактических параметрах ПП можно было иметь разное количество параметров.  
 5. Что касается решения задач в простых дробях, то я ни разу не наблюдал катастрофического роста несокращаемых дробей. Может знатоки подскажут такой пример?

Всего записей: 231 | Зарегистр. 24-07-2005 | Отправлено: 00:45 09-04-2020
akaGM

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

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 01:00 09-04-2020
Igorr

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

Цитата:
По моим (проверенным) сведениям фортран до сих пор серьезно поддерживается именно благодаря и МАГАТЭ и национальным регуляторам

Возможно не только: напр. подразделения НАСА также интенсивно используют Фортран.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 01:39 09-04-2020
akaGM

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

Цитата:
МАГАТЭ
НАСА
в общем топ выявил двух потенциальных засланцев :)

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 01:58 09-04-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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