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

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

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

akaGM

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

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

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


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

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



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

Цитата:
Цитата:
Антиресно, а что бы Вы (или Вам) в таковом отчёте написали бы про LUFACT()/LUSOLV() или про BACKW1()?
 
Вот типовые требования, принятые сейчас уже и в МАГАТЭ.  
Хм. Вы намекаете, что по требованиям МАГАТЭ и так сойдёт (как у Вас в LUFACT(), LUSOLV() и BACKW1())?
 
Я завидую атомщикам. Оно конечно, неработающая программа - достаточно безопасная программа, но, скажем, при сертификации по требованиям на средства криптографической защиты информации (СКЗИ) или по требованиям на программное обеспечение МКС, были бы проблемы.
 

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 23:17 10-04-2020 | Исправлено: SergeSerge3leo, 23:23 10-04-2020
Eugeen



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

Цитата:
Я завидую атомщикам. Оно конечно, неработающая программа - достаточно безопасная программа, но, скажем, при сертификации по требованиям на средства криптографической защиты информации (СКЗИ) или по требованиям на программное обеспечение МКС, были бы проблемы.

Ва прочитали требования? Там ведь еще и валидация!
 
Добавлено:
Все вопросы по кибербезопасности и защите инфы для АЭС решаются кардинально. Например в АСУ ТП АЭС запрещено использовать Windiws. Только системы с открытым кодом. И тд. и т.п. Разработчикам софта для эксплуатации АЭС достается по полной программе.
Но все Ваши замечания не относятся к верификации.

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

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

Цитата:
Например в АСУ ТП АЭС запрещено использовать Windiws
я б тоже запретил использовать украинский клон винды в А-энергетике...
 
//не удержался, бо офигел уже от этой изоляции...

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 02:55 11-04-2020
GeorgeMame

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

Цитата:
В тоже время, при использовании `real*10' с классической техникой накопления на повышенной точности в реализации скалярного произведения, а ля библиотека NAG x03ayf (x03aaf с sw=.true.), алгоритм Кнута, с которого собственно этот double-double и пошёл, ожидаемая потеря производительности десятки процентов (меньше двух раз) при сопоставимой точности.

 
Это на старом железе. У меня AVX512+FMA дает многократный прирост скорости.

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 16:17 19-05-2020
GeorgeMame

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

Цитата:
Вот, например, реализация для C++/Fortran https://www.davidhbailey.com/dhbsoftware/  

Поставил под цигвином QD:
команда
$ ./qd_timer -all -long
выдала результаты только для Timing double, dd_real и qd_real.

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 15:31 02-06-2020
SergeSerge3leo



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

Цитата:
$ ./qd_timer -all -long  
выдала результаты только для Timing double, dd_real и qd_real.

Так и должно быть.
 
Сравнения с нестандартными `long double' от Intel (ФОРТРАН  REAL(10)) и '__float128' от clang/gcc (ФОРТРАН  REAL(16)) имеют смысл только в рамках этой дискуссии и были добавлены в этот тест мною на коленке.
qd_timer.cpp.patch:
https://yadi.sk/d/W1f6fNB2-cYpqQ
 
P.S.

Цитата:
Это на старом железе. У меня AVX512+FMA дает многократный прирост скорости.

AVX512+FMA на ФОРТРАН это ж, либо REAL*4 (одинарная точность), либо REAL*8 (двойная точность), плюс автоматическая векторизация в компиляторе. Лично мне, этого почти всегда хватало, но речь же шла за реализацию четверной точности.  
 
Однако, есть подозрение, что даже простая библиотечная x03ayf() с накоплением на четверной точности будет не по зубам имеющимся компиляторам в смысле векторизации.  
 
Чисто технически, с использованием расширений языка C, таких как, OpenCL, векторов clang или векторов gcc, можно обеспечить эффективную AV512+FMA реализацию четверной точности (ну и SSE/AVX до кучи, вплоть до IBM Power, ARM...), т.к. в примитивах четверной точности ветвления весьма ограничены и векторизуются. Наверное, даже можно библиотеку BLAS для фортрановского типа `type (dd_real)' обеспечить.
 
Но нужно ли это кому в реальности? (гранты-шманты или иные признаки реальных потребностей этого мира)

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

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

Цитата:
речь же шла за реализацию четверной точности.

Именно это я и имел в виду при сравнении реализаций четверной точности с REAL*8  и REAL(10), когда обрабатывается не одно число, а массив (например, перемножение матриц, без эффективной реализации которой невозможно добиться высокой скорости алгоритмов линейной алгебры: например, решение систем линейных уравнений, сингулярного анализа и т.д. и т.п. Если Вы в пакете LAPACK поищете файлы, в которых задействована dgemm, то найдете порядка ста штук.). Например, при сложении трюк Кнута позволяет обойтись без сравнений, что обеспечивает однотипную параллельную обработку сразу 8 чисел на AVX512. Кстати, автор QD пишет, что надо быть осторожным при применении FMA, но почему, не говорит. У меня скорость перемножения матриц четверной точности в пять раз меньше скорости dgemm Intel MKL, у которой скорость просто фантастическая (на пределе возможностей железа). Само собой разумеется, что все ядра задействованы.

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 18:26 02-06-2020 | Исправлено: GeorgeMame, 19:46 02-06-2020
olpi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно узнать о какой четверной точности вы говорите? Если REAL(10) - то это не четверная точность, а всего лишь расширенная -  число имеет размер 10 байт (80 бит). Несмотря на то, что его реальный размер 16 байт, в числе заняты только первые 10 байт, остальные 6 байт - пустые. В десятичном выражении такое число хранит только 19 цифр. А с реальной четверной точностью (тип REAL(16)) счет будет идти на порядок медленнее.
Еще не понятно, в чем преимущества библиотеки QD по  сравнению с использованием типа REAL(16). Установил эту библиотеку, прогнал одну и ту же программу с типом DD_REAL и  исходную программу с типом REAL(16). Так вот с типом DD_REAL время счета оказалось только в 1,9 раза (т.е., примерно в 2) меньше чем с типом REAL(16).
Компилятор - gfortran, в обоих случаях ставил опцию -Ofast, т.е. оптимизация по быстродействию
Задача - численное интегрирование уравнений движения многих (10) тел, движущихся относительно друг друга и притягивающих друг друга

Всего записей: 116 | Зарегистр. 17-05-2008 | Отправлено: 19:44 25-09-2020 | Исправлено: olpi, 19:47 25-09-2020
SergeSerge3leo



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

Цитата:
Еще не понятно, в чем преимущества библиотеки QD по  сравнению с использованием типа REAL(16). Установил эту библиотеку, прогнал одну и ту же программу с типом DD_REAL и  исходную программу с типом REAL(16). Так вот с типом DD_REAL время счета оказалось только в 1,9 раза (т.е., примерно в 2) меньше чем с типом REAL(16)
Стало быть такая задача и такой процессор, что всего 1.9 раз. Маловато, конечно, возможно память медленная или процессор перегревается, а что на вашем процессоре показывает "qd_timer -all -long"?
 
Да, а улучшение во сколько раз Вам требуется, что бы стали понятны не только недостатки, но и преимущества `type (dd_real)' перед `real*16'?

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 03:43 03-10-2020 | Исправлено: SergeSerge3leo, 03:56 03-10-2020
yamn2020

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
чё вы тут обсуждаете? создать у себя гитхаб? перепишу весь фортран на машины-е коды ? p.s. тараканов в клаве буду давить

Всего записей: 59 | Зарегистр. 22-12-2018 | Отправлено: 05:27 03-10-2020 | Исправлено: yamn2020, 05:30 03-10-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а ты что тут забыл, с флеймом перепутал?

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 12:32 03-10-2020
SergeSerge3leo



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

Цитата:
Кстати, автор QD пишет, что надо быть осторожным при применении FMA, но почему, не говорит.

Как бы, FMA (Fused Multiply-Add), в частности, предназначен для повышения точности, типа, вычисление a*b ± c будет содержать только одну ошибку округления. Но... есть нюансы, например в деле sqrt(x**2 - y**2), где x .ge. y. Например:

Код:
      implicit none
 
      common /unopt/ m1, m2
      volatile m1, m2
      real*8 m1, m2
      data m1, m2 / 3.00000000000000044d0, 3.00000000000000044d0 /
 
      print *, (m1*m1) - (m2*m2)
      print *,  m1*m1  - (m2*m2)
      print *, (m1*m1) -  m2*m2  
      print *,  m1*m1  -  m2*m2  
 
      stop
      end

Для управления разрешением и запретом использования FMA в FORTRAN, как и в C++, нет стандартизованых методов. Так что, с этими ключами надо осторожно, результаты бывают неочевидны:

Код:
$ gfortran-mp-10 -Ofast -fprotect-parens -mavx2 -mfma check_fma.f && ./a.out  
   0.0000000000000000      
  -8.8817841970012504E-016
   8.8817841970012504E-016
  -8.8817841970012504E-016

Честно говоря, я для gfortran не знаю intrinsic для использования FMA в явном виде, без необходимости в `-Ofast' и/или иных ключей компиляции.

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

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чему равно максимальное число вложенных циклов в 19 версии интеловского фортрана?

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 12:13 11-11-2020 | Исправлено: GeorgeMame, 12:19 11-11-2020
GeorgeMame

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

Цитата:
Чему равно максимальное число вложенных циклов в 19 версии интеловского фортрана?

512

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 23:45 11-11-2020
Igorr

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

Цитата:
Чему равно максимальное число вложенных циклов в 19 версии интеловского фортрана?

Здесь (и другие ограничения): Intel® Fortran Compiler 19.1 Developer Guide and Reference: Compiler Limits

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 04:27 12-11-2020
KChernov



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

Цитата:
Чему равно максимальное число вложенных циклов в 19 версии интеловского фортрана?
512

Это в на всю программу или внутри одной области видимости?
Просто если второе, то с учётом отсутствия в субже средств кодогенерации, это какое-то фантастическое число

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 09:17 12-11-2020
SergeSerge3leo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DO, CASE, FORALL, WHERE, and block IF statement nesting (combined) - 512

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 11:24 12-11-2020 | Исправлено: SergeSerge3leo, 11:25 12-11-2020
GeorgeMame

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

Цитата:
это какое-то фантастическое число

Отнють не фантастическое: в продвинутых алгоритмах начальные и конечные  значения параметра цикла являются переменными и при их совпадении переход к внутренним циклам является линейным по времени.

Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 11:51 12-11-2020 | Исправлено: GeorgeMame, 11:55 12-11-2020
KChernov



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

Цитата:
начальные и конечные  значения параметра цикла являются переменными и при их совпадении переход к внутренним циклам является линейным по времени

А можно на русский перевести? А то больше на поток сознания похоже(

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 13:00 12-11-2020 | Исправлено: KChernov, 21:43 12-11-2020
Igorr

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

Цитата:
Это в на всю программу или внутри одной области видимости?

Из приведённой мной выше ссылки:

Цитата:
The table below shows the limits to the size and complexity of a single Intel® Fortran program unit and to individual statements contained within it

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 19:18 12-11-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 330

Компьютерный форум 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