我们说我有一个并行程序,它运行许多(并行化)循环,如下所示:
#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);
}
....
}