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) - собирается уже у всех
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.