Я новичок в 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?