![]() | 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 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 |