Почему мой код с использованием OpenMP занимает больше времени, чем без OpenMP? - PullRequest
0 голосов
/ 28 апреля 2019

Я новичок в OpenMP и пытаюсь научиться его использовать. Я использую следующий код для распараллеливания цикла for. Но кажется, что использование openMP занимает больше времени, чем без него. Вот мой код:

#include <omp.h>
#include <stdio.h>
#include <ctime>
#include <ratio>
#include <chrono>
using namespace std::chrono;

void simple(int n)
{
int i;
int d;
#pragma omp parallel
#pragma omp for
for (i=1; i<n; i++) /* i is private by default */
    d = (10000 + 4564) / 2.0;
}


int main ()
{
high_resolution_clock::time_point t1 = high_resolution_clock::now();
simple(90000000);
high_resolution_clock::time_point t2 = high_resolution_clock::now();
duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
std::cout << "Time: " << time_span.count() << " seconds.";
}

Я использую эту командную строку для компиляции:

g++ -g -O2  test-2.cpp  -o l  -std=gnu++11

Время занимает без OpenMP: 1.885e-06

и с OpenMP: 0,00434578

Вопрос 1 : Почему использование OpenMP занимает больше времени, чем без него в приведенном выше коде? В чем моя ошибка?

Вопрос 2 : Как я могу использовать OpenMP в вышеупомянутом цикле for, чтобы время его вычисления было быстрее, чем без использования OpenMP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...