簡體   English   中英

32位matlab程序,64位windows,如何獲得6GB的RAM?

[英]32bit matlab program, 64bit windows, how do I get 6GB of RAM?

我有一些只能在32位窗口上運行的matlab代碼,但我需要至少6 GB的ram才能運行它。 在我的實驗室中,唯一擁有6GB RAM的機器運行64位窗口,有沒有辦法在這里運行此代碼? 我正在考慮模擬32位窗口並在其上運行它,這會工作嗎?

在Windows 64位上作為32位進程運行時,您的32位應用程序將只能處理4 GB。 為了滿足更多內存需要64位應用程序。

我最近一直致力於將我們的幾個大型Matlab代碼從32位Windows XP遷移到64位Windows XP。 與這里的其他一個或兩個回答者不同,我認為現在6GB是一個非常合理的內存需求; 我們這里使用的最大桌面有兩個四核處理器和32GB RAM。 我的一些科學家同事想要更多,但他們總是想要更多。

我會更進一步,建議不要嘗試重寫你的應用程序以減少使用RAM; 那將走向錯誤的方向。 如果將代碼移植到64位計算機上,它會更便宜,更快,並且產生的錯誤更少。 對於那些主張重構使用更少內存的人,我會說

忘記嘗試在32位機器上使用6GB RAM; 正如其他人告訴你的那樣,Matlab和Windows都不會這樣做。 但是,正如其他人所說的那樣,Matlab對位數無動於衷,因此在32位版本上運行的純Matlab代碼將適用於同一版本的64位版本。 如果您從較舊的32位版本遷移到較新的64位版本,您可能會發現一些Matlab函數已經退役,但是您仍然會遇到相同的問題,無論如何都要遷移到更新的32位版本。

如果您的代碼只能在32位Windows上運行,那么我懷疑您使用的是MEX文件。 這些必須重新編譯才能在64位計算機上執行。 同樣,如果您在移植Matlab版本之間移動,請注意注意已退役的功能。 根據我的經驗,另一個主要問題是你可能會對某些基本數據類型的大小做出錯誤的假設。 Fortran和C標准(沒有C ++經驗可言)實際上都沒有指定默認INTEGER(對於Fortran)或int(對於C - 我認為,不是C程序員的大小)的字節大小。 指針大小可能也只是模糊地指定。 這意味着您可能必須(a)更改代碼中的大量變量聲明或(b)使用編譯器指令/標志來指定INTEGERS,REALS,int和其他可能的默認大小。 (b)更容易,(a)可能更適合未來的可維護性。

您無法從32位應用程序訪問6GB的RAM。 這有兩個選擇:

要么優化代碼以使用更少的RAM,要么使Matlab程序與64位兼容。

對於第一個選項,stackoverflow上的優秀人員可以幫助您。

對於第二種選擇:我所知道的Matlab的任何部分都不是32位 - 除非你有一個32位的Matlab版本。 但是,如果您有有效的維護合同,則可以下載並安裝64位版本的Matlab。 如果您的代碼調用為32位Windows編譯的mex函數,則可以嘗試為64位Windows重新編譯它們。

64位Windows將運行32位Windows程序就好了。 但是32位程序將無法訪問6 Gb或內存,因此我不確定是否可以幫助您。

我很確定32位Windows的大多數版本(例如,除了服務器版本之外的所有版本)默認情況下將單個進程限制為2GB,通過更改設置將其限制為3GB ......盡管技術上可以從一個訪問16G的RAM Pentium Pro(和更高版本)CPU處於32位模式,我認為除了Windows Server之外什么都不用

並且為了你的Matlab程序利用它,你必須做一些有趣的多進程工作來手動在3G內存庫之間尋呼

您不能使用6 GB的32位地址。 32位地址只能包含來自的值

0 to 0xffffffff (== 4294967295 == 4GB)

無論您是否明確使用指針,這些地址都被每個32位程序使用並且是必不可少的。

(雖然有一些非常奇特的例外 - 但這些不適用於此)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM