OpenMP测量时间正确

时间:2014-06-04 15:41:31

标签: c++ performance timer openmp

我想测量使用C ++(openMP)实现的并行程序的性能

使用此技术测量时间的推荐方法是

double start = omp_get_wtime();

// some code here

double end = omp_get_wtime();
printf_s("Time = %.16g", end - start);

但是我的时间接近0,尽管我等待程序大约8秒钟。 获取执行时间的所有其他方法都返回0.0 还尝试使用这些代码示例

DWORD st = GetTickCount();
time_t time_start = time(NULL);
clock_t start = clock();
auto t1 = Clock::now();     

time_t time_finish = time(NULL);
DWORD fn = GetTickCount();
clock_t finish = clock();
auto t2 = Clock::now();

一切都没有成功。程序花费了大量时间。但结果总是为零。 (在调试和释放模式下) 如果我调试逐步结果与零不同。

这是我的并行#pragma指令

#pragma omp parallel default(none) private(i) shared(nSum, nTheads, nMaxThreads, nStart, nEnd, data, modulo) {
    #pragma omp master
    nTheads = omp_get_num_threads();
    nMaxThreads = omp_get_max_threads();

    #pragma omp for
    for (int i = nStart; i < nEnd; ++i)
    {           
        #pragma omp atomic
        nSum += (power(data[i], i) * i) % modulo;
    }
}

我的错误在哪里?请帮我。我花了很多时间来解决这个问题。

0 个答案:

没有答案