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

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CurlyDevil
ну попробуй, например, TOMS 545 или 749
http://netlib.org/toms/
 
или на GAMSe поищи:
http://gams.nist.gov/cgi-bin/serve.cgi/Class/J1

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:05 31-01-2011
beam2005

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулся вот с такой проблемой. Программирую на Fortran'е в среде
Compaq Visual Fortran Professional Edition 6.6c (CVF).
Хотелось бы в процессе выполнения программы быть
уверенным, что вычисления производятся правильно без возникновения
непредвиденных ситуаций таких, в частности, как деление на нуль.
При этом хочется чтобы при возникновении непредвиденной ситуации программа
автоматически не заканчивала свою работу, а выдавала соответствующее предупреждение.
При компиляции тестовой программы, в которой осуществляется деление на нуль,
в конфигурации Win32 Debug с дерективой \fpe:3 (floating Point Exception Handling)
контрольное слово процессора с плавающей точкой имеет значение 1001111.
То есть, допускаются все критические ситуации, в частности, деление на нуль.
Вызвав процедуру GETSTATUSFPQQ после деления на нуль получаю
значение статусного слова процессора с плавающей точкой 100000000000100.
То есть, обнаружено деление на нуль.
При компиляции же тестовой программы в конфигурации Win32 Release с дерективой  \fpe:3 и Full Optimization (Optimization Level) значение статусного слова процессора с  
плавающей точкой 100000000000000.
То есть, деление на нуль не обнаруживается.
Хотя с дерективой None (Optimization Level) все нормально (деление на нуль  
обнаруживается)?  В работающей программе в конфигурации Win32 Release, на
мой взгляд, для ускорения ее работы естественно задавать Full Optimization (Optimization Level). Как быть? Может кто сталкивался с такой проблемой?

Всего записей: 85 | Зарегистр. 26-07-2005 | Отправлено: 20:44 31-01-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
beam2005
вообще говоря, фулл оптимизация -- не всегда хорошо, попробуй /O2 (дефолт) или /О3
как правило, выше /О3 не рекомендуют...
 
помню была такая статейка "как защититься от оптимизирующего компилятора"
очень пользительная...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 21:08 31-01-2011
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CurlyDevil
Ecть кое-что на отзеркаленной страничке Алана Миллера. Конкретно:
 
fft.f90 Fast Fourier Transform (FFT) for any length of series which has no prime factor greater than 23. Also the inverse and multivariate FFT. (комплексные числа идут, но с вывертом)
 
singlton.f90 The classic Singleton multi-dimensional FFT algorithm for series whose length is not necessarily a power of 2.
 
fft_simple.f90 A simple Fast Fourier routine for the case in which the series length is a power of 2.
 
chirp.f90 The Chirp-Z algorithm for the FFT of a series of any length.
 
fft235.f90 Fast Fourier Transform for the case in which the series length is a multiple of some or all of the integers 2, 3 and 5 (e.g. length = 60 or 240).
 
hartly2d.f90 Hartley 2D Fast Fourier Transform.
 
А вообще там, по идее, изначально комплексные числа закладываются, для FFT, это вот в Numerical Recipes объясняют. Если надо, могу скинуть.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 22:13 31-01-2011
CurlyDevil



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
Спасибо! Вот бы еще сравнить их вычислительную эффективность (т.е. мне важно, чтобы они работали как можно быстрее)!

Всего записей: 121 | Зарегистр. 19-09-2003 | Отправлено: 22:51 31-01-2011
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CurlyDevil
По поводу быстродействия REAL(16) и COMPLEX(16) в IVF, и REAL(8) и COMPLEX(8) в CVF - у меня на проце Athlon64 IVF медленнее чем CVF в ~3-4 раза(!) без всяких оптимизаций (в Debug). В причинах не разбирался - возможно IVF надо "тонко" настраивать, но пока хватило точности DOUBLE PRECISION в CVF. Если есть аналогичные сравнения, было бы интересно узнать их результаты для других процессоров.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 23:30 31-01-2011
XPEHOMETP

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

Цитата:
у меня на проце Athlon64 IVF медленнее чем CVF в ~3-4 раза(!)

AMD неоднократно ругались на Intel, что их компиляторы делают программы, которые на процах от AMD тормозят. Вредят конкуренту!
 
CurlyDevil
Вычислительная эффективность зависит от алгоритма. Классика - когда берется число точек, кратное двум, просто алгоритм радикально упрощает вычисления. Соответственно, когда берутся делать FFT, раскладывая число на множители вплоть до 23, многократно теряют в скорости. Ну, иногда надо!

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 23:46 31-01-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AMD vs Intel
 
из нашей шапки:

Цитата:
проблема Интел-компиляторов на AMD-процессорах
* описание проблемы
* патч для бинарников
 
http://www.swallowtail.org/naughty-intel.shtml
http://www.swallowtail.org/intel_check_executable_patch.gz

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 00:02 01-02-2011
CurlyDevil



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
То что quad precision вычисления идут существенно дольше совершенно нестранно, так как их нельзя сделать в регистрах процессора, а приходится мухлевать -- использовать алгоритмы длинной арифметики.

Всего записей: 121 | Зарегистр. 19-09-2003 | Отправлено: 03:01 01-02-2011
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На счет происков Интела - похоже, "были демоны, мы не отрицаем, но они дематериализовались!" (из "Ивана Васильевича"). Посмотрел тут бенчмарк разных компиляторов на Интелловском Core i7 920 и AMD Phenom II. Ну нет принципиальных различий! Похоже, Интел испужался и перестал гадить конкурентам. Или AMD так наловчились подделываться под Интеловские процессоры, что происки конкурентов им теперь пофиг. Тем не менее. Что Salford FTN95 нагло облажался по всем статьям, это не удивительно. Его стандартное состояние. Удивительно, что фигово показал себя G95, который вроде до недавнего времени был очень приличным компилятором. Весьма неплохо, кроме Интела, показал себя Абсофт.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 10:17 01-02-2011
terminat0r



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

Цитата:
Весьма неплохо, кроме Интела, показал себя Абсофт.
Ну учитивая его дерьмовость до недавного времени и этот бенчмарк как краеугольный камень их маркетинговой политики, не удивлюсь если они работали последние годы именно с этими приложениями допиливая на ходу свой компилятор. Брал я их студию и компилятор на пробу год назад. Ничего конкретного не помню, но смотрелось уныло. Никаких 20 % прироста я не получил, зато помню  что ихняя так называемая "студия" вообще выглядит как блокнот и по возможностям не превосходит его. Да что там, мой блокнот может намного больше. И за это - такие деньги?
 
А бенчмарк полигедрона это не последнее слово, вообще по моему они немного того, когда пишут "64 bit Fortran Execution Time Benchmarks" и добавляют туда Sun 8.5 который никогда не был 64-битным под линуксом (только солярка) и судя по действиям оракла уже никогда и не будет.
 
Кроме того они даже не умеют читать документацию, вот их строка оптимизации:
 
gfortran -march=native -ffast-math -funroll-loops -O3
 
а вот документация

Цитата:
 
-ffast-math
    Sets -fno-math-errno, -funsafe-math-optimizations, -ffinite-math-only, -fno-rounding-math, -fno-signaling-nans and -fcx-limited-range.
 
    This option causes the preprocessor macro __FAST_MATH__ to be defined.
 
    This option is not turned on by any -O option besides -Ofast since it can result in incorrect output for programs which depend on an exact implementation of IEEE or ISO rules/specifications for math functions. It may, however, yield faster code for programs that do not require the guarantees of these specifications.  

 
Я не знаю человека который бы с удовольствием включал эту опцию. Конечно, этим пользуются производители разных кодеков потому что им почти всегда пофиг точность. Но для научных программ этой опции нет применения.

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 12:17 01-02-2011 | Исправлено: terminat0r, 12:48 01-02-2011
Lapochka ili Chai



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, есть комп на процессоре Intel® Core™ i7 Q 820 @ 1.73GHz,  имеющем 4 ядра + гипертрейдинг, дающие в целом 8 нитей (threads).
 
Хочется сделать ФОРТРАН + MPI.
Если это удастся, то на 4 или на 8 процессорах, как вы полагаете?
 
Другими словами, что нужно для MPI-процессора -- ядро или нить настоящего каменного процессора?

Всего записей: 847 | Зарегистр. 27-11-2003 | Отправлено: 12:45 01-02-2011
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lapochka ili Chai
Вы все еще блуждаете в потемках? Вам же давно намекнули что даже на одном процессоре можно запустить 100500 потоков под MPI
Сколько напишете в mpirun -np столько и получите, вопрос совсем другой, насколько оптимальным будет это число с точки зрения производительности.
И откуда такая терминология "MPI-процессор"?

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 12:53 01-02-2011
KChernov



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

Цитата:
у меня на проце Athlon64 IVF медленнее чем CVF в ~3-4 раза(!) без всяких оптимизаций (в Debug)

А какой смысл сравнивать быстродействие в Debug?
А вообще такая разница легко объяснима различными параметрами компилирования и сборки в Debug (у Интела с информативностью дебага получше будет, но ведь для этого и бесурсов больше надо).
Но всё равно скорость надо сравнивать в Релиз, причём с одинаковыми уровнями оптимизации.
 
Добавлено:
CurlyDevil

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

Это да, к сожалению современные 64х процы такие лишь для целых чисел.
Правда есть ещё 80-битные сопроцессоры, но с ними как-то вообще всё мутно...
 
Добавлено:
Lapochka ili Chai

Цитата:
Народ, есть комп на процессоре Intel® Core™ i7 Q 820 @ 1.73GHz,  имеющем 4 ядра + гипертрейдинг, дающие в целом 8 нитей (threads).
 
Хочется сделать ФОРТРАН + MPI.
Если это удастся, то на 4 или на 8 процессорах, как вы полагаете?
 
Другими словами, что нужно для MPI-процессора -- ядро или нить настоящего каменного процессора?

Если у вас уже есть правильное MPI-приложение, то вам действительно всё равно, сколько потоков вы укажете при запуске.
Соответственно проще всего запустить тестовый аналог этого приложения для 4 и 8 (на вашем проце) и сравнить.
Мне кажется, что на 4 должно быть не медленнее, чем на 8, так как расчётная задача всё-таки в первую очередь грузит физические процы/ядра.
Но когда когда-то давно (ещё при появлении её на Р4) я читал про технологию хиперсрёдинга (которая даёт в итоге из 4 физических ядер 8 виртуальных), речь шла про то, что эта технология запросто может дать доступ к простаивающим (при выполнении основной задачи) модулям вычисления процессора.
Как щас с этим у современных процов - не в курсе, но если задача распараллеливается через MPI однородно по мощности и характеру вычислений, которые требует процесс, то и выигрыша от виртуальных ядер быть не должно (а скорее будет проигрыш из-за накладных расходов).
Однако если задача распараллелена на процессы, где характер вычислений неоднороден (например одни нити считают в действительных числах, а другие в целых), вполне может быть выигрыш и от виртуальных ядер.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 13:19 01-02-2011 | Исправлено: KChernov, 18:01 02-02-2011
Vskazka

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

Цитата:
Хочется сделать ФОРТРАН + MPI.
Если это удастся, то на 4 или на 8 процессорах, как вы полагаете?  

Вам, собственно, для чего сие надо? Для счета, или для отладки программы, дабы потом ее на каком-нибудь кластере считать?
Если для счета - то не советую использовать MPI - слишком много накладных расходов по пересылке данных. Грубо говоря (для одноядерных процессоров в кластере)  в MPI существенно, что каждый процессор  имеет дело со своим участком памяти. И если надо делать все вместе, то приходится пересылать. Уж лучше используйте что-то, что работает с одной памятью, но с помощью многих процессов. Например OpenMP.  
Мне собственно и так и так делать приходится. И программу, бывает отлаживаю под MPI, и если надо - то и дома считаю тоже на Intel® Core™ i7, используя OpenMP

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 17:30 01-02-2011
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
Цитата:
Но всё равно скорость надо сравнивать в Релиз, причём с одинаковыми уровнями оптимизации.
Конечно так. К тому же, для корректного сравнения, кроме уровней оптимизации желательно выровнить и другие параметры сравниваемых компиляторов.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 17:59 01-02-2011
KChernov



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

Цитата:
И программу, бывает отлаживаю под MPI, и если надо - то и дома считаю тоже на Intel® Core™ i7, используя OpenMP

А что надо, чтобы так унифицировано писать программу?
Или надо таки 2 версии иметь?

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 19:28 01-02-2011
Vskazka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
Совсем унифицировано - не получится. Директивы OpenMP - таковы, что если не говорить компилятору (я имею в виду Intel) о том, что их надо учитывать, то программа их не видит (внешне они похожи на комментарии). Там нет, вроде бы (во всяком случае без особых ухищрений) возможности - какие вычисления отправить на какой процессор. В автомате сие делает.  А вот в для MPI надо много всего указывать и, по сути, указывать что какой процессор делает, не говоря уж про инициализацию. Впрочем, если несложная конфигурация вычислений и разброс по разным процессорам, то возможно делать почти без изменений, почти все делая под условной компиляцией. По типу, говоришь в начале
!dec$ define MPI_WORK  
- работаешь под MPI, ставишь лишний воскицательный знак будет программа под OpenMP
   
 

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 12:04 02-02-2011
KChernov



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

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 12:22 02-02-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
{полуоффтоп}
 
[removed]
 
помогли на e-bookz

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 13:41 02-02-2011 | Исправлено: akaGM, 14:44 02-02-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