Добавил:
Substandart
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программа 2
.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,k;
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;
int total3 = 0;
#pragma omp parallel shared(a,b,c,total1,total2,total3) private(i,j,k)
{
#pragma omp sections
{
#pragma omp section
{
for (i = 0; i < NMAX / 3; i++)
{
if (a[i] >= b[i])
c[i] = a[i];
else
c[i] = b[i];
total1 = total1 + c[i];
}
}
#pragma omp section
{
for (j = NMAX / 3; j < 2 * NMAX / 3; j++)
{
if (a[j] >= b[j])
c[j] = a[j];
else
c[j] = b[j];
total2 = total2 + c[j];
}
}
#pragma omp section
{
for (k = 2 * NMAX / 3; k < NMAX; k++)
{
if (a[k] >= b[k])
c[k] = a[k];
else
c[k] = b[k];
total3 = total3 + c[k];
}
}
}
} /* Завершение параллельного фрагмента */
int total = total1 + total2 + total3;
t2 = omp_get_wtime();
dt = t2 - t1;
delete[] a;
delete[] b;
delete[] c;
printf("Сумма элементов матрицы C равна %d\n", total);
printf("Программа работала %f секунд.\n", dt);
}
Соседние файлы в предмете Технология программирования OpenMP