我正在使用MPI和C++一起使用。我想從一個文件中讀取信息,按照某個規則修改它,然後在同一個文件中寫入修改過的內容。我使用臨時文件,該文件在那裏我存儲經修改的內容,並在結束時,我通過這些命令覆蓋它:使用MPI/C++修改讀取big .txt文件?
temp_file.open("temporary.txt",ios::in);
ofstream output_file(output_name,ios::out);
output_file<<temp_file.rdbuf();
output_file.flush();
temp_file.close();
output_file.close();
remove("temporary.txt");
其中修改文件這個功能是通過MPI過程與秩0所執行從功能退出後,MPI_Barrier(MPI_COMM_WORLD);
被調用以確保同步。 然後,所有的MPI進程都應該讀取已修改的文件並執行一些計算。問題在於,由於文件太大,當功能執行完成時,數據沒有完全寫入文件,並且出現錯誤的結果。我也試着把sleep()
命令,但有時它的工作原理,有時它不(這取決於我執行計算的節點)。有通常的方法來解決這個問題嗎? 我把MPI作爲標籤,但我認爲這個問題本質上與C++標準相關,並且與存儲操作有關。如何處理寫入緩衝區a和寫入存儲介質的文件之間的延遲?