2009-02-19 3 views

ответ

4

Я понимаю, что вопрос старый, но он по-прежнему весьма уместен. На Mac да, я использовал homebrew и включил пример матрицы размером более 4 ГБ ниже. В настоящее время эта процедура работает:

Установите доморощенный, а затем запустите следующее в окне терминала.

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

@Somealias правильно, указатели все еще 32-битные. Должно быть возможно обойти некоторые проблемы, эмулируя 8-битные массивы int или uint с более крупными int и затем маскируя. Поскольку это вряд ли идеально, я слежу за этим на странице homebrew github. – thirdhaf

1

Я установил 64-разрядную версию Octave (октава-девел) с использованием MacPorts. Инструкции по установке доступны по адресу http://shifteleven.com/articles/2011/11/06/installing-octave-on-osx-with-macports.

Однако оказалось, что пакет octave-devel по-прежнему использует 32-битную индексацию по умолчанию Octave, поэтому я не могу загрузить массивы «int8» размером более 2 ГБ. (ref: http://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html).

Это может быть вызвано пакетом octave-devel, не компилирующим 64-битные версии пакетов линейной алгебры, от которых зависит 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 

64bit везде это ответ не показывает действительный тест, потому что 32-битная индексация по умолчанию Октава в позволяет создавать «двойные» массивы до 16 Гб.

0

Есть две вещи, которые имеют отношение:

  • 64-битные указатели, позволяющие более крупные структуры памяти, чем 2 или 4 Гб

  • 64-битных чисел для индексации массивов с более чем 2^32 элементов

Для первого следует выполнить сборку на 64-битной системе. Для второго вам нужно --enable64 в компиляции октавы, но что более важно, вам нужно связать с 64-битными библиотеками BLAS с индексированием целых чисел. Это трудная часть.

Еще в 2008 году мне удалось скомпилировать версию октавы таким образом, используя библиотеки AMD blas (64-битная целочисленная версия fortran). Однако с тех пор я не смог воспроизвести это, потому что библиотека обновилась и не была совместима с используемой нами системой Linux (Ubunto 12.04). Компиляция Octave и связь с третьей стороной BLAS были слишком сложными.

Я работаю на 128 ГБ компьютерах памяти, но мои октавные скрипты все еще могут решать только небольшие проблемы. 2GB должно быть достаточно для любого ...

0

Пакет Matlab/Octave Psychtoolbox имеет 64-разрядную версию MacOS с 64-разрядными файлами .mex.Насколько я знаю, любое использование .mex файлов произойдет сбой в 32-битном октавы, с сообщениями как:

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 файлы?

  • PsychHID.mex Архитектура: x86_64
  • Octave 3.4.0 архитектур: i386 ппц
  • Моя система: MacBook Pro 5,1 работает MacOS 10.6.8

Это возможно, что это проблема Psychtoolbox, так как я вижу 3 архитектуры для файлов Linux (Octave3LinuxFiles, Octave3LinuxFiles64, Octave3LinuxFilesARM) в /Applications/Psychtoolbox/PsychBasic, но только для MacOS (Octave3OSXFiles64).

 Смежные вопросы

  • Нет связанных вопросов^_^