Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Паралельне представлення алгоритмів

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
СІ
Кафедра:
Кафедра "Спеціалізовані комп’ютерні системи" (СКС)

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Паралельні та розподілені обчислення

Частина тексту файла

Міністерство освіти і науки Національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт з лабораторної роботи № 3 з дисципліни: “Паралельні та розподілені обчислення” на тему: “Паралельне представлення алгоритмів” Мета : Вивчити можливості паралельного представлення алгоритмів. Набути навиків такого представлення. Завдання Запропонувати та реалізувати локально-рекурсивний алгоритм обчислення виразу:  , де А та В матриці з елементами  та , відповідно(), тобто:  () . Тип вхідних послідовностей визначається згідно варіанту. Матриця А задається однозначно і залежить лише від розмірності даних. Для матриці В: заштрихована область – довільні цілі числа, відмінні від нуля, а не заштрихована область – нулі. Варіант № Тип матриці А Тип матриці В   14 111…111 011…110 … 011…110 111…111    Графи залежностей (n = 4) Локалізований граф залежностей Оптимізований граф залежностей      Текст програми #include <iostream> #include <cmath> #include <iomanip> /*void fillFirstMatrix(int** arr, size_t size) { int iterator = 1; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (i > 0 && i < size-1 &&( j==0 || j==size-1)) { arr[i][j] = 0; } else { arr[i][j] = 1; } } bool isTopHalf = i + 1 < round(size / 2.0); if (isTopHalf) { iterator++; } else if (!(i + 1 <= size / 2)) { iterator--; } } }*/ void fillFirstMatrix(int** arr, size_t size) { int iterator = 1; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (j + 1 - iterator <= 0 || size - j <= iterator) { arr[j][i] = 1; } else { arr[j][i] = 0; } } bool isTopHalf = i + 1 < round(size / 2.0); if (isTopHalf) { iterator++; } else if (!(i + 1 <= size / 2)) { iterator--; } } } void fillSecondMatrix(int** arr, size_t size) { int iterator = 1; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (j + 1 - iterator <= 0) { arr[i][j] = rand() % 25 + 1; } else { arr[i][j] = 0; } } bool isTopHalf = i + 1 < round(size / 2.0); if (isTopHalf) { iterator++; } else if (!(i + 1 <= size / 2)) { iterator--; } } } void mularray(int**A, int**B, int n, int**Y) { for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { Y[i][j] = 0; for (int k = 0; k < n; ++k) { Y[i][j] = Y[i][j] + A[i][k] * B[k][j]; } } } } void printMatrix(int** arr, size_t size) { for (int i = 0; i < size; ++i) { for (int j = 0; j < size; ++j) { std::cout << std::setw(4) << arr[i][j]; } std::cout << std::endl; } } void main() { std::cout << "Enter size: " << std::endl;; int size; std::cin >> size; int** arrA = new int*[size]; int** arrB = new int*[size]; int** arrC = new int*[size]; for (int i = 0; i < size; i++) { arrA[i] = new int[size]; arrB[i] = new int[size]; arrC[i] = new int[size]; } fillFirstMatrix(arrA, size); std::cout << "Matrix A:" << std::endl; printMatrix(arrA, size); std::cout << std::endl; fillSecondMatrix(arrB, size); std::cout << "Matrix B:" << std::endl; printMatrix(arrB, size); std::cout << std::endl; mularray(arrA, arrB, size, arrC); std::cout << "Matrix C:" << std::endl; printMatrix(arrC, size); for (size_t i = 0; i < size; i++) { delete[] arrA[i]; delete[] arrB[i]; delete[] arrC[i]; } delete[] arrA; delete[] arrB; delete[] arrC; system("pause"); } Результат виконання роботи: Висновок Виконуючи лабораторну роботу я отримала навички паралельного обчислення алгоритмів на базі множення матриць, також навчилася реалізовувати алгоритм з одноразовим присвоєнням і локально-рекурсивний алгоритм, який працює на базі локалізованого графа.
Антиботан аватар за замовчуванням

28.08.2022 13:08

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини