Openmp安全的打开文件的方式

时间:2016-10-25 19:46:30

标签: c file openmp

我们说我有一个并行程序,它运行许多(并行化)循环,如下所示:

#pragma omp parallel for
   for(int a=0;a<10;a++)
   {
     for(int b=0;b<10;b++)
     {
       for(int c=0;c<10;c++)
       ....

让我们说我想把所有结果都放在一个文件中。一个简单的方法可能就是这样:

FILE *fp1;
fp1=fopen("file.txt", "a");
#pragma omp parallel for ordered schedule(static, 1)
for(int a=0; a<10;a++)
{
 ...
  for(int c=0; c<10;c++)
  {
   ....
    #pragma omp ordered
    fprintf(fp1,"%f ", result);
   }
}//end of the parallelized section
fclose(fp1)

这种方式是一种解决方案,如果系统不必在内存中保留许多变量,但情况可能就是这样,而且我希望能够确保&#34;确保&#34;每个周期后写入文件。

长话短说我想在我的一个内部循环中放一个fclose和一个fopen,以确保即使(由于某种原因)程序中止,至少会在输出中写入一些东西文件。 有办法吗?

类似的东西:

#pragma omp parallel for
   for(int a=0;a<10;a++)
   {
     for(int b=0;b<10;b++)
     {
       FILE *fp1;
       fopen("file.txt", "a");
       for(int c=0;c<10;c++)
       {
        .... //part with fprintf
        } //c block
       fclose(fp1);
     }
    ....
   }

0 个答案:

没有答案