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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Хорошо, постараюсь за пару дней посмотреть, наверное, быстро не сделаю, таки в современном FORTRAN'е я не такой дока, как некоторые тут)

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 02:52 20-01-2011
akaGM

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

Цитата:
Хорошо, постараюсь за пару дней посмотреть

норм... согласен на пару недель...

Цитата:
таки в современном FORTRAN'е я не такой дока, как некоторые тут

увы, я тоже...
кроме freeform, модулей, allocate/deallocate и пары языковых конструкций ничего больше не имею в активе
 
а кстати, ты скажи мне формат своих целевых функций и на каком языке у тебя всё это обычно ходит, я сам тебе напишу?
 
terminat0r
ok, спас...
щас вот ещё у себя ссылку на "fortran & xml" найду, когда в своё время искал, это единственное что нашлось...

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 06:19 20-01-2011
klimusu



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

Всего записей: 931 | Зарегистр. 23-01-2006 | Отправлено: 19:26 22-01-2011
bubanoid



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
klimusu
Я совершенно не эксперт, и вам здесь дадут гораздо более квалифицированную помощь чем могу предложить я. Но так как сегодня вечер субботы...
 
Распараллеливание. Ищите по этому слову.
 
И побейте меня камнями, если (в силу очевидности моего ответа) вы уже это гуглили и ничего на этот счёт не нашли.
 
Добавлено:
Выше я упоминал об очень медленном выполнении такой команды:
Код:
break(:,2)=EOSHIFT(break(:,2), SHIFT = shift)
команда выполнялась медленно (минуту) только потому, что я в Visual Studio я трассировал эту строку. Если её проскочить, то она выполняется мгновенно. Можно, конечно, было поставить таймер и сравнить скорость выполнения этой функции с моей аналогичной функцией, но лениво. Это не есть критичное место в моей проге влияющее на общую производительность. Потому вопрос об оптимизированности функции EOSHIFT остаётся открытым.
 
Также мне надо было выполнить следующее:
Код:
cscoef(:,:,2)=EOSHIFT(cscoef(:,:,2), SHIFT = shift, dim=2)
К сожалению, сие не работает для больших массивов. В студии выскакивет ассемблерное окно указывающее на переполнение буфера? стека?. Пробую через промежуточный массив:
Код:
cscoef2(:,:,2)=EOSHIFT(cscoef(:,:,2), SHIFT = shift, dim=2) ! и это тоже не работает

делаю так:

Код:
if (shift>0) then
!  cscoef(:,1:ndata-shift,2)=cscoef(:,shift+1:ndata,2)      ! не работает
   cscoef2(:,1:ndata-shift,2)=cscoef(:,shift+1:ndata,2)     ! работает  
else
   cscoef2(:,1-shift:ndata,2)=cscoef(:,1:ndata+shift,2)     ! работает
endif
cscoef=cscoef2

(это, естественно, не полностью эквивалентно EOSHIFT, но в моём случае этого достаточно.)
или так

Код:
if (shift>0) then
   do i=1,ndata-shift                                        
     cscoef(:,i,2)=cscoef(:,i+shift,2)                 ! работает
   enddo
else
   do i=ndata,1-shift,-1                                    
     cscoef(:,i,2)=cscoef(:,i+shift,2)                  ! работает
   enddo
endif

 
Странно всё это. ну да фиг с ним. работает - ну и ладно.

Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 21:22 22-01-2011 | Исправлено: bubanoid, 22:01 22-01-2011
Ingve



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

Всего записей: 156 | Зарегистр. 26-11-2003 | Отправлено: 23:27 22-01-2011
KChernov



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

Цитата:
команда выполнялась медленно (минуту) только потому, что я в Visual Studio я трассировал эту строку

В смысле? Точка останова? Или вывод промежуточной версии массива?
 

Цитата:
В студии выскакивет ассемблерное окно указывающее на переполнение буфера? стека?

Ну так оно же где-то должно промежуточный массив создать.
Увеличьте буфер (делается в настройках проекта).

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 00:35 23-01-2011
akaGM

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

Цитата:
В студии выскакивет ассемблерное окно указывающее на переполнение буфера? стека?.  
вообще-то это окно должно с заголовком выскакивать,...
а что окно ErrorList, молчит? а другие?
а может это просто трассировка библиотечной функции...
конфиг-то какой: релиз, дебаг? если первый, то поставь второй...

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 01:54 23-01-2011
bubanoid



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MS VS 2005 + Intel Fortran 9.1 + IMSL 5.0
 
KChernov

Цитата:
В смысле? Точка останова? Или вывод промежуточной версии массива?  

Делаю так. Ставлю точку останова на исследуемую строку break(:,2)=EOSHIFT(break(:,2), SHIFT = shift) и запускаю программу на выполнение. После останова на строке  
вариант a) жму F10 (Step Over), - строка выполняется минуту.  
вариант b) на следующей строке устанавливаю точку останова и запускаю программу на выполнение, - строка выполняется мгновенно.
 

Цитата:
Ну так оно же где-то должно промежуточный массив создать.
Увеличьте буфер (делается в настройках проекта).

Не знал, что это настраивается. Покопаюсь в настройках. Спасибо.
 
akaGM

Цитата:
вообще-то это окно должно с заголовком выскакивать,...
а что окно ErrorList, молчит? а другие?
а может это просто трассировка библиотечной функции...
конфиг-то какой: релиз, дебаг? если первый, то поставь второй...

Выскакивает chkstk.asm о котором написано:

Цитата:
;***
;chkstk.asm - C stack checking routine
;
;       Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
;       Provides support for automatic stack checking in C procedures
;       when stack checking is enabled.
;
;*******************************************************************************

В нём есть вот такие строки:

Код:
; Find next lower page and probe
cs20:
        sub     eax, _PAGESIZE_         ; decrease by PAGESIZE
        test    dword ptr [eax],eax     ; probe page.
        jmp     short cs10
 
_chkstk endp

где выполнение остановлено на строке "test". Окно ErrorList молчит. Конфиг Debug.

Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 18:56 23-01-2011 | Исправлено: bubanoid, 19:02 23-01-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bubanoid
да, это, скорее всего, переполнение стека...
1) или увеличивать его значение руками в линкере /stack (где там аналог в студии?)
2) или сокращать кол-во переменных, размещаемых в нём
 
кстати, а автономный .ехе тоже вылетает если запустить?

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 19:06 23-01-2011 | Исправлено: akaGM, 19:07 23-01-2011
bubanoid



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
2) сокращать кол-во переменных не получится
1) Оказывается, увеличить стек в студии очень просто!  
Property Pages>Configuration Properties>Linker>System>Stack Reserve Size
по умолчанию стоит 0, что означает 1MB. Значение стека следует указывать в байтах.
 
PS автономный exe-шник без увеличения стека тоже вылетает.

Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 19:46 23-01-2011 | Исправлено: bubanoid, 19:50 23-01-2011
akaGM

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

Цитата:
1) Оказывается, увеличить стек в студии очень просто!  

рад за неё...
 
ну так пошло?

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 21:21 23-01-2011
bubanoid



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
а-га! достаточно было лишь чуть-чуть подкрутить размер стека.
 
Добавлено
наверное, я созрел задавать следующий вопрос.  
 
Есть головная программа и один модуль. Билдю модуль в конфиге Debug, и также билдю программу в конфиге Debug - всё работает. Билдю модуль как Release - успешно, билдю головную программу как Release - ошибка на этапе линковки:  
 
Link: executing 'link'
Rho_new.obj : error LNK2019: unresolved external symbol _RHO_mp_R referenced in function _MAIN__
Rho_new.obj : error LNK2019: unresolved external symbol _RHO_mp_FR referenced in function _MAIN__
Rho_new.obj : error LNK2019: unresolved external symbol _RHO_mp_PI_FR referenced in function _MAIN__
....
 
Rho_new build failed.
 
RHO - название модуля
R, FR, PI_FR, etc - объекты, описанные в модуле и задекларированные для использования в программе: use Rho, only: r, fr, Pi_fr, etc...
 
Чего оно хочет?

Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 21:50 23-01-2011
akaGM

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

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 22:27 23-01-2011
bubanoid



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

Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 22:47 23-01-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bubanoid
ну тогда у тебя проект некорректно создан
дебаг = main + твой модуль, а для релиза модуль (RHO.f90) не подключён
вроде очевидно, судя по ошибкам линкера...

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 23:11 23-01-2011
bubanoid



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Очевидно, что не подключён. Только почему не подключается? Спрашиваю, так как надеюсь, что кто-то что-то сходу подскажет, без глубинного ковыряния с моей стороны. Пока грешу на кривость уставленной студии/фортрана.

Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 13:55 24-01-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bubanoid
Можно попробовать сравнить свойства линковки дебага и релиза. Возможно что-то сбилось.
Или просто попробовать создать новый проект.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 14:40 24-01-2011
akaGM

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

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 14:56 24-01-2011
bubanoid



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
akaGM
 
В Project Properties (головная программа) >Linker>Command Line>Additional Options слетело указание на используемые библиотеки. После того, как там вновь указал
 imsl.lib imsl_dll.lib imslscalar_dll.lib imslblas_dll.lib libguide40.lib Rho.lib
Всё заработало как надо. Создаётся билд как Debug так и Release. Вообще странно, что без этих строк линковалось (делал и Rebuild тоже) с моим модулем.
 
Ещё одну странность обнаружил... В Project Properties (модуля) отсутствует поле Linker! Даже после того, как делал Clean Solution закрывал проект и открывал его снова.

Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 19:14 24-01-2011
akaGM

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

Цитата:
В Project Properties (модуля) отсутствует поле Linker!

а зачем там оно?
если это чистый модуль, то его обычно только компилируют, но не линкуют...

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 19:43 24-01-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 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