Задачи по теме "Параллельное программирование: нити"
В качестве образца используйте программу приведения матрицы
к ступенчатому виду, использующую параллельный алгоритм Гаусса
с помощью нитей, а также мьютексы и условные переменные
в качестве объектов синхронизации. Матрица читается из файла
"input.txt", полученная ступенчатая матрица записывается
в файл "output.txt". Программа просит человека ввести число
нитей и в конце печатает время выполнения алгоритма в миллисекундах.
Исходный код программы:
Программа генерации случайной матрицы и записи ее в файл: Пример выполнения:
/home/vvb/Threads>g++ -o generateMatrix generateMatrix.cpp
/home/vvb/Threads>./generateMatrix
Generating a Random Matrix
Enter the number of matrix rows and columns: 8 8
Enter the range of matrix elements (minValue, maxValue): -1 1
-0.124 0.446 0.105 0.165 0.234 0.988 -0.998 -0.401
-0.169 0.469 0.425 0.534 -0.430 0.054 0.116 -0.066
0.197 -0.868 0.549 0.170 0.555 -0.768 0.081 0.833
-0.837 0.447 0.235 0.416 0.688 -0.306 0.416 0.841
0.658 -0.533 -0.937 0.598 -0.326 0.425 -0.262 0.023
0.966 -0.072 -0.162 -0.452 -0.744 -0.954 0.580 0.473
-0.881 0.165 0.102 0.823 -0.268 0.993 -0.554 0.746
-0.268 0.823 -0.369 -0.936 -0.803 -0.060 0.513 0.532
Enter the name of file to write a matrix in:
input.txt
Writing the random matrix to the file input.txt
/home/vvb/Threads>g++ -o parallelMatrixSTL parallelMatrixSTL.cpp
/home/vvb/Threads>./parallelMatrixSTL
Matrix of size 8*8:
8 8
-0.124 0.446 0.105 0.165 0.234 0.988 -0.998 -0.401
-0.169 0.469 0.425 0.534 -0.430 0.054 0.116 -0.066
0.197 -0.868 0.549 0.170 0.555 -0.768 0.081 0.833
-0.837 0.447 0.235 0.416 0.688 -0.306 0.416 0.841
0.658 -0.533 -0.937 0.598 -0.326 0.425 -0.262 0.023
0.966 -0.072 -0.162 -0.452 -0.744 -0.954 0.580 0.473
-0.881 0.165 0.102 0.823 -0.268 0.993 -0.554 0.746
-0.268 0.823 -0.369 -0.936 -0.803 -0.060 0.513 0.532
Enter number of threads: 4
Row echelon form of matrix:
8 8
0.966 -0.072 -0.162 -0.452 -0.744 -0.954 0.580 0.473
0.000 -0.853 0.582 0.262 0.707 -0.573 -0.037 0.737
0.000 0.000 -1.157 0.757 -0.220 1.400 -0.636 -0.717
0.000 0.000 0.000 1.059 -0.317 0.437 -0.192 -0.028
0.000 0.000 0.000 0.000 -0.732 -0.105 0.041 1.262
0.000 0.000 0.000 0.000 0.000 -1.173 0.796 2.072
0.000 0.000 0.000 0.000 0.000 0.000 -0.523 2.126
0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.433
Rank of matrix: 8
Determinant of matrix: -0.196517
Computation time: 1.011 ms
Список задачСтуденты с нечетными номерами по журналу решают первую задачу, с четными — вторую.
|