OMP串行与并行Riemann Zeta

时间:2016-01-26 21:17:42

标签: c++ parallel-processing openmp icc

我一直在努力学习如何将OpenMP用于c ++,并且我在尝试将其应用于使用Riemann Zeta函数的代码时遇到了巨大的麻烦,我只是这样找到它(在代码),但如果你运行它,你会发现串行过程更快。任何人都可以帮我找到为什么序列比并行更快?

    double rzfParallel(int n, long inf)
    {
        double sum = 0.0;
        #pragma omp parallel for reduction(+:sum) num_threads(8)
            for(int k = 1; k <= inf; k++)
                sum += 1.0/pow(k, (double)n);

        return sum;
    }


   The method to chath time:
   startTime = clock();
   funcResult = rzfParallel(n, inf);
   endTime = clock();
   timeResult = (endTime/CLOCKS_PER_SEC) -(startTime/CLOCKS_PER_SEC);

2 个答案:

答案 0 :(得分:1)

通常:太多时间盯着并行线程,每个线程的工作量太少。

答案 1 :(得分:0)

我用英特尔编译器中的标志-mavx解决了这个问题。我正在努力理解这个问题,还不确定。我的处理器没有矢量化的东西。仍然无法获得-vec报告。如果有人知道怎么做,请告诉我。特别感谢NoseKnowsAll