PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 25 сен 20 11:31

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как установить OpenMP на Linux
СообщениеДобавлено: 15 фев 10 12:03 
Не в сети

Зарегистрирован: 15 фев 10 11:55
Сообщения: 4
Добрый день всем!

Я новичек в параллельных вычислениях. Почитал литературу, там все речь о написании программ под OpenMP, у меня же есть готовая программа, которую можно скомпилировать на OpenMP, однако я не могу, т.к. OpenMP не установлен. Где мне взять готовый дистрибутив OpenMP (система - Linux OpenSuse, есть компилятор GFortran), какие переменные окружения прописывать и т.д. Заранее спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как установить OpenMP на Linux
СообщениеДобавлено: 15 фев 10 17:35 
Не в сети

Зарегистрирован: 30 ноя 05 16:09
Сообщения: 130
Откуда: Ростов-на-Дону
OpenMP не является отдельным продуктом.
Это стандарт программирования, который может поддержваться или
не поддерживаться компилятором. Gfortan поддерживает.
Опция -fopenmp
По умолчанию задействуются все ядра.
Ручная регулировка выполняется переменной окружения
OMP_NUM_THREADS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как установить OpenMP на Linux
СообщениеДобавлено: 16 фев 10 12:08 
Не в сети

Зарегистрирован: 15 фев 10 11:55
Сообщения: 4
Добрый день! Спасибо что отклинулись!
Дело в том, что эта программа имеет setup, который в зависимости от выбора компилятора пишет makefile.inc. Если я выбираю gfortan он пишет
F90="gfortran"
F90_OPTS="-O3 -funroll-loops -ffast-math"
F77=$F90
F77_OPTS=$F90_OPTS
При этом программа компилируется
если выбираю OpenMP он пишет
F90="f90"
F90_OPTS="+Ofast +Oopenmp +DD64"
F77=$F90
F77_OPTS=$F90_OPTS

Программа НЕ компилируется

Поэтому, если не трудно, подскажите как я должен вручную прописать опции, чтобы заработало?
P.S. А переменную окружения OMP_NUM_THREADS я должен сам прописать и до или после компиляции это делать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как установить OpenMP на Linux
СообщениеДобавлено: 16 фев 10 12:39 
Не в сети

Зарегистрирован: 30 ноя 05 16:09
Сообщения: 130
Откуда: Ростов-на-Дону
Выбрать Вы должны, конечно, gfortran.
В этом случае правильно устанавливаются все переменный.
Единственное, в переменной
F90_OPTS="-O3 -funroll-loops -ffast-math"
не хватает опции -fopenmp
если можно дописать ее руками, то дальше все сработает.
Выбор OpenMP устанавливает опции для какого-то компилятора,
даже не знаю какого. Возможно, Absoft.
Переменная OMP_NUM_THREADS на компиляцию
ни как не влияет. Она устанавливается перед
запуском программы. Это делается либо в .profile или .bashrc
или непосредственно в командной строке
OMP_NUM_THREADS=N ./exe_prog
Еще раз повторю, этой переменной можно только
уменьшить количество ядер. По умолчанию захватываются все ядра.
в узле.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как установить OpenMP на Linux
СообщениеДобавлено: 16 фев 10 14:15 
Не в сети

Зарегистрирован: 15 фев 10 11:55
Сообщения: 4
Зделал все, как Вы сказали. Программа скомпилировалась, правда, по-моему, быстрее работать не стала. Кстати, а как убедиться в том, что считают столько-то процессоров? Может надо её как-то по-особому запускать? P.S. Может быть, дело в не самой новой версии gfortran (OpenSuse где-то двухлетней давности)...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как установить OpenMP на Linux
СообщениеДобавлено: 16 фев 10 15:26 
Не в сети

Зарегистрирован: 30 ноя 05 16:09
Сообщения: 130
Откуда: Ростов-на-Дону
В gfortran OpenMP поддерживается, по-моему, с версии 4.х.х
При этом версии 4.1.х очень кривые.
Что касается, как убедиться, что задействованы несколько ядер.
Запустите параллельно с программой команду top и смотрите
загрузку CPU -. она должна быть более 100%. В идеале 100*n
Что касается ускорения, то не факт, что многонитевая программа
будет работать быстрее обычной. Все зависит от алгоритма и
качества распараллеливания.Кроме того, нужно корректно измерять
время. Стандартные процедуры время умножают на количество ядер.
Наиболее надежно смотрить по секундамеру :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как установить OpenMP на Linux
СообщениеДобавлено: 16 фев 10 16:29 
Не в сети

Зарегистрирован: 15 фев 10 11:55
Сообщения: 4
Все правильно Вы сказали! С секундомером действительно получается почти в два раза быстрее :) Да и загрузка ЦП под 200% (пускал на двухядерной машине). Так что большое Вам спасибо за помощь! :D


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB