diff --git a/volkov_rafael_lab_6/README.md b/volkov_rafael_lab_6/README.md
new file mode 100644
index 0000000..3230b76
--- /dev/null
+++ b/volkov_rafael_lab_6/README.md
@@ -0,0 +1,31 @@
+# Лабораторная работа №6
+
+Задание:
+
+Требуется сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять нахождение отдельной группы множителей.
+
+Сделать несколько бенчмарков последовательного и параллельного алгоритма поиска детерминанта матрицы размером 100x100, 300x300, 500x500 элементов. Отразить свои наблюдения в readme-отчете.
+
+
+
Код приложения
+
+
+
+
Код приложения
+
+
+
+
Код приложения
+
+
+
+
Результат работы программы
+
+
+
+Вывод: Параллельный алгоритм не сильно ускорил работу программы, его стоит использовить при матрице большего размера например 10000х10000
+
+
+# Видео
+
+Видео с разбором лабораторной - [Видео](https://drive.google.com/file/d/1iRBMH7q0hDcnjJdc5xW9Fy3K8da1ioNi/view?usp=sharing)
diff --git a/volkov_rafael_lab_6/screens/img1.png b/volkov_rafael_lab_6/screens/img1.png
new file mode 100644
index 0000000..e3b2696
Binary files /dev/null and b/volkov_rafael_lab_6/screens/img1.png differ
diff --git a/volkov_rafael_lab_6/screens/img2.png b/volkov_rafael_lab_6/screens/img2.png
new file mode 100644
index 0000000..c3fa28f
Binary files /dev/null and b/volkov_rafael_lab_6/screens/img2.png differ
diff --git a/volkov_rafael_lab_6/screens/img3.png b/volkov_rafael_lab_6/screens/img3.png
new file mode 100644
index 0000000..a49715c
Binary files /dev/null and b/volkov_rafael_lab_6/screens/img3.png differ
diff --git a/volkov_rafael_lab_6/screens/img4.png b/volkov_rafael_lab_6/screens/img4.png
new file mode 100644
index 0000000..e2bd671
Binary files /dev/null and b/volkov_rafael_lab_6/screens/img4.png differ
diff --git a/volkov_rafael_lab_6/volkov_rafael_lab_6.sln b/volkov_rafael_lab_6/volkov_rafael_lab_6.sln
new file mode 100644
index 0000000..02e59eb
--- /dev/null
+++ b/volkov_rafael_lab_6/volkov_rafael_lab_6.sln
@@ -0,0 +1,16 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "volkov_rafael_lab_6", "volkov_rafael_lab_6\volkov_rafael_lab_6.csproj", "{220726F0-CFF1-4C4A-B032-1B558BC62238}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {220726F0-CFF1-4C4A-B032-1B558BC62238}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {220726F0-CFF1-4C4A-B032-1B558BC62238}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {220726F0-CFF1-4C4A-B032-1B558BC62238}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {220726F0-CFF1-4C4A-B032-1B558BC62238}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/volkov_rafael_lab_6/volkov_rafael_lab_6/Program.cs b/volkov_rafael_lab_6/volkov_rafael_lab_6/Program.cs
new file mode 100644
index 0000000..4181047
--- /dev/null
+++ b/volkov_rafael_lab_6/volkov_rafael_lab_6/Program.cs
@@ -0,0 +1,102 @@
+using System.Diagnostics;
+
+class Program
+{
+ static double[,] GenerateRandomMatrix(int size)
+ {
+ Random random = new Random();
+ double[,] matrix = new double[size, size];
+
+ for (int i = 0; i < size; i++)
+ {
+ for (int j = 0; j < size; j++)
+ {
+ matrix[i, j] = random.Next(0, 10);
+ }
+ }
+
+ return matrix;
+ }
+
+ static double SequentialMatrixDeterminant(double[,] matrix)
+ {
+ int size = matrix.GetLength(0);
+ double det = 1;
+
+ for (int i = 0; i < size; i++)
+ {
+ det *= matrix[i, i];
+ }
+
+ return det;
+ }
+
+ static double ParallelMatrixDeterminant(double[,] matrix, int numThreads)
+ {
+ int size = matrix.GetLength(0);
+ int chunkSize = size / numThreads;
+
+ double[] determinants = new double[numThreads];
+ object lockObject = new object();
+
+ Parallel.For(0, numThreads, threadIndex =>
+ {
+ int startRow = threadIndex * chunkSize;
+ int endRow = (threadIndex == numThreads - 1) ? size : (threadIndex + 1) * chunkSize;
+
+ double threadDeterminant = 1;
+ for (int i = startRow; i < endRow; i++)
+ {
+ threadDeterminant *= matrix[i, i];
+ }
+
+ lock (lockObject)
+ {
+ determinants[threadIndex] = threadDeterminant;
+ }
+ });
+
+ double resultDeterminant = 1;
+ foreach (var det in determinants)
+ {
+ resultDeterminant *= det;
+ }
+
+ return resultDeterminant;
+ }
+
+ static Tuple Benchmark(int matrixSize, int numThreads)
+ {
+ double[,] matrix = GenerateRandomMatrix(matrixSize);
+
+ // Замер времени для последовательного алгоритма
+ Stopwatch stopwatch = Stopwatch.StartNew();
+ double sequentialResult = SequentialMatrixDeterminant(matrix);
+ double sequentialTime = stopwatch.Elapsed.TotalSeconds;
+
+ // Замер времени для параллельного алгоритма
+ stopwatch.Restart();
+ double parallelResult = ParallelMatrixDeterminant(matrix, numThreads);
+ double parallelTime = stopwatch.Elapsed.TotalSeconds;
+
+ return Tuple.Create(sequentialTime, parallelTime);
+ }
+
+ static void Main()
+ {
+ int[] matrixSizes = { 100, 300, 500 }; // Для демонстрации используем небольшие матрицы
+ Console.Write("Введите количество потоков: ");
+ int numThreads = int.Parse(Console.ReadLine());
+
+ foreach (var size in matrixSizes)
+ {
+ Console.WriteLine($"Matrix size: {size}x{size}");
+ var times = Benchmark(size, numThreads);
+
+ Console.WriteLine($"Sequential algorithm time: {times.Item1:F6} seconds");
+ Console.WriteLine($"Parallel algorithm time ({numThreads} threads): {times.Item2:F6} seconds");
+
+ Console.WriteLine(new string('=', 30));
+ }
+ }
+}
diff --git a/volkov_rafael_lab_6/volkov_rafael_lab_6/volkov_rafael_lab_6.csproj b/volkov_rafael_lab_6/volkov_rafael_lab_6/volkov_rafael_lab_6.csproj
new file mode 100644
index 0000000..53387b9
--- /dev/null
+++ b/volkov_rafael_lab_6/volkov_rafael_lab_6/volkov_rafael_lab_6.csproj
@@ -0,0 +1,28 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
+
+ README.md
+
+
+ screens\img1.png
+
+
+ screens\img2.png
+
+
+ screens\img3.png
+
+
+ screens\img4.png
+
+
+
+