我需要聲明一個有83000行和83000列的矩陣。 當我聲明它在以下形式:在gfortran中分配大矩陣時發生整數溢出
double precision,allocatable :: MAT(:,:)
allocate(MAT(83000,83000))
從MinGW的32位是成功的,但是當我運行* .EXE,我收到以下錯誤代碼通過gfortran的編譯:
integer overflow when calculating the amount of memory to allocate
如果我改變矩陣的維數,即(nrow=100,ncol=100)
,一切正常,所以代碼似乎是正確的。
我的問題是,當尺寸很大時,我該如何聲明矩陣?
83000 * 83000大於最大32位整數值2147483648.這就是溢出的原因,元素數量太大。但是,溢出不會發生在我的計算機上,64字節的整數用於大小。請告訴我們更多關於你的Windows和gfortran的信息。 32位或64位?哪個版本?你如何編譯? –
無論如何,如果您的系統或編譯器是32位的,那麼無論如何您要求的內存太多。 –
@VladimirF thx爲您的答案,我使用MinGW(因此gfortran 32位)在CodeBlocks環境下(Windows 7 64位)。我如何解決我的問題?你推薦編譯器使用? – plus91