PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 16 июл 19 22:05

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Экономия процессорного времени
СообщениеДобавлено: 17 фев 12 19:06 
Не в сети

Зарегистрирован: 20 сен 11 0:24
Сообщения: 10
Уважаемое сообщество, озвучу вопрос, возникающий у многих в начале работы с MPI. Если в программе вычисления производит 1 процесс, а остальные ждут, как уменьшить потребляемое ими время процессора? А то происходит так, что ждущие процессы грузят машину куда больше чем рабочий. Я, конечно, понимаю, что по хорошему нужно менять алгоритм, но некоторые куски кода просто невозможно распараллелить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 фев 12 20:19 
Не в сети

Зарегистрирован: 5 мар 05 14:01
Сообщения: 74
А что они делают (какой код выполняется), когда они ждут? Если они ждут на чем-то типа барьера или send-recieve, то время тратиться не должно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 фев 12 21:32 
Не в сети

Зарегистрирован: 20 сен 11 0:24
Сообщения: 10
Ждут они как раз на Receive (или Bcast, не помню), но в планировщике висят чуть ли не в начале очереди. Где-то мельком видел что надо специальный параметр ядру выставить чтобы планировщик такие мало опрашивал, но не помню ничего и вообще правда ли это было. Может кто сходу ответит?

По роду деятельности (вычислительная химия) видел много параллельных программ. Так вот, например, в molpro неактивные процессы действительно не грузят процессор


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 фев 12 11:57 
Не в сети

Зарегистрирован: 5 мар 05 14:01
Сообщения: 74
shiva писал(а):
Ждут они как раз на Receive (или Bcast, не помню), но в планировщике висят чуть ли не в начале очереди. Где-то мельком видел что надо специальный параметр ядру выставить чтобы планировщик такие мало опрашивал, но не помню ничего и вообще правда ли это было. Может кто сходу ответит?

В планировщике? А как Вы смотрите очередь планировщика? Ну кроме того, то, что они в планировщике впереди как раз очень правильно, как только им будет что делать, их сразу разбудят, и вперед.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 фев 12 12:00 
Не в сети

Зарегистрирован: 20 сен 11 0:24
Сообщения: 10
Не саму очередь планировщика, конечно, а просто top. По делу кто-то посоветовать может?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 апр 12 16:55 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
Вариант 1 - сменить реализацию MPI, которая умеет Receive делать не загружая процессор (сходу не подскажу, надо экспериментировать).

Вариант 2 - Сменить Receive на IReceive+sleep.

Вариант 3 - сменить алгоритм, т.к. "1 работает, все ждут" это очень плохо, параллелизм = 0.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 1 июн 12 18:58 
Не в сети

Зарегистрирован: 18 июн 07 13:13
Сообщения: 47
Откуда: Москва
Serg_Zhum писал(а):

Вариант 2 - Сменить Receive на IReceive+sleep.



Это не вариант. Просто процессор будет кушаться не на Recv() а на Wait()


PS: Если задача уменьшить обогрев помещения от висящих на Recv/Send/Wait/Barrier процессах (действительно многие реализации этим грешат) могу предложить использование смешанной парадигмы (MPI+OpenMP).

Дело в том что OpenMP-шные
Код:
#omp barrier

не грузят так процессор в отличае от MPI-шных
Код:
MPI::COMM_WORLD.Barrier();

... правда совсем от них отказаться не получится.


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

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


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

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


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

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