Преобразование многопоточной программы в MPI? - PullRequest
0 голосов
/ 13 марта 2009

Я понимаю различия между многопоточной программой и программой, основанной на межмашинном взаимодействии. Моя проблема в том, что у меня есть хорошая многопоточная программа, написанная на «C», которая работает и действительно хорошо работает на 8-ядерном компьютере. Теперь есть возможность перенести эту программу в кластер, чтобы получить доступ к большему количеству ядер. Стоит ли пытаться вытащить pthread и обновить MPI (который я никогда не использовал), или нам лучше перекодировать все (или большую часть) с нуля? Предположим, что мы «застряли» с C, поэтому полная смена языка невозможна.

Ответы [ 2 ]

2 голосов
/ 13 марта 2009

В зависимости от того, как написано ваше программное обеспечение, переход к MPI может иметь или не иметь преимуществ перед сохранением вашей реализации pthread.

К сожалению (или к счастью), передача сообщений - это совсем другой зверь, чем pthreading - основное предположение совсем другое. Мне нравится эта цитата Джошуа Филлипса из команды Maestro : "Разница между передачей сообщений и общедоступным общением эквивалентна разнице между отправкой коллеге по электронной почте с просьбой выполнить задачу и открытие ее организатора, чтобы записать задачу непосредственно в ее списке дел. Более чем грубая, последняя может сбить ее с толку - она ​​может стереть это, не заметить или случайно расставить приоритеты. "

К сожалению, способ обмена данными сильно отличается. Прямой доступ к данным в других потоках отсутствует (поскольку он может быть на других машинах), поэтому переход с pthreads на MPI может оказаться очень сложной задачей. С другой стороны, если код написан таким образом, что каждый поток изолирован, это может быть простой задачей и определенно стоящей.

Чтобы определить, насколько это будет полезно, вам нужно понять код и то, что вы надеетесь достичь путем переключения. Это может быть полезным в качестве учебного опыта (вы узнаете много о синхронизации и поточной обработке, работая в MPI), но может оказаться непрактичным, если выигрыш будет незначительным.

0 голосов
/ 13 марта 2009

Re. Ваш комментарий к Риду - это звучит как простое преобразование MPI с минимальными издержками. Только будьте осторожны: не все API-интерфейсы MPI поддерживают динамическое создание процессов, т. Е. Вы запускаете свою программу с N процессами (указанными при запуске), и вы застряли с N процессами в течение всего срока службы программы.

...