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

3 лаба / main2

.cpp
Скачиваний:
9
Добавлен:
04.02.2022
Размер:
850 б
Скачать
#include <iostream>
#include <windows.h>
#include <time.h>
#include <omp.h>
using std::cout;
using std::endl;

const int N = 100000000, BLOCKSIZE = 9308310, MAX_THREADS = 16, TIMES = 10;

int main(){
    DWORD t1;

    long double pi = 0.0, averageTime = 0.0;

    for (int j = 0; j < TIMES; j++){
        pi = 0.0;
        t1 = clock();

        #pragma omp parallel shared(t1) reduction (+:pi) num_threads(MAX_THREADS)
        {
            #pragma omp for schedule(dynamic, BLOCKSIZE) nowait
            for (int i = 0; i < N; ++i){
                long double x = (i + 0.5) / N;
                pi += 4 / (1 + x * x);
            }
        }

        pi /= (long double)N;
        averageTime += clock() - t1;
    }

    cout << "pi: " << pi << endl;
    cout << "Average time: " << (long double)(averageTime / TIMES) / CLOCKS_PER_SEC << endl;
}
Соседние файлы в папке 3 лаба