ВИКОРИСТАННЯ ФУНКЦІОНАЛЬНОЇ ДЕКОМПОЗИЦІЇ ДЛЯ РОЗВ’ЯЗКУ ОБЧИСЛЮВАЛЬНИХ ЗАДАЧ
Інформація про навчальний заклад
ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
СІ
Кафедра:
Кафедра "Спеціалізовані комп’ютерні системи" (СКС)
Інформація про роботу
Рік:
2023
Тип роботи:
Лабораторна робота
Предмет:
Паралельні та розподілені обчислення
Частина тексту файла
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
/
Звіт з лабораторної роботи №2
з дисципліни: «Паралельні та розподілені обчислення»
Варіант 14
Мета роботи: вивчити методи декомпозицій задач. Набути навиків розв’язування задач з використанням функціональної декомпозиції.
ЗАВДАННЯ
1.Використовуючи метод функціональної декомпозиції, розробити алгоритм обчислення запропонованого матрично-векторного виразу, який би враховував можливість паралельного виконання і був оптимальним з точки зору часових затрат.
2. На основі створеного алгоритму написати програму використовуючи засоби МPI яка дозволяє обчислити вираз та ілюструє проведену декомпозицію для оптимальної кількості процесорів.
3. Дослідити ефективність паралельного обчислення за критерієм часу.
Завдання згідно варіанту
/
Аналіз задачі
Для заданого виразу вхідними даними є:
розмірність матриць – N;
матриці ;
вектори-стовпці .
Ці параметри повинні вводитися з клавіатури, або генеруватися випадковим чином (крім розмірності). При чому, елементи всіх матриць та векторів є цілими додатними числами, більшими за нуль. Вектор-стовпець та матриця обраховуються, виходячи з уведеної розмірності.
Матриця C2 повинна генеруватись за формулою:
Cij=14/(i+j4)
Вектор стовпець b повинен генеруватись за формулою:
bi=14/(i3) – для парних і
bi=1/(i+14) – для непарних і
Декомпозиція/
Рис.1. Декомпозиція
y1 - результат множення матриці А на вектор-стовпець b є вектор-стовпець.
y2 - результатом множення матриці А1 на вектор-стовпець «14b1+14c1» є вектор-стовпець.
Y3 - результатом множення матриці на матрицю є матриця, та при додаванні матриць результатом буде також матриця.
Y3^3 - матриця
y2y1’ – матриця
y2’Y3 – рядок
y2’Y3y1 – число
y2’Y3y1Y3 - матриця
Y3^3y1y1’ – матриця
Y3^3y1y1’+ y2y1’+ y2’Y3y1Y3 – матриця
Результат роботи
Для тестування MPI ввела вручну кожен елемент матриць та векторів як двійку з розміром матриць та векторів N = 2 із виводом результатів на екран та у файл, кількість процесів 3. Екзешник запускається в терміналі.
/ /
/ /
Рис.2.1 та 2.2. Результати роботи програм
Перевірка в Matlab (лайв скрипт)
Задання векторів та матриць:
i = 1
j = 1
bi = zeros(2,1)
Cij = zeros(2,2)
A2 = [2 2; 2 2]
B2 = [2 2; 2 2]
A = [2 2; 2 2]
A1 = [2 2; 2 2]
b1 = [2; 2]
c1 = [2; 2]
while i<=2
if(mod(i,2) == 0)
bi(i)=14/(i*i*i)
else
bi(i)=1/(i+14)
end
i=i+1
end
i=1
j=1
while i<3
while j<3
Cij(i,j)=14/(i+j*j*j*j)
j=j+1
end
j = 1
i=i+1
end
y1 = A*bi
y2 = A1*((14*b1)+(14*c1))
Y3 = (A2*Cij)-B2
res1 = Y3*Y3*Y3*y1*y1'
res2 = y2*y1'
res3 = y2'*Y3*y1*Y3
X = res1 + res2 + res3
Результат перевірки:
i = 1
j = 1
bi = 2×1
0
0
Cij = 2×2
0 0
0 0
A2 = 2×2
2 2
2 2
B2 = 2×2
2 2
2 2
A = 2×2
2 2
2 2
A1 = 2×2
2 2
2 2
b1 = 2×1
2
2
c1 = 2×1
2
2
bi = 2×1
0.0667
0
i = 2
bi = 2×1
0.0667
1.7500
i = 3
i = 1
j = 1
Cij = 2×2
7 0
0 0
j = 2
Cij = 2×2
7.0000 0.8235
0 0
j = 3
j = 1
i = 2
Cij = 2×2
7.0000 0.8235
4.6667 0
j = 2
Cij = 2×2
7.0000 0.8235
4.6667 0.7778
j = 3
j = 1
i = 3
y1 = 2×1
3.6333
3.6333
y2 = 2×1
224
224
Y3 = 2×2
21.3333 1.2026
21.3333 1.2026
res1 = 2×2
105 ×
1.5109 1.5109
1.5109 1.5109
res2 = 2×2
813.8667 813.8667
813.8667 813.8667
res3 = 2×2
105 ×
7.8256 0.4411
7.8256 0.4411
X = 2×2
105 ×
9.3446 1.9602
9.3446 1.9602
Вміст файлу 0.txt:
N = 2.000000
Cij =
7.000000 0.823529
4.666667 0.777778
bi =
0.066667
1.750000
c1 =
2.000000
2.000000
A2 =
2.000000 2.000000
2.000000 2.000000
B2 =
2.000000 2.000000
2.000000 2.000000
A1 =
2.000000 2.000000
2.000000 2.000000
A =
2.000000 2.000000
2.000000 2.000000
b1 =
2.000000...
Завантаження файлу
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше