簡體   English   中英

如何知道Octave是否可以完全訪問64位內存范圍

[英]How to know if Octave has full access to the 64 bit memory range

如何知道Octave是否可以完全訪問64位內存范圍?

我可以創建一個占用超過4GB內存的矩陣嗎?

我意識到這個問題已經很久了,但它仍然非常重要。 在Mac上是的,我使用自制軟件並包含一個超過4GB矩陣的示例。 目前這個程序有效:

安裝自制程序,然后在終端窗口中運行以下命令。

brew install hg
brew install --use-gcc --HEAD graphicsmagick
brew install gfortran
brew install --use-gcc gnuplot
brew install octave

然后將其添加到〜/ .octaverc:

setenv GNUTERM 'x11'
graphics_toolkit("gnuplot")

享受您的64位八度編譯!

octave:1> a = zeros(500*2^10+1,2^10);
octave:2> whos
Variables in the current scope:

  Attr Name        Size                     Bytes  Class
  ==== ====        ====                     =====  ===== 
        a      512001x1024              4194312192  double
        ans         1x50                       498  cell

Total is 524289074 elements using 4194312690 bytes

我使用MacPorts安裝了64位版本的Octave(octave-devel)。 有關安裝說明,請訪問http://shifteleven.com/articles/2011/11/06/installing-octave-on-osx-with-macports

但是,似乎octave-devel包仍然使用Octave的32位默認索引,因此我無法加載大於2GB的'int8'數組。 (參考: http//www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html )。

這可能是由於octave-devel軟件包沒有編譯Octave依賴的64位版本的線性代數軟件包引起的。

% Load a 3GB int8 vector (32-bit limits to 2GB)
octave:1> a = zeros(1024^3*3, 1, ‘int8′);
error: memory exhausted or requested size too large for range of Octave’s index type — trying to return to prompt

64位無處不在的答案沒有顯示有效的測試,因為默認的Octave的32位索引允許創建高達16GB的“雙”數組。

我不知道這對你有幫助,但根據這個: http//wiki.octave.org/wiki.pl?EnableLargeArrays ,支持超過2 GB的內存用於陣列是實驗性的。

有兩件事是相關的:

  • 64位指針,允許比2或4GB更大的內存結構

  • 64位整數,用於索引具有2 ^ 32個元素的數組

首先,應該在64位系統上進行編譯。 對於第二個,在編譯八度音程時需要--enable64,但更重要的是,您需要鏈接64位整數索引BLAS庫。 這是困難的部分。

早在2008年,我設法使用AMD blas庫(64位整數fortran版本)以這種方式編譯八度音階版本。 但是,從那時起,我無法重現這一點,因為庫已更新,並且與我們使用的Linux系統不兼容(Ubunto 12.04)。 編譯Octave並與第三方BLAS鏈接太簡單了。

我在128 GB內存計算機上工作,但我的八度腳本仍然只能處理小問題。 對於任何人來說2GB應該足夠了......

Matlab / Octave包中的Psychtoolbox有一個64位MacOS版本,帶有64位.mex文件。 據我所知,任何使用.mex文件都會在32位Octave中失敗,消息如下:

error: KbQueueReserve: /Applications/Psychtoolbox/PsychBasic/Octave3OSXFiles64/PsychHID.mex: failed to load: dlopen(/Applications/Psychtoolbox/PsychBasic/Octave3OSXFiles64/PsychHID.mex, 2): no suitable image found.  Did find: 
/Applications/Psychtoolbox/PsychBasic/Octave3OSXFiles64/PsychHID.mex: mach-o, but wrong architecture

是否有可以使用64位.mex文件的Octave版本?

  • PsychHID.mex架構是:x86_64
  • Octave 3.4.0架構是:i386 ppc
  • 我的系統是:MacBook Pro 5,1運行MacOS 10.6.8

這可能是一個Psychtoolbox問題,因為我在/Applications/Psychtoolbox/PsychBasic看到3個Linux文件架構( Octave3LinuxFilesOctave3LinuxFiles64Octave3LinuxFilesARM ),但只有一個用於MacOS( Octave3OSXFiles64 )。

暫無
暫無

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

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