MPI-операции

Страницы работы

2 страницы (Word-файл)

Содержание работы

MPI_Init(&argc,&argv); инициализируем библиотеку

MPI_Comm_rank(MPI_COMM_WORLD,&rank); выясняем номер компа

MPI_Comm_size(MPI_COMM_WORLD,&size); получаем кол-во компов в сетке

MPI_Send(&A,1,MPI_INT,2,15,MPI_COMM_WORLD); Посылка синхронная с блокировкой

1-что посылать (адрес)

2-скока элементов

3-тип

4-кому

5-тэг (ярлык) (число, совпадающее с принимающим числом (для согласования))

6-структура (задание топологий)

MPI_Recv(&B,1,MPI_INT,0,15,MPI_COMM_WORLD,&st); Прием синхронный (зависает)

1-во что принимаем?

2-скока принимаем *

3-тип *

4-от кого *

5-ярлык

6-структура

7-квитанция

MPI_Isend(  ); Посылка асинхронная без блокировки

MPI_Irecv(  ); Прием асинхронный

MPI_Ssend(  ); Синхронная передача

MPI_Wate(  ); Ждет уход данных (ждет ухода)

MPI_Test(  ); Информация о посылаемых данных (пришли ?)

MPI_Sendrecv_replace (&B,1,MPI_INT,0,15,2,15,MPI_COMM_WORLD,&st); одновременная пересылка буфера одного в этот же буфер другого

1-буфер

2-размер буфера

3-тип

4-кто посылает

5-тэг

6-от кого принимает

7-тэг

8-структура

9-квитанция

MPI_Finalize();

завершаем пользование библиотекой

===================================Топологии==================================

MPI_Comm - тип для структуры (переменная) - описывает имена, которые связывают имя структуры с самой структурой - описываются тока нами созданные

MPI_Cart_create (old_com,rdins,dins,period,reord,&new_com) Ф-ция задания декартовой структуры

1- старая структура (напр MPI_COMM_WORLD)

2- мерность структуры, которую мы создаем

3- массив одномерн, целочисл, размерн=rdins - задают размеры структ вдоль координат

4- массив одномерн, размерн=rdins - с true/false (связь между комп на гранях)

5- перенумерация (нужна\не нужна)

6- новая структура (имя)

MPI_Dims_create (size,ndins,dins) - ф-ия разбиения множества комп на декартову структуру, старается сделать разбивку с min диаметром, или как там указано

1- размер (кол-во компов)

2- мерность

3- тот же массив, см. предид., если там 0 - то она сама определяет разбивку

MPI_Cart_shift (new_com,dir,+1,&sours,&dest) ф-ия смешения (нахождения номеров соседей или через 1-ого и т.п.)

1- соответственно структура

2- номер координаты (вдоль координаты)

3- где находится (+ - в сторону увеличения номеров, если - - то в сторону уменьшения номеров) т.е. наскока сосед

4- от кого нужно взять инфу (якобы, просто вясняем его линейный номер)

5- кому мы передаем

----------------------- Создание произвольного графа -------------------------MPI_Graph_create (oldcom,size,index,edges,reord,&newcom);

1- старая коммуникатор (MPI_Comm)

2- размер графа

3- описание вершин графа /* int */ размер size, ставится кол-во соседей + чмсло, стоящее в предыдущ. ячейке

4- описание ребер графа /* int */ размер - index[size-1], в каждой ячейке - с кем он связан (номер вершины)

5- нужно\нет перенумерование

6- новый комм.

---------------------------- Коллективные функции ----------------------------Все компы, с коммуникатором Comm

MPI_Bcast() - один передает, все принимают

MPI_Scatter () - один пересылает всем, но : данные разрезает на кусочки, и посылает соотв кусочки соотв комп

MPI_Gather () - сбор, т.е. один собирает ото всех, обратно Scatter

MPI_Scatterv, MPI_Gather - доп. параметр, векторный вариант ф-ий, т.е. массивы могут быть разные по размерам (данные), + смещение - д. распределения в памяти по разному со смещением от начала(доп эл-ты в приемке, например)

MPI_Allgether (sbuf,scout,stype,rbuf,rcout,rtype,com) - каждый пересылает каждому, записывается согласно его порядковому номеру

1- буфер, передаваемый

2- скока передаем

3- тип передающего

4- куда принимаем

5- скока -||6- тип

7- коммуникатор

MPI_Alltoall () - все всем, но передающий делает "срез", и соотв. © комп

-------------------------------- Редукция ------------------------------------MPI_Reduce (sb,rb,count,type,op,root,comm) - для собирания у кого-нить чего-нить (суммы, произведения и т.п.)

1- посылаем

2- во что собираем

3- скока

3- тип

4- опреация над sb

5- у кого собираем рез.

6- коммуникатор

Операции:

MPI_MAX - максимум

MPI_MIN - минимум

MPI_SUM - сумма

MPI_PROD - произведение

MPI_LAND - логическое 'И'

MPI_BAND - порязрядное 'И'

MPI_LOR - логическое 'ИЛИ'

MPI_BOR - поразрядное 'ИЛИ'

MPI_LXOR - логический 'XOR'

MPI_BXOR - поразрядный 'XOR'

MPI_MAXLOC - максимальное значение и локализация (т.е. где расположен - ранг)

MPI_MINLOC - значение минимума и локализация

MPI_Allreduce (sb,rb,count,type,op,comm) - собирается уже у всех

Информация о работе