我编写了这段代码,它在for循环中执行一些计算要求很高的任务,我使用openMP进行并行化。所以我可以跟踪程序的位置,我将它输出到文件中它在循环中的当前位置。当我在没有标志的情况下编译它时,这种方法很有效,但是当我使用-O3时,整个输出都被延迟,直到循环完成。有没有办法防止这种情况发生,并确保程序遵循我给它的任务的顺序?这是一个示例代码:
FILE *out;
int progress = 0, i;
out = fopen("output.txt","w");
#pragma omp parallel for
for(i=0; i<132; i++){
progress++
fprintf(out,"%d/132\n",progress);
...
}