看板 Programming 關於我們 聯絡資訊
※ [本文轉錄自 LinuxDev 看板] 作者: acyang (阿光) 看板: LinuxDev 標題: [問題] linux上跑程式檔案輸出和程式進度不同步的問題 時間: Thu May 14 20:52:29 2009 各位前輩好 小弟在linux based的計算主機上執行一些科學運算程式, 有一個問題困擾了我很久,一直無法解決, 所以想向大家求救, 我是用fortran來寫作程式的, 由於程式執行時間很長,為了保險起見, 程式中有加入輸出"紀錄檔"的程式碼, (紀錄檔指的就是如果程式不幸中斷,可以從這紀錄檔接續開始) 程式如果在windows環境下, 紀錄檔會隨著程式的進行正常地輸出正常地更新, (像是跑完了第1000次疊代,紀錄檔的資訊也更新到第1000次的狀態) 但是如果相同的程式是放在linux based的計算主機上, 紀錄檔並沒有正常發揮作用, 可能程式都跑完了第1000次疊代,紀錄檔卻只有更新到第700次的狀態, 甚至都沒有輸出,要等到程式結束後才會輸出, 這樣一點紀錄的作用都沒有。 請問是linux的環境設定問題呢,還是我程式必須針對不同平台做修正呢, 又還是我在編譯時要下特殊的參數呢? 請有在linux平台上執行過程式的前輩指點一下小弟我吧。 謝謝 註 軟體環境及硬體環境 1.Q6600+技嘉965主機板 opensue11+PGI fortran complier 2.Q6600+技嘉965主機板 windows vista+PGI fortran complier 3.XEON E5410+不知名主機版 SUSE Linux 9+PGI fortran complier 4.AMD64 Opteron Dual Core 2.8 SUSE Linux 9.3+PGI fortran complier 紀錄檔案並不大,不超過1MB, 只有在2的情況下,才會正常地輸出。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.155.8 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.155.8
akasan:fflush() in C or ofs.flush() in C++218.165.171.114 05/14 21:25
akasan:阿我瞎了沒看到是Fotran218.165.171.114 05/14 21:26
acyang:感謝回答,再問一下假設紀錄檔是unit=113, 140.116.155.8 05/15 17:24
acyang:是不是在要強制他寫入硬碟時加上 140.116.155.8 05/15 17:24
acyang:call flush(113)這樣? 140.116.155.8 05/15 17:25