Вы можете ознакомиться и скачать презентацию на тему Библиотека 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
Слайд 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)