
Добавил:
Substandart
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программа 3
.cpp#include <stdio.h>
#include <omp.h>
#include <locale.h>
#include <time.h>
void main()
{
const int NMAX = 10;
setlocale(LC_ALL, "Rus");
int i, j;
int* a = new int[NMAX];
int* b = new int[NMAX];
int* c = new int[NMAX];
for (i = 0; i < NMAX; i++)
a[i] = i;
for (i = 0; i < NMAX; i++)
b[i] = 100 - i;
// инициализация данных
double t1, t2, dt;
t1 = omp_get_wtime();
int total1 = 0;
int total2 = 0;
#pragma omp parallel shared(a,b,c,total1, total2) private(i,j)
{
#pragma omp sections
{
#pragma omp section
{
for (i = 0; i < NMAX / 2; i++)
{
if (a[i] >= b[i])
c[i] = a[i];
else
c[i] = b[i];
#pragma omp critical
total1 = total1 + c[i];
}
}
#pragma omp section
{
for (j = NMAX / 2; j < NMAX; j++)
{
if (a[j] >= b[j])
c[j] = a[j];
else
c[j] = b[j];
#pragma omp critical
total2 = total2 + c[j];
}
}
}
} /* Завершение параллельного фрагмента */
int total = total1 + total2;
t2 = omp_get_wtime();
dt = t2 - t1;
delete[] a;
delete[] b;
delete[] c;
printf("Сумма элементов матрицы C равна %d\n", total);
printf("Программа работала %f секунд.\n", dt);
}
Соседние файлы в предмете Технология программирования OpenMP