[問題] linux上跑程式檔案輸出和程式進度不同ꠠ…

看板Fortran作者 (阿光)時間15年前 (2009/05/14 20:54), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
※ [本文轉錄自 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

05/15 10:03, , 1F
會不會在buffer裡面? flush看看..@@
05/15 10:03, 1F

05/15 17:21, , 2F
感謝回答,再問一下假設紀錄檔是unit=113,是不是在
05/15 17:21, 2F

05/15 17:22, , 3F
要強制他寫入硬碟時加上call flush(113)這樣?
05/15 17:22, 3F
文章代碼(AID): #1A31H-51 (Fortran)
文章代碼(AID): #1A31H-51 (Fortran)