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

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

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lapochka ili Chai
абсолютно с тобой согласен
хотя, велосипеды иногда всё же полезно изобретать, пусть и одноколёсные :)
моя powerN() == floor(log())
 

Цитата:
Век живи -- век учись

хотелось банальное "дураком помрёшь",
но на самом деле меня самого Фортран тоже иногда поражает своей неизведанностью и непредсказуемостью,
хотя последнее относится скорее к реализациям...

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 15:56 14-05-2011 | Исправлено: akaGM, 16:53 14-05-2011
Lapochka ili Chai



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
 
Кстати, мне функции floor и ceiling нравятся, поскольку  
(1) они рекомендованы в книге "Конкретная математика" Грэхема, Кнута и Паташника;
(2) сами названия остроумны и симметричны, так что, вероятно, станут универсальными... со временем;
(3) обычная функция int какая-то уродливая -- для положительных и отрицательных работает по-разному. Меня всегда это бесило: необходимость обрабатывать знак там, где это может сделать функция. Я даже не могу представить, какому мутанту пришла в голову столь неудачная мысль заложить в алгоритмический язык столь уродливую функцию.
 
Между прочим, термин "Конкретная математика" = "Concrete mathematics" = "Continuous and discrete mathematics", то есть континуальная и дискретная математика.  
Тоже остроумно, т.к. concrete = конкретный, но это же и "бетонный", "железобетонный", "крепкий как бетон" -- т.е. это не какие-то там гомоморфизмы и кобордизмы, а конкретные вычислительные рабочие лошадки, благодаря которым летают самолёты, едут паровозы и плавают пароходы )

Всего записей: 847 | Зарегистр. 27-11-2003 | Отправлено: 19:40 14-05-2011 | Исправлено: Lapochka ili Chai, 19:41 14-05-2011
akaGM

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

Цитата:
(2) сами названия остроумны и симметричны, так что, вероятно, станут универсальными... со временем;

стали:
если ты придёшь на С или Delphi, то обнаружишь и там floor(), ceil()
только на фортране последняя ceiling() называется
паскаль в системной библиотеке до кучи ещё содержит round() и trunc()
 

Цитата:
"Конкретная математика"

да, по-пацански :)
чиста...

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 19:54 14-05-2011
karakurt2



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

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 19:20 17-05-2011 | Исправлено: karakurt2, 19:29 17-05-2011
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Знатоки-практики по OpenMP:
надо научиться работать с OpenMP на
Intel Visual Fortran Compiler (11.1 professional edition) + IMSL.
В этой связке должна создаваться 32-битная DLL с OpenMP инструкциями и вызываться из Сишной программы. Все это создается в Visual Studio 2008, т.е. имеем "решение" из 2-х "проектов" (фортран и си).
 
Какие "буквари" по OpenMP (шапку уже посмотрел) надо освоить, чтобы научиться грамотно работать с этой технологией за время не более дней 10 (т.е. часов за ~120)?

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 06:45 19-05-2011
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
Имхо, спецификаций OpenMP вполне достаточно, он не так сложен как скажем MPI и концептуально и технически ничего сложного там нет. Пару дней должно быть за глаза. Основная проблема с параллелизацией процессов, именно здесь могут возникнуть сложности и естественно зависит от того что именно вы пытаетесь "распараллелить".

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 19:20 19-05-2011
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FuzzyLogic
Действительно, вроде на первый взгляд не очень сложно, но такой принцип работы вводит в ступор (M. Hermanns, "Parallel Programming in Fortran 95 using OpenMP"):

Цитата:
Since each thread is executing part of the iterations of the do-loop and the updates of
the modifications made to the variables are not ensured until the end of the work-sharing
construct, the following example will not work correctly using the !$OMP DO/!$OMP END
DO directive-pair for its parallelization:

Код:
real(8) :: A(1000), B(1000)
do i = 1, 1000
B(i) = 10 * i
A(i) = A(i) + B(i)
enddo

because the correct value of the matrix B is not ensured until the end of the worksharing
construct !$OMP END DO.

Учимся дальше.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 00:09 21-05-2011
DeadVillage



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

Цитата:
Ничего себе! -- в первый раз такое вижу!

 
в первый раз видите чтобы такое спрашивали? или такой формат?
 

Всего записей: 652 | Зарегистр. 05-12-2003 | Отправлено: 03:39 21-05-2011
Novichok1981

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Уже не раз пробегал здесь на форуме вопрос про библотеки, которые могут распознавать текстовую строку с формулой. Например на стр. 132. Подобный вопрос возникал у  Andrew10, а aleksiu выкладывал ссылку на свою реализацию такой библиотеки (libFortran.zip) Может кто-нибудь богат такой библиотекой и поделится, желательно вместе с кодом.
Заранее спасибо!

Всего записей: 4 | Зарегистр. 06-03-2009 | Отправлено: 16:29 21-05-2011
akaGM

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

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 16:57 21-05-2011
Novichok1981

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, akaGM!
 То, что нужно!

Всего записей: 4 | Зарегистр. 06-03-2009 | Отправлено: 23:53 21-05-2011
akaGM

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

Всего записей: 24052 | Зарегистр. 06-12-2002 | Отправлено: 00:06 27-05-2011 | Исправлено: akaGM, 00:07 27-05-2011
MikhalVasylevich

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Пмогите плз. советом как боротся с проблемой Segmentation fault. В режиме принудительного вывода call flush()  програма проходит до конца нормально. Kак только убираю call flush() возникает кирдык настает. Как вообще оптимально проводить дебаг  Segmentation fault ?
 
p.s. compiler: intel fortran for linux.

Всего записей: 21 | Зарегистр. 06-09-2006 | Отправлено: 18:47 28-05-2011
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
Обычно segfault это признак непорядка с памятью, типа объявления массива на 10 эл-тов и писания в 11ый. Добавляйте -check bounds к опциям компилятора и запускайте.
Только не забудьте убрать когда поймаете, так как данная опция значительно тормозит выполнение программы.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 09:42 29-05-2011 | Исправлено: FuzzyLogic, 09:43 29-05-2011
MikhalVasylevich

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2  FuzzyLogic. Cпасибо за инфу. Проблема решается (временно) понижением уровня оптимизации компилятора (с -О3  на  -О1)
в одном месте кода есть аллокация массива
allocatе  ( Н(N,N), Stat = ifail )  
где N перед этим вычисляется, возможно при -О3 оптимизации массив определяется некоректно.
Правда ifail = 0 выдает.
Буду разбираться дальше, поскольку все-таки желательно считать на -О3 уровне оптмз.

Всего записей: 21 | Зарегистр. 06-09-2006 | Отправлено: 16:50 29-05-2011
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
нарушение памяти может быть вызвано не только обращением за границы массива, это всего лишь одна из причин. запустите отладчик, дождитесь, когда возникнет исключительная ситуация и анализируйте код, где произошло нарушение. не думаю, что причиной является библиотечная функция.

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 17:26 29-05-2011 | Исправлено: karakurt2, 17:28 29-05-2011
busmaster



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
Компиляторы при агрессивной оптимизации тоже могут ошибаться. Для надежности я бы протранслировал код на альтернативном компиляторе, если есть такая возможность.

Всего записей: 228 | Зарегистр. 11-06-2002 | Отправлено: 22:36 31-05-2011
MikhalVasylevich

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Короче, можно сказать разобрался я с проблемой Segfault. Переписал наново проблемную сабрутину.    
ORTHO(F,......Nmax,N), которая ортогонализирует (по Шмидту) Nmax векторов, плюс еще там довольно хитрый алгоритм зашит, который выделяет  N "most independent" векторов, которые далее исользуються и пишутся на выход в тот же масив F, что и входные векторы. В ощем трабла была где-то в этом внутреннем переопределении. В оригинальной "сабре" использовался только масив F для всех внутренних расчетов. Прога работала нормально при не очень больших Nmax (< 1000), в моей задаче N ~ 5000 и прога вылетала при -о3 оптимиции. При -о0 казалось работала, но при некоторых параматрах вылетала (правда с другой ошибкой) даже при - о0. Следовательно это ошибка все-таки кодера а не компилятора ? програма написана на фортране90. Все массивы были allocatable. Искать ошибку во всем этом спегетти-образном алгоритме ну его нафик. В результате, я добавил в сабру служебный массив Fx, для временного хранения промежуточных результатов и немного упростил реализацию алгоритма - все работает нормально.  
Большое спасибо всем за помощь и советы
 
Добавлено:
В догонку.
Все таки решил немного попробовать поискать ошибкув старом коде.
Помнится, после некоторых экспериментов выдавало сообщение об ошибке ,что-то типа:
 
memory DEALLOCATED  0x131.....   (числа не помню)  
 
Открыл сейчас интел-дебаггер  idb, но пока изучаю мануал, опыта общения с дебаггером пока нет.
Не подскажите где лучше почитать о структуре комп. "памяти" как там все организовано, и с  чем это едят.
Как определить какой процес обращается к конкретной ячейке памяти и все такое.
 

Всего записей: 21 | Зарегистр. 06-09-2006 | Отправлено: 13:09 01-06-2011 | Исправлено: MikhalVasylevich, 13:10 01-06-2011
HailRuBoard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, название софта (открытого или торренто-скачиваемого):
 
1. компилятор фортран под linux (ubuntu)
Ранее использовал gfortran, нареканий не было, но, может, вы посоветуете что-то с высоты
своего опыта.
 
2. визуальный дебаггер для фортрана
ранее использовал ddd (data display debugger). С ним была проблема - хотелось
бы заменить.  
 
Проблема следующая - предположим у меня есть в теле программы переменная  
типа integer. В ходе выполнения программы этой переменной присваевается значение,
например, число 2, затем эта переменная передается в subroutine.
Теперь проблема: Если попросить дебаггер показать значение переменной,
полученной subroutine-ой, то он вместо значения 2 (integer) покажет не 2, а "что-то еще".
Похоже, что дебаггер показывает адрес ячейки памяти переменной, переданной в subroutine, в которую записано число 2. Я думаю, что это связано с тем, что дебаггер  
заточен под C, где нужно указывать значение передается или адрес ячейки, в которой  
записано значение. Отсюда я сделал вывод, что хотя ddd и рекомендован для  
использования с фортран, он под него "не заточен". По этой причине я ищу другой  
дебаггер.
 
3. программу для удбного рисования блок схем. Под блок схемами я имею в виду  
прямоугольники (ромбы, эллипсы и т.п.), которые связываются линиями и которые
представляют собой графическое представление алгоритма программы.
 
Заранее спасибо.

Всего записей: 34 | Зарегистр. 17-09-2007 | Отправлено: 15:11 01-06-2011
Vskazka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HailRuBoard
Компиляторы и под линух и под винды
http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=4530&start=0#lt
относителшьно дебагера для линуха - там и спросите, возможно и сказано как. Под винды лучше взять VS2010
http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=47368&start=0#lt
что-то можно узнать и здесь для виндов
http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=4836&start=0#lt

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

Возьмите microsoft visio. - опять же под винды. Как раз для такого дела создан Можно начать отсюда
http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=48355&start=0#lt
 
 

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 15:45 01-06-2011
Открыть новую тему     Написать ответ в эту тему

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