1 / 1302_3_1
.pdf#pragma omp parallel sections num_threads(4)
{
#pragma omp section
{
for (int i = 0; i < size / 4; ++i) { for (int j = 0; j < size; ++j) {
result[i][j] = 0.0;
}
for (int k = 0; k < size; ++k) { for (int j = 0; j < size; ++j) {
result[i][j] += a[i][k] * b[k][j];
}
}
}
}
#pragma omp section
{
for (int i = size / 4; i < size / 2; ++i) { for (int j = 0; j < size; ++j) {
result[i][j] = 0.0;
}
for (int k = 0; k < size; ++k) { for (int j = 0; j < size; ++j) {
result[i][j] += a[i][k] * b[k][j];
}
}
}
}
#pragma omp section
{
21
for (int i = size / 2; i < 3 * size / 4; ++i) { for (int j = 0; j < size; ++j) {
result[i][j] = 0.0;
}
for (int k = 0; k < size; ++k) { for (int j = 0; j < size; ++j) {
result[i][j] += a[i][k] * b[k][j];
}
}
}
}
#pragma omp section
{
for (int i = 3 * size / 4; i < size; ++i) { for (int j = 0; j < size; ++j) {
result[i][j] = 0.0;
}
for (int k = 0; k < size; ++k) { for (int j = 0; j < size; ++j) {
result[i][j] += a[i][k] * b[k][j];
}
}
}
}
}
}
22
ПРИЛОЖЕНИЕ Б Блок-схемы алгоритмов программы
Блок-схема последовательного алгоритма умножения матриц
23
Блок-схема параллельного алгоритма (директива for)
24
Блок-схема параллельного алгоритма (директива sections)
25
