![]() | 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 Висновки:Під час виконання розрахункової роботи я розробив паралельний алгоритм перемноження двох матриць на структурі з восьми процесорів та його програмну реалізацію. Також провів обчислення, і отримав часові характеристики даного паралельного алгоритму. Так у результаті, при паралельному обчисленні, було необхідно 64462 мілісекунд, а при послідовному - 1101 мілісекунд. Це якщо кожна з матриць заповнена одиницями. Порівнявши алгоритми вияснилось, що послідовний виконується набагато швидше, ніж паралельний. Це пояснюється тим, що в проекті з використанням МРІ багато часу займає обмін даними та читання з файлу та запис у файл. Ефективність розпаралелення алгоритму виявилась рівною Е ≈ 0,846. Додаток А (код до МРІ проекту)Header.h:#pragma once #include #include #include #include "math.h" #include #include #include using namespace std; //Operations int** dobytok_2_matruc(int size1, int size2, int& size3, int** matrix1, int** matrix2); //initialization void matrix(int**& M, int size1, int size2); //void number(float**& Numb); //file void write_matrix_to_file(ofstream& fx, int** MRC, string whatis, int s1, int s2); void read_matrix_from_file(ifstream& fi, int** MRC, string whatis); //input void manual_input(); void auto_input(); void CPU_0(); void CPU_1(); void CPU_2(); void CPU_3(); void CPU_4(); void CPU_5(); void CPU_6(); void CPU_7(); file.cpp:#include "Header.h" #include void write_matrix_to_file(ofstream& fx, /*ifstream& fi,*/ int** MRC, string whatis, int s1, int s2) { fx.setf(ios::fixed); const char* path = "D:\\ROM.txt"; fx.open(path, ios::app); fx << whatis << "\n"; for (int i = 0; i < s1; i++) { for (int j = 0; j < s2; j++) { fx << MRC[i][j] << "\t"; } fx << "\r\n"; }fx << "\r\n\n"; fx.close(); } void write_matrix_to_fileC(ofstream& fx, string whatis, int** AiB0, int** AiB1, int** AiB2, int** AiB3, int** AiB4, int** AiB5, int** AiB6, int** AiB7, int s1, int s2, int s2_7) { fx.setf(ios::fixed); const char* path = "D:\\ROM.txt"; fx.open(path, ios::app); fx << whatis << endl; for (int i = 0; i < s1; i++) { for (int j = 0; j < s2; j++) { fx << AiB0[i][j] << "\t"; } for (int j = 0; j < s2; j++) { fx << AiB1[i][j] << "\t"; } for (int j = 0; j < s2; j++) { fx << AiB2[i][j] << "\t"; } for (int j = 0; j < s2; j++) { fx << AiB3[i][j] << "\t"; } for (int j = 0; j < s2; j++) { fx << AiB4[i][j] << "\t"; } for (int j = 0; j < s2; j++) { fx << AiB5[i][j] << "\t"; } for (int j = 0; j < s2; j++) { fx << AiB6[i][j] << "\t"; } for (int j = 0; j < s2_7; j++) { fx << AiB7[i][j] << "\t"; } fx << "\r\n"; }fx << "\r\n\n"; fx.close(); } //int s1, s2; void read_matrix_from_file(int** MRC, string whatis, int s1, int s2) { int offset; string line; ifstream fi; fi.open("D:\\ROM.txt"); if (fi.is_open()) { while (!fi.eof()) { getline(fi, line); if ((offset = line.find(whatis, 0)) != string::npos) { for (int i = 0; i < s1; i++) { for (int j = 0; j < s2; j++) { fi >> MRC[i][j]; } } } } } } input.cpp:#include "Header.h" #include ofstream fio; int N1 = 290; int N2 = 168; int N3 = 349; int** A0; int** A1; int** A2; int** A3; int** A4; int** A5; int** A6; int** A7; int** B0; int** B1; int** B2; int** B3; int** B4; int** B5; int** B6; int** B7; void manual_input() { cout << "Matrix A consist of: "; int k; cin >> k; matrix(A0, 36, N2); matrix(A1, 36, N2); matrix(A2, 36, N2); matrix(A3, 36, N2); matrix(A4, 36, N2); matrix(A5, 36, N2); matrix(A6, 36, N2); matrix(A7, 38, N2); matrix(B0, N2, 43); matrix(B1, N2, 43); matrix(B2, N2, 43); matrix(B3, N2, 43); matrix(B4, N2, 43); matrix(B5, N2, 43); matrix(B6, N2, 43); matrix(B7, N2, 48); for (int i = 0; i < 36; i++) { for (int j = 0; j < N2; j++) { A0[i][j] = A1[i][j] = A2[i][j] = A3[i][j] = A4[i][j] = A5[i][j] = A6[i][j] = k; } } write_matrix_to_file(fio, A0, "A0", 36, N2); write_matrix_to_file(fio, A1, "A1", 36, N2); write_matrix_to_file(fio, A2, "A2", 36, N2); write_matrix_to_file(fio, A3, "A3", 36, N2); write_matrix_to_file(fio, A4, "A4", 36, N2); write_matrix_to_file(fio, A5, "A5", 36, N2); write_matrix_to_file(fio, A6, "A6", 36, N2); for (int i = 0; i < 38; i++) { for (int j = 0; j < N2; j++) { A7[i][j] = k; } } write_matrix_to_file(fio, A7, "A7", 38, N2); cout << "Matrix B consist of: "; int x; cin >> x; for (int i = 0; i < N2; i++) { for (int j = 0; j < 43; j++) { B0[i][j] = B1[i][j] = B2[i][j] = B3[i][j] = B4[i][j] = B5[i][j] = B6[i][j] = x; } } write_matrix_to_file(fio, B0, "B0", N2, 43); write_matrix_to_file(fio, B1, "B1", N2, 43); write_matrix_to_file(fio, B2, "B2", N2, 43); write_matrix_to_file(fio, B3, "B3", N2, 43); write_matrix_to_file(fio, B4, "B4", N2, 43); write_matrix_to_file(fio, B5, "B5", N2, 43); write_matrix_to_file(fio, B6, "B6", N2, 43); for (int i = 0; i < N2; i++) { for (int j = 0; j < 48; j++) { B7[i][j] = x; } } write_matrix_to_file(fio, B7, "B7", N2, 48); } int Pos_Neg(int max, int min) { int number = min + rand() % (max - min + 1); if (number < -10 && number > 10) { return number; } else { Pos_Neg(max, min); } } //Початковий ввід (генерація) даних void auto_input() { matrix(A0, 36, N2); matrix(A1, 36, N2); matrix(A2, 36, N2); matrix(A3, 36, N2); matrix(A4, 36, N2); matrix(A5, 36, N2); matrix(A6, 36, N2); matrix(A7, 38, N2); matrix(B0, N2, 43); matrix(B1, N2, 43); matrix(B2, N2, 43); matrix(B3, N2, 43); matrix(B4, N2, 43); matrix(B5, N2, 43); matrix(B6, N2, 43); matrix(B7, N2, 48); cout << "Enter left side of diapazon: "; int min; cin >> min; //srand(min); cout << "Enter right side of diapazon: "; int max; cin >> max; max = (max - min) + 1; for (int i = 0; i < 36; i++) for (int j = 0; j < N2; j++) A0[i][j] = min + rand() % max; write_matrix_to_file(fio, A0, "A0", 36, N2); for (int i = 0; i < 36; i++) for (int j = 0; j < N2; j++) A1[i][j] = min + rand() % max; write_matrix_to_file(fio, A1, "A1", 36, N2); for (int i = 0; i < 36; i++) for (int j = 0; j < N2; j++) A2[i][j] = min + rand() % max; write_matrix_to_file(fio, A2, "A2", 36, N2); for (int i = 0; i < 36; i++) for (int j = 0; j < N2; j++) A3[i][j] = min + rand() % max; write_matrix_to_file(fio, A3, "A3", 36, N2); for (int i = 0; i < 36; i++) for (int j = 0; j < N2; j++) A4[i][j] = min + rand() % max; write_matrix_to_file(fio, A4, "A4", 36, N2); for (int i = 0; i < 36; i++) for (int j = 0; j < N2; j++) A5[i][j] = min + rand() % max; write_matrix_to_file(fio, A5, "A5", 36, N2); for (int i = 0; i < 36; i++) for (int j = 0; j < N2; j++) A6[i][j] = min + rand() % max; write_matrix_to_file(fio, A6, "A6", 36, N2); for (int i = 0; i < 38; i++) for (int j = 0; j < N2; j++) A7[i][j] = min + rand() % max; write_matrix_to_file(fio, A7, "A7", 38, N2); for (int i = 0; i < N2; i++) for (int j = 0; j < 43; j++) B0[i][j] = min + rand() % max; write_matrix_to_file(fio, B0, "B0", N2, 43); for (int i = 0; i < N2; i++) for (int j = 0; j < 43; j++) B1[i][j] = min + rand() % max; write_matrix_to_file(fio, B1, "B1", N2, 43); for (int i = 0; i < N2; i++) for (int j = 0; j < 43; j++) B2[i][j] = min + rand() % max; write_matrix_to_file(fio, B2, "B2", N2, 43); for (int i = 0; i < N2; i++) for (int j = 0; j < 43; j++) B3[i][j] = min + rand() % max; write_matrix_to_file(fio, B3, "B3", N2, 43); for (int i = 0; i < N2; i++) for (int j = 0; j < 43; j++) B4[i][j] = min + rand() % max; write_matrix_to_file(fio, B4, "B4", N2, 43); for (int i = 0; i < N2; i++) for (int j = 0; j < 43; j++) B5[i][j] = min + rand() % max; write_matrix_to_file(fio, B5, "B5", N2, 43); for (int i = 0; i < N2; i++) for (int j = 0; j < 43; j++) B6[i][j] = min + rand() % max; write_matrix_to_file(fio, B6, "B6", N2, 43); for (int i = 0; i < N2; i++) for (int j = 0; j < 48; j++) B7[i][j] = min + rand() % max; write_matrix_to_file(fio, B7, "B7", N2, 48); } 1 2 3 4 5 6 7 8 9 |