Comments 19
По моему скромному мнению, отпугнуть может и С++ и рассказы про распределенныю память, коммуникацию между узлами.
Помоему те кто испугается- явно не ваша аудитория, тем более что далеко не каждый программист получит шанс применить MPI
Помоему те кто испугается- явно не ваша аудитория, тем более что далеко не каждый программист получит шанс применить MPI
MPI может применить (так чтобы это имело смысл) любой человек, у которого есть многоядерный процессор или более одного компьютера.
А вот то, что не каждому дадут время на каком-нибудь Ломоносове, это немного ограничивает поле для экспериментов.
А вот то, что не каждому дадут время на каком-нибудь Ломоносове, это немного ограничивает поле для экспериментов.
Первое время не было единого стандарта (API) для параллельных вычислений и программистам приходилось писать для каждого кластера архитектурно-специфический код. Но, как известно, программисты люди рациональные и быстро было решено организовать стандарты (самые известные — MPI, OpenMP).
Поясните, пожалуйста, данное утверждение, точнее, упоминание здесь OpenMP. Насколько я знаю, MPI и OpenMP — вещи существенно разные, тем более в контексте кластерных вычислений. Всё-таки OpenMP, в отличие от MPI, предназначено для вычислений на системах с общей памятью.
Изначально — да, OpenMP создавался для систем с общей памятью, а MPI для систем с разделяемой памятью, но в последнее время было сделано множество нововведений, которые сделали их почти неотличимыми.
В обоих стандартах все задержки работы с памятью должен учитывать программист, поэтому нет особой разницы что использовать.
Однако, MPI является интерфейсом, который реализуют производители почти всех кластерных систем.
В обоих стандартах все задержки работы с памятью должен учитывать программист, поэтому нет особой разницы что использовать.
Однако, MPI является интерфейсом, который реализуют производители почти всех кластерных систем.
Неотличимы? Нет разницы?
Расскажите как запустить программу на OpenMP на нескольких узлах.
Расскажите как запустить программу на OpenMP на нескольких узлах.
Это неизвестно какая модификация, у которой есть «OpenMP» в названии.
Почитайте про разницу между распределённой и общей памятью.
Почитайте про разницу между распределённой и общей памятью.
Неизвестно какая?
Вот так понятнее какая это модификация?
Вот так понятнее какая это модификация?
Спасибо, я в курсе. Она не выстрелила, поэтому и неизвестно какая.
Поэтому я и написал что MPI признанный стандарт, который стараются реализовать все, а про OpenMP я просто сказал что есть возможность использовать на кластере.
Мир?
Мир?
У OpenMP тоже есть своя спецификация, которая также признана не меньше MPI. Просто для реализации OpenMP в первую очередь требуется поддержка компилятора и библиотеки времени выполнения тесно привязаны к компилятору из-за специфики самого OpenMP. А реализацией MPI больше обеспокоены вендоры аппаратного обеспечения, потому что она не привязана к конкретному компилятору.
Довольно поверхностно, смесь настройки и програмирования и довольно поверхностная по обоим пунктам. Для того чтобы понять что MPI не так страшен хорошо было бы в статье привести хотябы один пример решения какой нибудь задачи.
да и MPI_Init, MPI_COMM_WORLD, MPI_Comm_rank — это не все что что понадобится для вычислений.
да и MPI_Init, MPI_COMM_WORLD, MPI_Comm_rank — это не все что что понадобится для вычислений.
Я не особо люблю синтетические примеры, которые считаются на одном процессоре быстрее, чем на двух, поэтому когда руки дойдут до хорошего примера, который будет учитывать задержки работы с памятью, задержки работы с сетью и считаться будет на нескольких вычислительных узлах, то постараюсь оформить это постом.
Писал курсовой с использованием MPI, правда, под Виндой писал. Гонял на двуядерном процессоре ноута, ничего так, даже работало и оба ядра грузило :). Ну а сам курсовой особо из себя ничего не представлял — банальное распараллеливание арифметических операций. В жизни (пока) не приходится писать с использованием параллельных вычислений.
if ((errCode = MPI_Init(&argc, &argv)) != 0)
Бессмысленная проверка. По умолчанию все ошибки фатальны (умолчание отключается вызовом MPI в коде, а не настройкой кластера).
Бессмысленная проверка. По умолчанию все ошибки фатальны (умолчание отключается вызовом MPI в коде, а не настройкой кластера).
Честно сказать, что статья, на которую вы ссылаетесь, что ваша собственная — это просто детский сад. Если человеку незнакомому с этой темой будет необходимо все так объяснять, то я честно сказать посоветую ему просто ей не заниматься, а пойти в какую-нибудь другую область.
Sign up to leave a comment.
Основы MPI