Re: [問題] 怎麼寫可需要用到大量記憶體的小程式

看板Fortran作者 (dv6000)時間15年前 (2009/09/09 02:08), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串3/3 (看更多)
你的問題,可以分為兩部份來討論. 一個是"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

09/09 02:42, , 1F
16byte*125000000=2,000,000,000byte ~ 2GB
09/09 02:42, 1F

09/09 09:47, , 2F
unix like有時候kernel和shell也會限制記憶體,當然也能解除。
09/09 09:47, 2F
文章代碼(AID): #1AffsorE (Fortran)
文章代碼(AID): #1AffsorE (Fortran)