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

Висновки:


Під час виконання розрахункової роботи я розробив паралельний алгоритм перемноження двох матриць на структурі з восьми процесорів та його програмну реалізацію. Також провів обчислення, і отримав часові характеристики даного паралельного алгоритму. Так у результаті, при паралельному обчисленні, було необхідно 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

скачати

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