Параллельные модели программирования: почему OpenMP и MPI доминируют?

cs.stackexchange https://cs.stackexchange.com/questions/121193

Вопрос

В лекции по программированию Parallel HPC (для CPU) мы обсудили различные модели, доступные из Pthreads, чтобы открыть MPI, а также другие, такие как Charm ++, X10, UPC, часовня ....Основное внимание было явно на первых трех.Интригировано темой, я сделал некоторые исследования самостоятельно, но смогу найти источники, примеры и обсуждения в основном для этих первых трех.Позже я обнаружил «Ampi», который даже может управлять устаревшим приложением MPI со многими из преимуществ Charm ++ предлагаемых, но никто не использует его.

Почему другие модели так пренебрегают?По сравнению с довольно неочищенными альтернативами MPI, такие как Charm ++, и UPC, кажется удобным, когда они обрабатывают много «грязной работы» аккуратно на заднем плане.

Это было полезно?

Решение

Я дам вам две основные причины, по которым доминируют MPI и OpenMP.

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

Вторая причина - это сопротивление программиста . С помощью MPI и OpenMP, охватываем как параллельное программирование, и параллельное программирование по сообщению, так и для общей памяти (и вы даже можете использовать их одновременно, если это полезно и / или требуется) Почему программист, особенно новичок в поле, должен провести свое время обучения новым параллельным Языки программирования, которые не предоставляются стандартами? Конечно, как вы указали, другие языки предоставляют некоторые преимущества, но вопрос в том, что вы бы инвестировали свое время на то, что может даже полностью исчезнуть в будущем? Стандарты здесь, чтобы остаться. Во всяком случае, относительно этой конкретной точки, мое скромное мнение заключается в том, что, если это возможно, следует вместо этого нужно проводить некоторое время на разных языках (не только один для параллельного программирования), потому что это полезная дисциплина, и изучение различных парадигм всегда полезно. Тем не менее, при прочтении вашу учебную программу Vitae для возможного найма людей, которые могут нанять вас на должность, будут вообще, в основном заинтересованы в том, чтобы ваши знания о стандартах, не к вашим знаниям нишевых языков (в целом, хотя, хотя могут быть исключения Конечно).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top