Вы можете ознакомиться и скачать презентацию на
тему Библиотека MPI: Виртуальные топологии процессов. Лекция 6.
Доклад-сообщение содержит 27 слайдов.
Презентации для любого класса можно скачать бесплатно.
Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь
им с друзьями с помощью социальных кнопок и добавьте в закладки в своем
браузере.
Слайды и текст этой презентации
Слайд 1
Описание слайда:
Слайд 2
Описание слайда:
Топология – механизм сопоставления процессам коммуникатора альтернативной схемы адресации
Топология – механизм сопоставления процессам коммуникатора альтернативной схемы адресации
В MPI топологии – виртуальные
В MPI два типа топологий:
Декартова топология
Топология графа
Слайд 3
Описание слайда:
MPI_Topo_test(MPI_Comm comm,
int *status)
MPI_Topo_test(MPI_Comm comm,
int *status)
Возможные значения status:
MPI_GRAPH
MPI_CART
MPI_UNDEFINED
Слайд 4
Описание слайда:
MPI_Cart_create(MPI_Comm comm_old, int ndims, int *dims,
int *periods, int reorder, MPI_Comm *comm_cart)
Если размеры заказываемой сетки больше имеющегося в группе числа процессов, то функция завершается аварийно
Слайд 5
Описание слайда:
Слайд 6
Описание слайда:
MPI_Dims_create(int nnodes,
int ndims, int *dims)
MPI_Dims_create(int nnodes,
int ndims, int *dims)
Вычисляются только те компоненты для которых dims[i]=0
Создается максимально равномерное распределение процессов вдоль направлений, выстраивая их по убыванию: для 12 –> 4х3х1
Слайд 7
Описание слайда:
Слайд 8
Описание слайда:
MPI_Cartdim_get(MPI_Comm comm, int *ndims)
MPI_Cart_get(MPI_Comm comm,
int ndims, int *dims,
int *periods, int *coords)
Слайд 9
Описание слайда:
MPI_Cart_rank(MPI_Comm comm,
int *coords, int *rank)
Для измерений с периодическими граничными условиями будет выполняться приведение к основной области определения
0 <= coords(i) < dims(i)
Слайд 10
Описание слайда:
MPI_Cart_coords(MPI_Comm comm, int rank, int ndims,
int *coords)
Слайд 11
Описание слайда:
MPI_Cart_shift(MPI_Comm comm,
int direction, int disp,
int *rank_source,
int *rank_dest)
MPI_Cart_shift(MPI_Comm comm,
int direction, int disp,
int *rank_source,
int *rank_dest)
MPI_PROC_NULL
Слайд 12
Описание слайда:
Слайд 13
Описание слайда:
int dest[][]={{1,0,3,2,5,4,7,6},
int dest[][]={{1,0,3,2,5,4,7,6},
{2,3,0,1,6,7,4,5},
{4,5,6,7,0,1,2,3}};
sum = data;
for(int i=0; i < 3; i++) {
MPI_Send(sum,…dest[i][rank],…);
MPI_Recv(r_data,…dest[i][rank],…);
sum += r_data;
}
Слайд 14
Описание слайда:
MPI_Comm d_topo;
MPI_Comm d_topo;
int dims[3] = {2,2,2};
int periods[3] = {1,1,1};
int reorder = 0, src, dest;
MPI_Cart_create(MPI_COMM_WORLD, 3, dims, periods, reorder, &d_topo);
sum = data;
for(int i=0; i < 3; i++) {
MPI_Cart_shift(d_topo, i, 1, &src, &dest);
MPI_Send(sum,…dest,…);
MPI_Recv(r_data,…src,…);
sum += r_data;
}
Слайд 15
Описание слайда:
MPI_Cart_sub(MPI_Comm comm,
int *remain_dims,
MPI_Comm *newcomm)
MPI_Cart_sub(MPI_Comm comm,
int *remain_dims,
MPI_Comm *newcomm)
remain_dims[i] = true
remain_dims[i] = false
Из 2х3х4 remain_dims={true, false, true}
получаем 3 коммуникатора
с топологией 2х4
Слайд 16
Описание слайда:
int MPI_Graph_create(
MPI_Comm comm, int nnodes,
int *index, int *edges,
int reorder,
MPI_Comm *comm_graph)
int MPI_Graph_create(
MPI_Comm comm, int nnodes,
int *index, int *edges,
int reorder,
MPI_Comm *comm_graph)
index[nnodes]- суммарное количество соседей для первых i вершин
edges[index[nnodes-1]]- упорядоченный список номеров
процессов-соседей всех вершин
Слайд 17
Описание слайда:
Слайд 18
Описание слайда:
MPI_Graph_neighbors_count(
MPI_Comm comm, int rank,
int *neighbors_count)
MPI_Graph_neighbors( MPI_Comm comm, int rank, int max,
int *neighbors)
Слайд 19
Описание слайда:
MPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges)
MPI_Graph_get(MPI_Comm comm,
int nnodes, int nedges,
int *index, int * edges)