小编Ben*_*nny的帖子

用C++ OpenMP代码测量执行时间

我正在以顺序方式运行.cpp代码(i)和(ii)使用OpenMP语句.我想看看时差.为了计算时间,我用这个:

#include <time.h>
.....
main()
{

  clock_t start, finish;
  start = clock();
  .
  .
  .
  finish = clock();

  processing time = (double(finish-start)/CLOCKS_PER_SEC);

 }
Run Code Online (Sandbox Code Playgroud)

在代码的顺序(上面)运行中,时间非常准确.运行它需要大约8秒钟.当我在代码中插入OpenMP语句然后计算时间缩短时,但是在控制台上显示的时间大约为8-9秒,实际上它实际上只有3-4秒!

以下是我的代码抽象的样子:

#include <time.h>
.....
main()
{

  clock_t start, finish;
  start = clock();
  .
  .
  #pragma omp parallel for
  for( ... )
     for( ... )
       for (...)
    {           
      ...;      
    }
  .
  .
  finish = clock();

  processing time = (double(finish-start)/CLOCKS_PER_SEC);

 }
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我得到了减少的时间,但显示的时间在实时方面并不准确.在我看来,似乎clock()函数正在计算每个线程的个别时间并将它们相加并显示它们.

有人能说出这个的原因或建议我使用任何其他计时功能来衡量OpenMP程序的时间吗?

谢谢.

c++ parallel-processing time openmp

27
推荐指数
4
解决办法
3万
查看次数

相当于Windows的gettimeday()

有没有人知道Windows环境中gettimeofday()函数的等效函数?我正在比较Linux与Windows中的代码执行时间.我正在使用MS Visual Studio 2010并且它一直说,标识符"gettimeofday"未定义.

感谢任何指针.

winapi visual-studio-2010

23
推荐指数
3
解决办法
5万
查看次数

OMP - 线程数多于处理器数量?

默认情况下,OpenMP指令:

opm_get_num_threads 给出等同于处理器/核心的线程数.

我有一个8核机器,所以它给了我8个线程.那是最大的吗?如果我故意指定超过8个,我可以获得比8更多的线程吗?

谢谢

c c++ openmp

7
推荐指数
1
解决办法
3377
查看次数

R igraph - 将加权邻接矩阵转换为加权边缘列表

我有一个nxm邻接矩阵,其中(i,j)表示i和j之间关联的分数.我需要将其转换为以下格式,如: i j <score1>

使用R'igraph包并将其输出到文本文件中.

我可以推导出边缘列表,但它没有显示权重.我使用了以下代码:

library(igraph) g <- graph.adjacency(myAdjacencymatrix) get.edgelist(g)

但是,它没有显示重量.

r matrix igraph

4
推荐指数
1
解决办法
9066
查看次数

标签 统计

c++ ×2

openmp ×2

c ×1

igraph ×1

matrix ×1

parallel-processing ×1

r ×1

time ×1

visual-studio-2010 ×1

winapi ×1