Написати приклад створення комунікатора (новий не містить процеси 0,1). 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Написати приклад створення комунікатора (новий не містить процеси 0,1).



#include <stdio.h>

#include <stdlib.h>

#include <mpi.h>

int main(int argc, char **argv)

{ int rank, size, newrank, newsize;

MPI_Group oldgroup, group; MPI_Comm newcomm; int excl_ranks[] = {0,1};

MPI_Init(&argc, &argv);

MPI_Comm_group(MPI_COMM_WORLD, &oldgroup);

MPI_Comm_rank(MPI_COMM_WORLD, &rank);

MPI_Comm_size(MPI_COMM_WORLD, &size);

MPI_Group_excl(oldgroup, 2, excl_ranks, &group);

MPI_Comm_create(MPI_COMM_WORLD, group, &newcomm);

char *message_buf = (char *) malloc(32);

int i;

if(newcomm!= MPI_COMM_NULL)

{

MPI_Comm_rank(newcomm, &newrank);

MPI_Comm_size(newcomm, &newsize);

}

if(newrank == 0)

{

message_buf = "Hi new group";

}

if(newcomm!= MPI_COMM_NULL)

{

MPI_Bcast(message_buf, 32, MPI_CHAR, newrank, newcomm);

}

for(i = 0; i < newsize; ++i)

{

if(newrank == i)

{

printf("MPI_COMM_WORLD: %d from %d. New comm: %d from

%d. Message = %s\n", rank, size, newrank, newsize, message_buf);

MPI_Comm_free(&newcomm); } }

MPI_Group_free(&oldgroup);

MPI_Group_free(&group);

MPI_Finalize(); return 0; }

Написати приклад створення комунікатора (новий містить тільки процеси 0,1).

 

#include <stdio.h>

#include <stdlib.h>

#include <mpi.h>

int main(int argc, char **argv)

{ int rank, size, newrank, newsize;

MPI_Group oldgroup, group; MPI_Comm newcomm; int excl_ranks[] = {0,1};

MPI_Init(&argc, &argv);

MPI_Comm_group(MPI_COMM_WORLD, &oldgroup); MPI_Comm_rank(MPI_COMM_WORLD, &rank);

MPI_Comm_size(MPI_COMM_WORLD, &size);

MPI_Group_incl(oldgroup, 2, excl_ranks, &group);

MPI_Comm_create(MPI_COMM_WORLD, group, &newcomm);

char *message_buf = (char *) malloc(32);

int i;

if(newcomm!=MPI_COMM_NULL)

{

MPI_Comm_rank(newcomm, &newrank);

MPI_Comm_size(newcomm, &newsize);

}

if(newrank == 0)

{ message_buf = "Hi new group"; }

if(newcomm!= MPI_COMM_NULL)

{

MPI_Bcast(message_buf, 32, MPI_CHAR, newrank, newcomm);

}

for(i = 0; i < newsize; ++i)

{

if(newrank == i)

{

printf("MPI_COMM_WORLD: %d from %d. New comm: %d from

%d. Message = %s\n", rank, size, newrank, newsize, message_buf);

MPI_Comm_free(&newcomm); } }

MPI_Group_free(&oldgroup);

MPI_Group_free(&group);

MPI_Finalize();

 

return 0; }

Загальна структура MPI програми. Отримання інформації про розмір комунікатора, ранг процесу.

Комунікації точка-точка, прості блоковані обміни.

3. Обмiн за схемою естафетна палочка (кільце) функція MPI_Sendrecv.

Типи даних MPI. Створення і використання структур в MPI.

Пересилка прийом запакованих типiв даних.

Прийом невідомих типів даних в MPI..

Комунікації точка-точка. Неблокуючі (асинхронні) передачі в MPI.

8. Точки синхронізації. Функція MPI_Bcast.

9. Колективні функції MPI_Gather, MPI_Scatter.

10.Операцiя згортки. Функція MPI_Reduce.

Групи процесів та операції з ними.

Комунікатори та операції з ними.

Декатрова топологія в MPI.

Топологія графа в MPI.

1. Написати приклад MPI програми котра надрукує номера процесів та імена процесорів на котрих працює. Навести команди компіляції та запуску MPI програми.

2. Написати приклад обміну між двома процесами з використанням функцій блокованого обміну.

3. Написати приклад обміну між парними та непарними процесами з використанням функцій блокованого обміну.

4. Написати приклад обміну між двома процесами з використанням функцій неблокуючого (асинхронного) обміну.

5. Написати приклад обміну між парними та непарними процесами з використанням функцій неблокуючого (асинхронного) обміну.

6. Написати приклад створення MPI структури з трьома полями.

7. Написати приклад пересилки прийому запакованих типiв даних

8. Написати приклад обміну між всіма процесами з використанням функції MPI_Bcast.

9. Написати приклад додавання квадратних матриць з використанням колективних функцій.

10.Написати приклад знаходження суми максимальних елементiв рядкiв матриці з використанням колективних функцій.

11. Написати приклад знаходження суми елементiв матриці з використанням функції MPI_Reduce.

12.Написати приклад знаходження максимума елементiв вектора з використанням функції MPI_Reduce.

13.Написати приклад створення комунікатора (новий не містить процеси 0,1).

14.Написати приклад створення комунікатора (новий містить тільки процеси 0,1).

SIMULATE

;Система має 5 обслуговуючих каналів

chas VARIABLE 100; закінчення часу роботи

t_z VARIABLE 2; час бробки заяв

gus VARIABLE 10; густина заявок

GENERATE V$chas

TERMINATE 1

GENERATE (Exponential(2,0,2/V$gus))

Chan1 GATE NU 1,Chan2

SEIZE 1

ADVANCE V$t_z

RELEASE 1

TRANSFER,done

Chan2 GATE NU 2,failed

SEIZE 2

ADVANCE V$t_z

RELEASE 2

TRANSFER,done

done QUEUE done_count

TRANSFER,ex

failed QUEUE failed_count

TRANSFER,ex

ex TERMINATE

 



Поделиться:


Последнее изменение этой страницы: 2017-01-20; просмотров: 374; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.234.232.228 (0.011 с.)