Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб 3 Задание 1

.cpp
Скачиваний:
3
Добавлен:
16.07.2021
Размер:
887 б
Скачать
#include <stdio.h>
#include <omp.h>
#include <locale.h>
#include <time.h>

void main()
{
	const int NMAX = 10000000;
	setlocale(LC_ALL, "Rus");
	int i;
	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 total = 0;
#pragma omp parallel shared(a,b,c)
	{
#pragma omp for private(i) reduction(+:total)
		for (i = 0; i < NMAX; i++)
		{
			if (a[i] > b[i])
				c[i] = a[i];
			else
				c[i] = b[i];
			total = total + c[i];
		}
	} /* Завершение параллельного фрагмента */

	t2 = omp_get_wtime();
	dt = t2 - t1;

	delete[] a;
	delete[] b;
	delete[] c;

	printf("Сумма элементов матрицы C равна %d\n", total);

	printf("Программа работала %f секунд.\n", dt);

}