8

我如何知道 Octave 是否可以完全访问 64 位内存范围?

我可以创建一个使用超过 4GB 内存的矩阵吗?

4

5 回答 5

4

我意识到这个问题很老,但它仍然很相关。在 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
于 2011-12-06T09:11:49.850 回答
2

我使用 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

64bit 处处的答案没有显示有效的测试,因为默认 Octave 的 32 位索引允许创建高达 16GB 的“双”数组。

于 2012-04-05T01:59:44.843 回答
1

我不知道这是否对您有帮助,但根据此:http ://wiki.octave.org/wiki.pl?EnableLargeArrays ,支持超过 2 GB 的数组内存是实验性的。

于 2009-06-25T17:21:08.420 回答
1

有两件事是相关的:

  • 64 位指针,允许大于 2 或 4GB 的内存结构

  • 用于索引超过 2^32 个元素的数组的 64 位整数

首先,应该在 64 位系统上编译。第二,编译octave需要--enable64,但更重要的是,你需要链接64位整数索引BLAS库。这是困难的部分。

早在 2008 年,我就设法使用 AMD blas 库(64 位整数 fortran 版本)以这种方式编译了 octave 版本。但是,从那时起,我就无法重现这一点,因为该库已更新并且与我们使用的 Linux 系统(Ubunto 12.04)不兼容。编译 Octave 并与第三方 BLAS 链接太难了。

我在 128 GB 内存的计算机上工作,但我的 octave 脚本仍然只能解决小问题。2GB应该对任何人都足够了...

于 2013-09-25T20:33:43.977 回答
0

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
  • 我的系统是:运行 MacOS 10.6.8 的 MacBook Pro 5,1

这可能是一个 Psychtoolbox 问题,因为我在 中看到 Linux 文件(、、、)的 3 种架构Octave3LinuxFiles,但Octave3LinuxFiles64对于MacOS()只有一种架构。Octave3LinuxFilesARM/Applications/Psychtoolbox/PsychBasicOctave3OSXFiles64

于 2014-03-09T06:03:52.723 回答