[Л/Р6] Андрианов Е.П #191
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.vs/slnx.sqlite
Normal file
BIN
.vs/slnx.sqlite
Normal file
Binary file not shown.
@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
|
@ -0,0 +1,25 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Этот код создан программой.
|
||||||
|
// Исполняемая версия:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||||
|
// повторной генерации кода.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("RVIP")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("RVIP")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("RVIP")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
|
||||||
|
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
|
||||||
|
|
||||||
|
// Создано классом WriteCodeFragment MSBuild.
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
66522a906b27a1ec8d9c8c161f3a003780b7a4a5
|
@ -0,0 +1,17 @@
|
|||||||
|
is_global = true
|
||||||
|
build_property.ApplicationManifest =
|
||||||
|
build_property.StartupObject =
|
||||||
|
build_property.ApplicationDefaultFont =
|
||||||
|
build_property.ApplicationHighDpiMode =
|
||||||
|
build_property.ApplicationUseCompatibleTextRendering =
|
||||||
|
build_property.ApplicationVisualStyles =
|
||||||
|
build_property.TargetFramework = net6.0-windows
|
||||||
|
build_property.TargetPlatformMinVersion = 7.0
|
||||||
|
build_property.UsingMicrosoftNETSdkWeb =
|
||||||
|
build_property.ProjectTypeGuids =
|
||||||
|
build_property.InvariantGlobalization =
|
||||||
|
build_property.PlatformNeutralAssembly =
|
||||||
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
|
build_property.RootNamespace = RVIP
|
||||||
|
build_property.ProjectDir = C:\Users\Егор\Source\Repos\distributed-computing\tasks\andrianov-ep\lab_5\RVIP\
|
@ -0,0 +1,10 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
global using global::System;
|
||||||
|
global using global::System.Collections.Generic;
|
||||||
|
global using global::System.Drawing;
|
||||||
|
global using global::System.IO;
|
||||||
|
global using global::System.Linq;
|
||||||
|
global using global::System.Net.Http;
|
||||||
|
global using global::System.Threading;
|
||||||
|
global using global::System.Threading.Tasks;
|
||||||
|
global using global::System.Windows.Forms;
|
@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
|
@ -0,0 +1,25 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Этот код создан программой.
|
||||||
|
// Исполняемая версия:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||||
|
// повторной генерации кода.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("RVIP")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("RVIP")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("RVIP")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
|
||||||
|
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
|
||||||
|
|
||||||
|
// Создано классом WriteCodeFragment MSBuild.
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
907a3e31c43acbb6269a04b9bdb75ef402c40a7a
|
@ -0,0 +1,17 @@
|
|||||||
|
is_global = true
|
||||||
|
build_property.ApplicationManifest =
|
||||||
|
build_property.StartupObject =
|
||||||
|
build_property.ApplicationDefaultFont =
|
||||||
|
build_property.ApplicationHighDpiMode =
|
||||||
|
build_property.ApplicationUseCompatibleTextRendering =
|
||||||
|
build_property.ApplicationVisualStyles =
|
||||||
|
build_property.TargetFramework = net6.0-windows
|
||||||
|
build_property.TargetPlatformMinVersion = 7.0
|
||||||
|
build_property.UsingMicrosoftNETSdkWeb =
|
||||||
|
build_property.ProjectTypeGuids =
|
||||||
|
build_property.InvariantGlobalization =
|
||||||
|
build_property.PlatformNeutralAssembly =
|
||||||
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
|
build_property.RootNamespace = RVIP
|
||||||
|
build_property.ProjectDir = C:\Users\Егор\Source\Repos\distributed-computing\tasks\andrianov-ep\lab_5\RVIP\
|
@ -0,0 +1,10 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
global using global::System;
|
||||||
|
global using global::System.Collections.Generic;
|
||||||
|
global using global::System.Drawing;
|
||||||
|
global using global::System.IO;
|
||||||
|
global using global::System.Linq;
|
||||||
|
global using global::System.Net.Http;
|
||||||
|
global using global::System.Threading;
|
||||||
|
global using global::System.Threading.Tasks;
|
||||||
|
global using global::System.Windows.Forms;
|
BIN
tasks/andrianov-ep/lab_6/1.png
Normal file
BIN
tasks/andrianov-ep/lab_6/1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
BIN
tasks/andrianov-ep/lab_6/2.png
Normal file
BIN
tasks/andrianov-ep/lab_6/2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
tasks/andrianov-ep/lab_6/3.png
Normal file
BIN
tasks/andrianov-ep/lab_6/3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
tasks/andrianov-ep/lab_6/4.png
Normal file
BIN
tasks/andrianov-ep/lab_6/4.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
30
tasks/andrianov-ep/lab_6/README.md
Normal file
30
tasks/andrianov-ep/lab_6/README.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Отчет по лабораторной работе №6
|
||||||
|
|
||||||
|
Выполнил студент гр. ИСЭбд-41 Андрианов Е.П.
|
||||||
|
|
||||||
|
## Создание приложения
|
||||||
|
|
||||||
|
Выбрал язык Pythone.
|
||||||
|
|
||||||
|
Приложение на вход получает кол-во поток, далее у нас происходит последовательный расчет детерминанта. После чего выводит всё в консоль
|
||||||
|
|
||||||
|
![](1.png)
|
||||||
|
|
||||||
|
|
||||||
|
## Бенчмарки
|
||||||
|
|
||||||
|
Протестируем обычный и параллельный алгоритм матрицах 100х100, 300х300 и 500х500.
|
||||||
|
|
||||||
|
Матрицы 100х100
|
||||||
|
|
||||||
|
![](2.png)
|
||||||
|
|
||||||
|
Матрицы 300х300
|
||||||
|
|
||||||
|
![](3.png)
|
||||||
|
|
||||||
|
Матрицы 500х500
|
||||||
|
|
||||||
|
![](4.png)
|
||||||
|
|
||||||
|
Вывод: Чем больше у нас кол-во данных, тем разница между параллельным и последовательных становится меньше Как видно из скриншотов для матрицы 500x500 параллельный алгоритм завершил быстрее чем, последовательный.
|
61
tasks/andrianov-ep/lab_6/algo.py
Normal file
61
tasks/andrianov-ep/lab_6/algo.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import numpy as np
|
||||||
|
import time
|
||||||
|
from multiprocessing import Pool
|
||||||
|
|
||||||
|
def determinant(matrix):
|
||||||
|
return np.linalg.det(matrix)
|
||||||
|
|
||||||
|
def parallel_determinant(matrix, num_threads):
|
||||||
|
size = matrix.shape[0]
|
||||||
|
step = size // num_threads
|
||||||
|
pool = Pool(processes=num_threads)
|
||||||
|
blocks = []
|
||||||
|
for i in range(0, size, step):
|
||||||
|
blocks.append(matrix[i:i+step, i:i+step])
|
||||||
|
dets = pool.map(determinant, blocks)
|
||||||
|
return np.prod(dets)
|
||||||
|
|
||||||
|
def benchmark(num_threads):
|
||||||
|
matrix1 = np.random.rand(100, 100)
|
||||||
|
start_time = time.time()
|
||||||
|
det1 = determinant(matrix1)
|
||||||
|
end_time = time.time()
|
||||||
|
execution_time = end_time - start_time
|
||||||
|
print("Матрица 100x100:", matrix1)
|
||||||
|
print("Детерминант матрицы 100x100:", det1)
|
||||||
|
print("Последовательное время выполнения:", execution_time, "сек")
|
||||||
|
start_time = time.time()
|
||||||
|
detp1 = parallel_determinant(matrix1, num_threads)
|
||||||
|
end_time = time.time()
|
||||||
|
execution_time = end_time - start_time
|
||||||
|
print("Пареллельное время выполнения:", execution_time, "сек")
|
||||||
|
matrix2 = np.random.rand(300, 300)
|
||||||
|
start_time = time.time()
|
||||||
|
det2 = determinant(matrix2)
|
||||||
|
end_time = time.time()
|
||||||
|
execution_time = end_time - start_time
|
||||||
|
print("Матрица 300x300:", matrix2)
|
||||||
|
print("Детерминант матрицы 300x300:", det2)
|
||||||
|
print("Последовательное время выполнения:", execution_time, "сек")
|
||||||
|
start_time = time.time()
|
||||||
|
detp2 = parallel_determinant(matrix2, num_threads)
|
||||||
|
end_time = time.time()
|
||||||
|
execution_time = end_time - start_time
|
||||||
|
print("Пареллельное время выполнения:", execution_time, "сек")
|
||||||
|
matrix3 = np.random.rand(500, 500)
|
||||||
|
det3 = determinant(matrix3)
|
||||||
|
end_time = time.time()
|
||||||
|
execution_time = end_time - start_time
|
||||||
|
print("Матрица 500x500:", matrix3)
|
||||||
|
print("Детерминант матрицы 500x500:", det3)
|
||||||
|
print("Последовательное время выполнения:", execution_time, "сек")
|
||||||
|
start_time = time.time()
|
||||||
|
detp3 = parallel_determinant(matrix3, num_threads)
|
||||||
|
end_time = time.time()
|
||||||
|
execution_time = end_time - start_time
|
||||||
|
print("Пареллельное время выполнения:", execution_time, "сек")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("Введите кол-во поток")
|
||||||
|
n = int(input())
|
||||||
|
benchmark(n)
|
Loading…
Reference in New Issue
Block a user