我正在尝试将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);
答案 0 :(得分:0)
需要为记录时间设置一个数组,让每个线程写入数组的一个元素(由线程号索引)。在并行区域之后剩余的活动线程将数组写入文件。感谢@High Performance Mark。