OMP 串行与并行黎曼 Zeta

OMP Serial vs Parallel Riemann Zeta

我一直在尝试学习如何将 OpenMP 用于 C++,但在尝试将其应用于使用黎曼 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);

通常:启动并行线程的时间太多,每个线程的工作太少。

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