看板 Fortran 關於我們 聯絡資訊
你的問題,可以分為兩部份來討論. 一個是"k"可以開多大的空間,可以k(100)還是可以到k(10000000000000) 這個,就要請你看看你使用的fortran的手冊了,一般都會有上限. 此外,你說只能用2gb?那應該是你OS的極限, 如果你用32bits的OS,比如說WINXP 32bits or Linux 32bits, 基本上 32bits OS就只能使用4gb的memory,東扣扣,西扣扣,你的程式最多就只能用2gb囉. 要解決不難,你使用64 bits 的OS+ 64 bits 的complier,你就可以超越2gb的極限了. 我這所說的2gb是指一整個code可以使用超過2gb的ram,不是單指一個"k"陣列. 也許單一陣列會無法開到2gb?那要看你的fortran. 不過,就我自己的經驗,如果你的code使用超過2gb的ram,那算是大的code, 那最好不要在小pc跑, 光是那些do, do wile的迴圈數就很大,所以code會很慢,跑幾個月得到一個結果不實在. 應該找個超級電腦或是平行你的code. 如果有錯, 還請先進指教啊. ※ 引述《s06yji3 (阿南)》之銘言: : implicit none : integer i : real*16 k(125000000) : k = 0.0 : do i = 1, 1000 : k=k+1.0 : end do : end : 這是我寫的code,原本預計他可以用到10gb的記憶體作計算 : 不過目前看到大概也只用到2gb而已。 : 如果把k(125000000)再增加一個order的話,編譯器就會出問題。 : 想請問,有沒有什麼寫法,可以直接用到10~30GB記憶體容量的小程式 : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 141.212.168.98
gilocustom:16byte*125000000=2,000,000,000byte ~ 2GB 09/09 02:42
blc:unix like有時候kernel和shell也會限制記憶體,當然也能解除。 09/09 09:47