如何在OpenMP中从多个线程中保存文件中的wtime差异?

时间:2017-08-18 06:47:40

标签: c performance parallel-processing openmp

我正在尝试将OpenMP用于数据库内部项目以提高性能。我需要将运行时间(使用omp_get_wtime())保存在文件中,因为我无法通过此程序将任何内容打印到控制台。请建议是否有更好的方法。我试图从所有线程写入一个文件(参见下面的代码),但是当线程数超过一个时,这就会崩溃。请帮忙。提前谢谢。

  FILE *fp = NULL;
  fp = fopen("/home/fopen.txt","a");
  ...
  omp_set_num_threads(2);
  fprintf(fp,"Num of threads: %d\n",omp_get_num_threads());


#pragma omp parallel default(shared) private(tid)
  {
      tid = omp_get_thread_num();

      #pragma omp critical
      fprintf(fp,"ThreadID of this thread is %d\n",tid);
      :
      :
  }
  if (fp != NULL)
  fclose(fp);

1 个答案:

答案 0 :(得分:0)

需要为记录时间设置一个数组,让每个线程写入数组的一个元素(由线程号索引)。在并行区域之后剩余的活动线程将数组写入文件。感谢@High Performance Mark。