1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
2 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
3 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
4 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
7 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
8 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
K |
Ім’я |
δ+(vi), |
δ-(vi) |
Вага,t |
Ярус |
τ1(к) |
τ2т(к) |
1 |
8 |
{5,3,4} |
{0} |
2 |
1 |
2 |
6 |
2 |
1 |
{4,7} |
{0} |
3 |
1 |
3 |
7 |
3 |
5 |
{2} |
{8} |
5 |
2 |
8 |
11 |
4 |
3 |
{6,7} |
{8} |
2 |
2 |
5 |
8 |
5 |
4 |
{2} |
{1,8} |
4 |
2 |
7 |
11 |
6 |
6 |
{2} |
{3} |
3 |
3 |
11 |
11 |
7 |
7 |
{2} |
{3,4} |
2 |
3 |
10 |
11 |
8 |
2 |
{0} |
{4,5,6,7} |
1 |
4 |
12 |
12 |
τ1(1)=t1=2
τ1(2)=t2=3
τ1(3)=max{τ1(1), τ1(2)}+ t3=max{2,3}+5=5+3=8
τ1(4)=max{τ1(1), τ1(2)}+ t4=max{2,3}+2=2+3=5
τ1(5)=max{τ1(1), τ1(2)}+ t5=max{2,3}+4=4+3=7
τ1(6)=max{τ1(3), τ1(4), τ1(5)}+ t6=max{5,7,8}+3=8+3=11
τ1(7)=max{τ1(3), τ1(4), τ1(5)}+ t7=max{5,7,8}+2=8+2=10
τ1(8)= max{τ1(6), τ1(7)}+ t8=max{10,11}+1=11+1=12=tкр
τ2т(8)=tкр=12
τ2т(7)= τ2т(8)-t8=12-1=11
τ2т(6)= τ2т(8)-t8=12-1=11
τ2т(5)= τ2т(8)-t8=12-1=11
τ2т(4)= min{τ2т(7)-t7, τ2т(6)-t6}=min{11-3,11-2}=min{8,9}=8
τ2т(3)= τ2т(8)-t8=12-1=11
τ2т(2)= min{τ2т(5)-t4, τ2т(7)-t6}=min{11-4,11-2}=min{7,9}=7
τ2т(1)= min{τ2т(3)-t3, τ2т(4)-t4, τ2т(5)-t5}=min{11-5,8-2,11-4}=min{6,6,7}=6
ЗАДАЧА № 2 Отримавши діаграму розпаралелення Задачі №1, описати конфігурацію її виконання бібліотечними процедурами розширеного інтерфейсу передачі повідомлень MPI-2 (MPI-1.2), застосовуючи мову С++.
Створити логічну структуру розпаралеленої у першої частини РГЗ задачі.
Кожен оператор представити текстами, які включають MPI- процедури, що приймають деякі умовні дані для даного оператору, процедуру затримки на заданий час виконання цього оператора і MPI- процедури передачі умовних даних іншим операторам паралельної задачі.
Рішення: Виконавши попередню задачу, ми отримали дві групи процесів, які паралельно виконуються.
Група №1 Група №2
1 5 7 2 8 3 4 6
0 1 2 3 - ранг 4 5 6 7 - ранг
Якщо зобрати задачі, які виконуються паралельно до рангів, то отримаємо наступне:
Ранг4 Ранг5 Ранг6 Ранг7
Ранг0 Ранг1 Ранг2 Ранг3
Процеси, які будуть описуватися в програмі, розроблені процедурами, що реалізують затримку на необхідну кількість одиниць часу, відносно до параметру, якій передається в процедуру.
Затримка задається кількістю міжпроцесних та міжроцесорних переходів.
//Текст програми:
#include <mpi.h>
#include <stdio.h>
#include <math.h>
#include <mpio.h>
//Функція очікування
int wait(int len)
{
int startwtime, endwtime;
startwtime = (int)MPI_Wtime();
{
endwtime = (int)MPI_Wtime();
}while ((endwtime-startwtime)<len*10);
return 0;
}
// Головнiй функ. передаемо параметри командн. строки
int main (int argc, char *argv[])
{
int done=0, n, myid , numprocs, i;
int Nproc, Size;
int TAG = 0;
MPI_Status status; // Параметри прийнятого повiдомлення
double curtime; // Часова мiтка
double startwtime, endwtime;
int namelen,v1,v2,v3,v4;
char processor_name[MPI_MAX_PROCESSOR_NAME];
//Размер массива рангов
int Kol_proc=8;
//Кол. Процессов в группах
int proc1[]={1,5,7,2};
int proc2[]={8,3,4,6};
MPI_File fh;
MPIO_Request req;
MPI_Group *group1,*group2;
MPI_Init(&argc,&argv); // Iнiцiалiзацiя паралельної частини додатка
MPI_Comm_rank(MPI_COMM_WORLD, &Nproc);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.