Запуск и останов MPI программы

Запуск MPI-приложения на вычислительном кластере возможен только через систему пакетной обработки заданий. Для упрощения запуска и постановки в очередь параллельной программы предусмотрен специальный скрипт mpirun. Например, mpirun -np 20 ./first.exe запустит параллельную программу first.exe на 20 процессорах, т.е. на 5 узлах. (Каждый узел имеет 2 двуядерных процессора). Стоит обратить внимание, что для запуска исполняемого модуля находящего в текущей директории ($pwd) необходимо явно указать путь «./» Ряд реализаций MPI-1 предоставляет команду запуска для программ MPI, которая имеет форму mpirun <аргументы mpirun><программа><аргументы программы>

Отделение команды запуска программы от самой программы обеспечивает гибкость, особенно для сетевых и гетерогенных реализаций. Наличие стандартного механизма запуска также расширяет мобильность MPI программ на один шаг вперед, к командным строкам и сценариям, которые управляют ими. Например, сценарий набора программ проверки правильности, который выполняет сотни программ, может быть переносимым сценарием, если он написан с использованием такого стандартного механизма запуска. Чтобы не перепутать ``стандартную'' команду с существующей на практике, которая не является стандартной и не переносимой среди реализаций, вместо mpirun MPI определил mpiexec.

В то время как стандартизированный механизм запуска улучшает применимость MPI, диапазон сред настолько разнообразен (например, не может даже быть интерфейса командной строки), что MPI не может принять под мандат такой механизм. Вместо этого, MPI определяет команду запуска mpiexec и рекомендует, но не требует, как совет разработчикам. Однако, если реализация обеспечивает команду называемую mpiexec, она должна иметь форму, описанную ниже: mpiexec -n <numprocs><программа>

будет по крайней мере один способ запустить <программу> с начальным MPI_COMM_WORLD, чья группа содержит <numprocs> процессов. Другие аргументы mpiexec могут зависеть от реализации.

Пример 4.1 Запуск 16 экземпляров myprog на текущей или заданной по умолчанию машине:

mpiexec -n 16 myprog

 

 

3. Напишите программу параллельного вычисления определенного интеграла от функции 2*(x+2*x*x/1200.0) в интервале [0,1].

Метод левых прямоугольников

double f(double x)

{return 2*(x+2*x*x/1200);} // iskomyi integral

int main(int argc,char **argv)

{

int size,rank;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD,&rank);

MPI_Comm_size(MPI_COMM_WORLD,&size);

int n=1000,i,d; // 1000 - uzly

float a=0, b=1, h=(b-a)/n,s=0,r=0; //a i b -nachalo i konec otrezka

d=n/(size-1);

if (rank!=size-1) // schitaut vse processy, krome poslednego

{ for (i=rank*d; i<(rank+1)*d; i++) { s=s+h*f(a+i*h); }

MPI_Send(&s,1,MPI_FLOAT,size-1,1,MPI_COMM_WORLD);}

else

{ for (i=0; i<size-1; i++) // poslednii process vse sobiraet

{ MPI_Recv(&s,1,MPI_FLOAT,i,1,MPI_COMM_WORLD, &status); r+=s; } }

MPI_Finalize();}

 

 

Сурак

1. Shared & distributed memory архитектуралары.

Распределенная общая память (DSM - Distributed Shared Memory)

Традиционно распределенные вычисления базируются на модели передачи сообщений, в которой данные передаются от процессора к процессору в виде сообщений. Удаленный вызов процедур фактически является той же самой моделью (или очень близкой). DSM - виртуальное адресное пространство, разделяемое всеми узлами (процессорами) распределенной системы. Программы получают доступ к данным в DSM примерно так же, как они работают с данными в виртуальной памяти традиционных ЭВМ. В системах с DSM данные перемещаются между локальными памятями разных компьютеров аналогично тому, как они перемещаются между оперативной и внешней памятью одного компьютера. Конфигурация — с распределенной разделяемой памятью, представляет собой вариант распределенной памяти. Здесь все узлы, состоящие из одного или нескольких процессоров, подключенных по схеме SMP, используют общее адресное пространство. Отличие этой конфигурации от машины с распределенной памятью в том, что здесь любой процессор может обратиться к любому участку памяти. Однако, время обращения к разным участкам памяти для каждого процессора различно в зависимости от того, где участок физически расположен в кластере. По этой причине такие конфигурации еще называют машинами с неоднородным доступом к памяти NUMA (non-uniform memory access).

 

 

Отличия MPI и PVM.

Система PVM (Parallel Virtual Machine) была создана для объединения нескольких связанных сетью рабочих станций в единую виртуальную параллельную вычислительную машину. Система представляет собой надстройку над операционной системой UNIX и используется на различных аппаратных платформах, включая и системы с массовым параллелизмом. Наиболее распространены сейчас системы параллельного программирования на основе MPI (Message Parsing Interface). Идея MPI исходно проста и очевидна. Она предполагает представление параллельной программы в виде множества параллельно исполняющихся процессов, взаимодействующих друг с другом в ходе исполнения передачи данных с помощью коммуникационных процедур. Они и составляют библиотеку MPI. Однако надлежащая реализация MPI для обеспечения межпроцессорных коммуникаций оказалась довольно сложной. Такая сложность связана с необходимостью достижения высокой производительности программ, необходимостью использовать многочисленные ресурсы мультикомпьютера, и, как следствие большим разнообразием в реализации коммуникационных процедур в зависимости от режима обработки данных.

MPI и PVM имеют следующие общие характеристики: 1. и MPI и PVM призваны решать одну и ту же задачу обеспечения межпроцессорной связи, 2. и MPI и PVM ориентированы на одну и туже MPMD парадигму программирования; 3. и MPI и PVM представляют собой библиотеку программ; 4. и MPI и PVM обеспечивают мобильность создаваемых программ.

MPI и PVM имеют следующие основные отличия: 1. интерфейс программиста PVM проще, чем такой же интерфейс MPI; 2. PVM имеет средства динамического порождения ветвей (в стандарте MPI-2 такая возможность также имеется); 3. в PVM возможно взаимодействие приложений, запущенных одним и тем же пользователем (в стандарте MPI-2 такая возможность также имеется).