2009-02-19 16 views

Respuesta

4

Me doy cuenta de que la pregunta es antigua pero sigue siendo bastante relevante. En una Mac sí, utilicé homebrew e incluí un ejemplo de una matriz de más de 4 GB a continuación. Actualmente este procedimiento funciona:

Instale homebrew y luego ejecute lo siguiente en una ventana de terminal.

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

A continuación, añadir esto a ~/.octaverc:

setenv GNUTERM 'x11' 
graphics_toolkit("gnuplot") 

Disfrute de su 64 bits octava compilar!

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 es correcto, los punteros siguen siendo de 32 bits. Debería ser posible solucionar algunos problemas emulando arreglos int uint de 8 bits con ints más grandes y luego enmascarando. Dado que esto no es ideal, estoy siguiendo esto en la página homebrew github. – thirdhaf

1

Instalé una versión de 64 bits de Octave (octave-devel) con MacPorts. Las instrucciones de instalación están disponibles en http://shifteleven.com/articles/2011/11/06/installing-octave-on-osx-with-macports.

Sin embargo, parece que el paquete octave-devel todavía usa la indexación predeterminada de 32 bits de Octave, por lo que no puedo cargar matrices de 'int8' mayores de 2GB. (ref: http://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html).

Esto puede deberse a que el paquete octave-devel no compila versiones de 64 bits de los paquetes de álgebra lineal de los que depende Octave.

% 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 

de 64 bits en todas partes es la respuesta no muestra una prueba válida porque la indexación de 32 bits el valor por defecto de Octave permite la creación de matrices 'doble' de hasta 16 GB.

0

hay dos cosas que son relevantes:

  • 64 punteros de bits, lo que permite estructuras de memoria de más de 2 o 4 GB

  • enteros de 64 bits para indexar arrays con más de 2^32 elementos

Por primera vez, la compilación en un sistema de 64 bits debería hacer. Por el segundo, necesita --enable64 en la compilación de octava, pero lo más importante es que necesita vincular con librerías BLAS de índice entero de 64 bits. Esta es la parte difícil.

Ya en 2008, logré compilar una versión de octava de esta manera, utilizando las bibliotecas AMD Blas (la versión de 64 bits enteros fortran). Sin embargo, desde entonces, no he podido reproducir esto porque la biblioteca se actualizó y no era compatible con el sistema Linux que usamos (Ubunto 12.04). Compilar Octave y enlazar con un tercero BLAS era simplemente demasiado difícil.

Trabajo en computadoras con 128 GB de memoria, pero mis scripts de octava solo pueden resolver pequeños problemas. 2GB debería ser suficiente para cualquier persona ...

0

El paquete Matlab/Octave Psychtoolbox tiene una versión de 64 bits de MacOS con archivos .mex de 64 bits.Por lo que yo sé, cualquier uso de los archivos .mex fallará en 32 bits de octava, con mensajes como:

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 

¿Hay una versión de Octave que se pueden utilizar archivos .mex de 64 bits?

  • arquitectura PsychHID.mex es: x86_64
  • Octave 3.4.0 arquitecturas son: ppc i386
  • Mi sistema es: MacBook Pro 5,1 con MacOS 10.6.8

Es Es posible que esto sea un problema de Psychtoolbox, ya que veo 3 arquitecturas para archivos de Linux (Octave3LinuxFiles, Octave3LinuxFiles64, Octave3LinuxFilesARM) en /Applications/Psychtoolbox/PsychBasic, pero solo una para MacOS (Octave3OSXFiles64).

Cuestiones relacionadas