LINUX.ORG.RU

Мультипроцессорное окружение/кластер - как программировать?


0

0

MPI, PVM... куча всего существует для разработки программ для MPI, но хочется узнать о реальном опыте людей. Особенно интересует способ обхода сторонних библиотек и именно грамотное написание собственной программы, выполняемой параллельно.

Задача такая, что нужно написать прогу так, чтобы:

1. Она работала используя "по-полной" 2 проца на одной 2-х процессорной машине. (это минимум, просто чтобы понять что программа распараллеливается как нужно)

2. Работала в кластере из многих линукс машин. (в перспективе)

Я к сожалению не слишком себе все это пока представляю, поэтому любая информация приветствуется.

★★

parallel.ru
parallel.ru/phorum

anonymous
()

>1. Она работала используя "по-полной" 2 проца на одной 2-х процессорной машине. (это минимум, просто чтобы понять что программа распараллеливается как нужно)

Сложный способ - переписать программу под thread-модель Простой способ - переписать программу под OpenMP ;) (OpenMP поддерживается интеловскими и портладовскими компиляторами - у гцц это только пока в проекте)

>2. Работала в кластере из многих линукс машин. (в перспективе)

Это идти в гугл и на паралел.ру и смотреть как это делается с применением MPI или PVM (к п1 это также применимо)

Вообще говоря наде танцевать от _конкретной_ задачи а не от вопросов "как писать параллельные прогрммы" - у каждого класса задач существуют собственные подходы причем в количестве куда больше одного ;)

sS ★★★★★
()
Ответ на: комментарий от sS

Приветствую.
С тестом не судьба ... напрягли мою психику по-взрослому -(
Ну да ладно ... Оптерон я более менее "грокнул"-). Сделал выводы....
Теперь про OpenMP /с сайта openmp.org/
http://www.cepba.upc.es/intone/framed6.html
http://odinmp.imit.kth.se/
фри/расшаренные компилляторы ... /признаюсь честно, не пробовал - мне пги,интела за глаза-)/

Далле - про плясать от задачи - 5 баллов .... + дополнение .. работодатель играет не последнюю роль)

с thread ... - может быть.. А у Вас такого не бывает - в зависимости от нагрузки на проц таски ведут сеюя по-разному ? Тут просто в одну софтину добавили сие чудо .. и бывают интересные "вылеты" тасков ...

Best regards,$echo.

anonymous
()
Ответ на: комментарий от anonymous

> А у Вас такого не бывает - в зависимости от нагрузки на проц таски ведут сеюя по-разному ?

Что совсем по разному ? Выдают разные результаты ? ;)

Это может быть в 2-х случаях

1) Кривое железо (с переходом на оптероны с удивлнием узнал что память может _ПЕРЕГРЕВАТЬСЯ_ как результат - глюки)

2) Криво написана синхронизация (встречается редко и как правило на самопалах)

Я вот зато столкнулся с одной занятной архитектурной оасобенностью оптеронов - если пущать его не на NUMA (а 99.99% многоголовых оптеронов имеют NUMA архитектуру) а как SMP то кроме стандартных глюков с APIC (который легко лечится опцией noapic и на функциональность калькуляторов-числодробилок влияет минимально) для каждой головы существует "своя" память - если не поставить чередование банков (не все платы это умеют) то задача на "родном" проце исполняется на 10% быстрее чем на "чужем" - так что ручная балансировка задачи становится нетривиальной ;)

sS ★★★★★
()
Ответ на: комментарий от sS

Вообщем на одноголовой машине / грешен ... грешен я -)/ сидит под qsub'ом задача ... ну логинюсь ... ждать лениво и запускаю свою / в обход NQS/. Вот задача, что с thread'ом вточенным валится ... При этом моя прога по-взрослому нагружает комп и I/O с-му.
А про Оптерон любопытно - приоритеты меняете - что скорость исполнения была одинакова ? на мастере 0.9 от слэйва ?)
Best regards,$echo.
P.s. Разница в скорости выполнения - дополнительное время на синхронизацию ... Казалось бы SMP тем и хороши, что подразумевают одинаковую скорость выполнения нитей?
Млина... наверное снесут все это - кажется в правилах запрещено такого рода общение-)
А может отдельно форум сделать для такого рода вопросов?

anonymous
()
Ответ на: комментарий от anonymous

>P.s. Разница в скорости выполнения - дополнительное время на синхронизацию ... Казалось бы SMP тем и хороши, что подразумевают одинаковую скорость выполнения нитей?

Ну типа того - поделил типа цикл на 2 части а в конце ставишь barier и нитки вроде бы должны с точностью до одного-двух переключений контекста приходить на него одновременно ан нет ;) тут получается не SMP а гетерогенный кластер ;)))

sS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.