1   2   3   4   5   6   7   8   9
Ім'я файлу: Розраха.docx
Розширення: docx
Розмір: 845кб.
Дата: 12.08.2021
скачати
Пов'язані файли:
5.docx
Лаба 4_РТП_СЗІ_Кліщ Богдан.docx
Лаба 5_РТП_СЗІ_Кліщ.docx
Тести, статистика праці.docx
Реферат Лесько П.В. Авторське право ЕЛЕП-11.docx.doc
Індивідуальна нормативне.docx
lab2.docx
ЦЕРКВА РІЗДВА ПРЕСВЯТОЇ БОГОРОДИЦІ У САМБОРІ.docx
ШАБЕЛЬКО КУРСОВА.docx
Сучасні методики здорового харчування.docx
Звіт до БД 2.docx
звіт_від_ред.docx
lab_8_Kravets.docx
Сєрий.docx
Сенсорне виховання.doc
СПЗ_ЛАБ_1.docx
lab5_бд.docx
Фізика5 Моя лаба.doc
Вебинар англ.docx
5.docx
ЛР 3 ФДП.docx
Методичка до ПЗ №5-6.doc
зразок РГР 2021 (1).docx
курсова 1.docx
Міністерство_освіти_та_науки_України_PI.docx
Контрольна робота Павло Коцаба.docx
Метод Баркера.docx
Grej_R._S.docx
знайомий реферат.docx
ОКРО.docx
Zvit№1ПСМ.doc

main.cpp:


#include "Header.h"

#include
int main(int argc, char* argv[])

{

//видалення файлів попередньої сесії, якщо такі існують

remove("D:\\ROM.txt");

int procCnt = 0, procNumb;

MPI_Init(&argc, &argv); /*START MPI */

MPI_Comm_size(MPI_COMM_WORLD, &procCnt);

MPI_Comm_rank(MPI_COMM_WORLD, &procNumb);

if (procNumb == 0)

{

CPU_0();

}

else if (procNumb == 1)

{

CPU_1();

}

else if (procNumb == 2)

{

CPU_2();

}

else if (procNumb == 3)

{

CPU_3();

}

else if (procNumb == 4)

{

CPU_4();

}

else if (procNumb == 5)

{

CPU_5();

}

else if (procNumb == 6)

{

CPU_6();

}

else if (procNumb == 7)

{

CPU_7();

}

MPI_Finalize(); /* EXIT MPI */

}

Operations.cpp:


#include "Header.h"

int** dobytok_2_matruc(int size1, int size2, int& size3, int** matrix1, int** matrix2)

{

float tmp = 0;

int** result;

matrix(result, size1, size2);
for (int i = 0; i < size1; i++) {

for (int j = 0; j < size2; j++)

{

result[i][j] = 0;

for (int k = 0; k < size3; k++)

result[i][j] += matrix1[i][k] * matrix2[k][j];

}

}

return result;//повертає матрицю

}


P0.cpp:


#include "Header.h"

#include
using namespace std;
ofstream f0;

ifstream f00;

void CPU_0()

{

MPI_Status stat1;
int N1 = 290;

int N2 = 168;

int N3 = 349;
//zminni

int** A0;

int** Bi;

int** B7;

int** A0B0;

int** A0B1;

int** A0B2;

int** A0B3;

int** A0B4;

int** A0B5;

int** A0B6;

int** A0B7;

matrix(A0B0, 36, 43);

matrix(A0B1, 36, 43);

matrix(A0B2, 36, 43);

matrix(A0B3, 36, 43);

matrix(A0B4, 36, 43);

matrix(A0B5, 36, 43);

matrix(A0B6, 36, 43);

matrix(A0B7, 36, 48);

matrix(A0, 36, N2);

matrix(Bi, N2, 43);

matrix(B7, N2, 48);
//Ввід N та генерація змінних

int flag = 1;

cout << endl;

cout << " Matrix A[290][168]" << " Matrix B[168][349]" << endl << endl;

cout << " Generate auto data - 1" << endl << " Manual input - 2" << endl;

cin >> flag;

if (flag == 1)

auto_input();

else

manual_input();

cout << endl;

auto start_MPI = chrono::steady_clock::now();
cout << "Z(A0,B0)" << endl;

read_matrix_from_file(A0, "A0", 36, N2);

read_matrix_from_file(Bi, "B0", N2, 43);

MPI_Send(&flag, 1, MPI_FLOAT, 7, 0, MPI_COMM_WORLD);

MPI_Recv(&flag, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);

A0B0 = dobytok_2_matruc(36, 43, N2, A0, Bi);//M(A0;B0)
cout << "P0: Sending B0 to P7" << endl;

for (int i = 0; i < N2; i++)

MPI_Send(&(Bi[i][0]), 43, MPI_INT, 7, 0, MPI_COMM_WORLD);//P(B0)->7

cout << "P0: Receiving B3 from P3" << endl;

for (int i = 0; i < N2; i++)

MPI_Recv(&(Bi[i][0]), 43, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);//O(B3)<-3
A0B3 = dobytok_2_matruc(36, 43, N2, A0, Bi);//M(A0;B3)
cout << "P0: Sending B3 to P7" << endl;

for (int i = 0; i < N2; i++)

MPI_Send(&(Bi[i][0]), 43, MPI_INT, 7, 0, MPI_COMM_WORLD); //P(B3)->7

cout << "P0: Receiving B5 from P3" << endl;

for (int i = 0; i < N2; i++)

MPI_Recv(&(Bi[i][0]), 43, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);//O(B5)<-3
A0B5 = dobytok_2_matruc(36, 43, N2, A0, Bi);//M(A0;B5)
cout << "P0: Sending B5 to P7" << endl;

for (int i = 0; i < N2; i++)

MPI_Send(&(Bi[i][0]), 43, MPI_INT, 7, 0, MPI_COMM_WORLD); //P(B5)->7

cout << "P0: Receiving B1 from P3" << endl;

for (int i = 0; i < N2; i++)

MPI_Recv(&(Bi[i][0]), 43, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);//O(B1)<-3
A0B1 = dobytok_2_matruc(36, 43, N2, A0, Bi);//M(A0;B1)
cout << "P0: Sending B6 to P7" << endl;

for (int i = 0; i < N2; i++)

MPI_Send(&(Bi[i][0]), 43, MPI_INT, 7, 0, MPI_COMM_WORLD); //P(B1)->7

cout << "P0: Receiving B6 from P3" << endl;

for (int i = 0; i < N2; i++)

MPI_Recv(&(Bi[i][0]), 43, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);//O(B6)<-3
A0B6 = dobytok_2_matruc(36, 43, N2, A0, Bi);//M(A0;B6)
cout << "P0: Sending B6 to P7" << endl;

for (int i = 0; i < N2; i++)

MPI_Send(&(Bi[i][0]), 43, MPI_INT, 7, 0, MPI_COMM_WORLD); //P(B6)->7

cout << "P0: Receiving B4 from P3" << endl;

for (int i = 0; i < N2; i++)

MPI_Recv(&(Bi[i][0]), 43, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);//O(B4)<-3
A0B4 = dobytok_2_matruc(36, 43, N2, A0, Bi);//M(A0;B4)
cout << "P0: Sending B4 to P7" << endl;

for (int i = 0; i < N2; i++)

MPI_Send(&(Bi[i][0]), 43, MPI_INT, 7, 0, MPI_COMM_WORLD); //P(B4)->7

cout << "P0: Receiving B2 from P3" << endl;

for (int i = 0; i < N2; i++)

MPI_Recv(&(Bi[i][0]), 43, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);//O(B2)<-3
A0B2 = dobytok_2_matruc(36, 43, N2, A0, Bi);//M(A0;B2)
cout << "P0: Sending B2 to P7" << endl;

for (int i = 0; i < N2; i++)

MPI_Send(&(Bi[i][0]), 43, MPI_INT, 7, 0, MPI_COMM_WORLD); //P(B2)->7

cout << "P0: Receiving B7 from P3" << endl;

for (int i = 0; i < N2; i++)

MPI_Recv(&(B7[i][0]), 48, MPI_INT, 3, 0, MPI_COMM_WORLD, &stat1);//O(B7)<-3
A0B7 = dobytok_2_matruc(36, 48, N2, A0, B7);//M(A0;B7)

//cout << A0B7[0][0] << endl;
write_matrix_to_fileC(f0, "C0", A0B0, A0B1, A0B2, A0B3, A0B4, A0B5, A0B6, A0B7, 36, 43, 48);

cout << "W(C0)" << endl;

MPI_Send(&flag, 1, MPI_FLOAT, 1, 0, MPI_COMM_WORLD);

auto end_MPI = chrono::steady_clock::now();
float elapsed_time_MPI = float(chrono::duration_cast (end_MPI - start_MPI).count());

cout << "Elapsed time for P0 (milliseconds): " << elapsed_time_MPI << endl;
float X = 0;

MPI_Recv(&X, 1, MPI_FLOAT, 1, 0, MPI_COMM_WORLD, &stat1);

elapsed_time_MPI += X;

MPI_Recv(&X, 1, MPI_FLOAT, 2, 0, MPI_COMM_WORLD, &stat1);

elapsed_time_MPI += X;

MPI_Recv(&X, 1, MPI_FLOAT, 3, 0, MPI_COMM_WORLD, &stat1);

elapsed_time_MPI += X;

MPI_Recv(&X, 1, MPI_FLOAT, 4, 0, MPI_COMM_WORLD, &stat1);

elapsed_time_MPI += X;

MPI_Recv(&X, 1, MPI_FLOAT, 5, 0, MPI_COMM_WORLD, &stat1);

elapsed_time_MPI += X;

MPI_Recv(&X, 1, MPI_FLOAT, 6, 0, MPI_COMM_WORLD, &stat1);

elapsed_time_MPI += X;

MPI_Recv(&X, 1, MPI_FLOAT, 7, 0, MPI_COMM_WORLD, &stat1);

elapsed_time_MPI += X;

cout << "Elapsed time for whole program (milliseconds): " << elapsed_time_MPI;
}

1   2   3   4   5   6   7   8   9

скачати

© Усі права захищені
написати до нас