Как узнать, имеет ли Octave полный доступ к 64-битному диапазону памяти - PullRequest
8 голосов
/ 19 февраля 2009

Как узнать, имеет ли Octave полный доступ к 64-битному диапазону памяти?

Можно ли создать матрицу, которая использует более 4 ГБ памяти?

Ответы [ 5 ]

4 голосов
/ 06 декабря 2011

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

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

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
2 голосов
/ 05 апреля 2012

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

Однако, похоже, что пакет octave-devel по-прежнему использует 32-разрядную индексацию Octave по умолчанию, поэтому я не могу загрузить массивы 'int8' больше 2 ГБ. (ссылка: 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

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

1 голос
/ 26 сентября 2013

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

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

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

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

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

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

1 голос
/ 25 июня 2009

Не знаю, поможет ли это вам, но в соответствии с этим: http://wiki.octave.org/wiki.pl?EnableLargeArrays, поддержка более 2 ГБ памяти для массива является экспериментальной.

0 голосов
/ 09 марта 2014

Пакет 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

Существует ли версия Octave, которая может использовать 64-битные файлы .mex?

  • Архитектура PsychHID.mex: x86_64
  • Архитектуры Octave 3.4.0: i386 ppc
  • Моя система: MacBook Pro 5,1 под управлением MacOS 10.6.8

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

...