2009-02-19 6 views

risposta

4

Mi rendo conto che la domanda è vecchia ma è ancora abbastanza pertinente. Su un Mac sì, ho usato homebrew e includo un esempio di una matrice oltre 4 GB di seguito. Attualmente questa procedura funziona:

Installare homebrew e quindi eseguire quanto segue in una finestra di terminale.

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

Quindi aggiungere questo a ~/.octaverc:

setenv GNUTERM 'x11' 
graphics_toolkit("gnuplot") 

Godetevi il vostro 64 bit ottava compilare!

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 
+0

@Somealias è corretta, i puntatori sono ancora a 32 bit. Dovrebbe essere possibile aggirare alcuni problemi emulando gli array int o uint a 8 bit con valori maggiori e mascherando. Dal momento che questo non è l'ideale, lo sto seguendo sulla pagina github homebrew. – thirdhaf

1

Ho installato una versione a 64 bit di Octave (octave-devel) utilizzando MacPorts. Le istruzioni di installazione sono disponibili al http://shifteleven.com/articles/2011/11/06/installing-octave-on-osx-with-macports.

Tuttavia, sembra che il pacchetto octave-devel utilizzi ancora l'indicizzazione predefinita di Octave a 32 bit, quindi non è possibile caricare matrici di "int8" superiori a 2 GB. (riferimento: http://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html).

Questo potrebbe essere causato dal pacchetto octave-devel che non compila le versioni a 64 bit dei pacchetti di algebra lineare da cui Octave dipende.

% 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 

64bit è ovunque risposta non mostra un test valido perché l'indicizzazione a 32 bit il valore di default di Octave permette la creazione di array 'doppio' fino a 16GB.

0

Ci sono due cose che sono rilevanti:

  • 64 bit puntatori, permettendo strutture di memoria più grande di 2 o 4GB

  • 64 interi bit per le matrici di indicizzazione con più di 2^32 elementi

Per la prima, la compilazione su un sistema a 64 bit dovrebbe fare. Per il secondo, è necessario --enable64 nella compilazione di ottava, ma, soprattutto, è necessario collegarsi con le librerie BLAS di indice intero a 64 bit. Questa è la parte difficile.

Nel 2008, sono riuscito a compilare una versione di ottava in questo modo, utilizzando le librerie blas AMD (la versione fortran a 64 bit interi). Tuttavia, da allora, non sono stato in grado di riprodurlo, perché la libreria è stata aggiornata e non era compatibile con il sistema Linux che usiamo (Ubunto 12.04). Compilare Octave e collegarsi a un BLAS di terze parti era semplicemente troppo difficile.

Io lavoro su 128 GB di memoria, ma i miei script di ottava possono ancora solo affrontare piccoli problemi. 2 GB dovrebbe essere sufficiente per chiunque ...

0

Il pacchetto Matlab/Octave Psychtoolbox ha una versione MacOS a 64 bit con file .mex a 64 bit.Per quanto ne so, qualsiasi uso dei file .mex fallirà a 32 bit Octave, con messaggi come:

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 

Esiste una versione di Octave che possono utilizzare i file .mex a 64 bit?

  • PsychHID.mex architettura è: x86_64
  • Octave 3.4.0 architetture sono: ppc i386
  • Il mio sistema è: MacBook Pro 5,1 in esecuzione MacOS 10.6.8

E ' possibile che questo è un problema Psychtoolbox, siccome vedo 3 architetture per i file di Linux (Octave3LinuxFiles, Octave3LinuxFiles64, Octave3LinuxFilesARM) in /Applications/Psychtoolbox/PsychBasic, ma solo uno per MacOS (Octave3OSXFiles64).