为什么使用OpenMP的代码要比不使用OpenMP的代码花费更长时间?

时间:2019-04-27 21:47:10

标签: c++ openmp

我是OpenMP的新手,正在尝试学习如何使用它。我使用以下代码并行化for循环。但是似乎使用openMP比不使用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比不使用OpenMP花费的时间更长?我怎么了?

问题2 :如何在上述for循环中使用OpenMP,因此其计算时间会比不使用OpenMP的要快?

0 个答案:

没有答案