2011-11-24 26 views

回答

3

@Itamar提供了有關如何MATLAB需要連續的內存來存儲陣列很好的意見,以及有關在內存管理的良好做法,如分塊數據。特別是他關聯的內存管理技術說明是一個很好的資源。無論你的機器有多少內存,這些都是明智的事情。儘管如此,MATLAB的許多應用程序永遠不會被這些技巧所解決,因爲數據集太大了;而且擁有更多內存的機器也可以解決這些問題。 (順便說一下,有時只是購買一臺擁有更多內存的新機器比支付MATLAB開發人員進行所有內存優化更便宜 - 但這是由您決定的) 。

用MATLAB來訪問大量內存並不困難。如果您的Windows或Linux計算機具有64GB(或更高) - 顯然需要運行64位操作系統 - MATLAB將能夠訪問它。我遇到了很多正在這樣做的MATLAB用戶。如果你知道自己在做什麼,你可以建立自己的機器,或者現在你可以購買一臺尺寸爲Dell的機器。

另一個選擇(取決於您的應用程序)將考慮獲取一個小羣集,並使用Parallel Computing ToolboxMATLAB Distributed Computing Server一起使用。

+0

感謝您的信息!我已經檢查出戴爾的頁面,該機器太強大了。我只需要大容量的存儲器,我不關心計算能力。不管怎樣,謝謝! – Benjamin

+0

沒問題,很高興這很有幫助。戴爾的這臺機器僅僅是一個例子,表明大型機器已經可以買到 - 這完全不是戴爾或者特定機器的推薦。我很驚訝地聽到你說你對計算能力不感興趣 - 通常如果你的數據集足夠大以至於需要大量的存儲空間,那麼你也需要合理的計算能力水平來做任何事情該數據集在可容忍的時間長度內。 –

3

當您嘗試在Matlab中分配數組時,Matlab必須具有足夠的連續內存大小的數組,並且如果沒有足夠的連續內存可用,您將得到out of memory錯誤,無論您擁有多少內存電腦。

根據我的經驗,解決方案不是直接處理硬件的與內存相關的屬性,而是以防止分配過大的數組(將數據切割爲塊等)的方式編寫代碼。如果您可以描述您的代碼和您嘗試解決的任務,則可能可以指導您朝這個方向發展。

你可以在這裏閱讀更多:http://www.mathworks.com/support/tech-notes/1100/1106.html

+0

我會盡量讓這個數組很小,但這對我來說很難。不管怎樣,謝謝! – Benjamin

+0

這只是一個例子。考慮使用單精度(Matlab的默認值是double => 2次內存分配),或者代數消除一些中間結果等。 –

相關問題