Аналоги Кластера Intel OpenMP - PullRequest
1 голос
/ 03 марта 2010

Есть ли аналоги Intel Cluster OpenMP? Эта библиотека имитирует машину с общей памятью (например, SMP или NUMA) при работе на машине с распределенной памятью (как кластер компьютеров, подключенный к Ethernet).

Эта библиотека позволяет запускать программы openmp непосредственно в кластере.

Я ищу

  • библиотеки, позволяющие запускать многопоточные программы в распределенном кластере
  • или библиотеки (замена, например, libgomp), которые позволяют программам OpenMP работать в распределенном кластере
  • или компиляторы, способные генерировать код кластера из программ openmp, кроме Intel C ++

1 Ответ

3 голосов
/ 20 декабря 2010

Ключевое слово, которое вы хотите найти, это «распределенная общая память»; на эту тему есть страница Википедии . MOSIX, которая стала openMOSIX, которая сейчас разрабатывается как часть LinuxPMI , является самой близкой вещью, о которой я знаю; но у меня нет большого опыта работы с текущим проектом LinuxPMI.

Одна вещь, о которой вам нужно знать, это то, что ни одна из этих систем не работает особенно хорошо с точки зрения производительности. (Возможно, более оптимистичный способ сказать, что это дань уважения разработчикам, что эти вещи работают вообще). Вы не можете просто абстрагироваться от того факта, что доступ к памяти на узле очень сильно отличается от памяти на каком-либо другом узле сети. Даже сделать локальные системы памяти быстрыми сложно и требует много оборудования; Вы не можете просто надеяться, что немного программного обеспечения скроет тот факт, что вы сейчас делаете что-то по сети.

Увеличение производительности особенно важно, если учесть, что программы OpenMP, которые вы, возможно, захотите запустить, почти всегда будут написаны, если предположить, что доступ к памяти локальный и, следовательно, дешевый, потому что, для этого и предназначен OpenMP. Ложный обмен достаточно плох, когда вы говорите о разных сокетах, обращающихся к общей строке кэша - ложный обмен на основе страниц в сети просто катастрофичен.

Теперь вполне может быть, что у вас есть очень простая программа с очень небольшим фактическим общим состоянием, и система распределенной разделяемой памяти не будет такой плохой - но в этом случае я должен подумать, что вы в конечном итоге лучше всего перенести проблему из модели на основе общей памяти, такой как OpenMP, в сторону того, что в любом случае будет работать лучше в кластерной среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...