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