8

Octave が 64 ビットのメモリ範囲に完全にアクセスできるかどうかを知るにはどうすればよいですか?

4GB を超えるメモリを使用するマトリックスを作成できますか?

4

5 に答える 5

4

質問が古いことは承知していますが、それでもかなり関連性があります。はい、Mac では自作を使用し、以下に 4GB を超えるマトリックスの例を含めます。現在、この手順は機能します。

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
于 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が依存する線形代数パッケージの64ビットバージョンをコンパイルしていないoctave-develパッケージが原因である可能性があります。

% 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

デフォルトのOctaveの32ビットインデックスでは最大16GBの「double」アレイを作成できるため、64ビットのどこでも答えは有効なテストを示していません。

于 2012-04-05T01:59:44.843 に答える
1

それが役立つかどうかはわかりませんが、これによると: http://wiki.octave.org/wiki.pl?EnableLargeArrays、配列の2 GBを超えるメモリのサポートは実験的です。

于 2009-06-25T17:21:08.420 に答える
1

関連することが 2 つあります。

  • 2 GB または 4 GB よりも大きなメモリ構造を可能にする 64 ビット ポインタ

  • 2^32 要素を超える配列のインデックス付けには 64 ビット整数

まず、64 ビット システムでコンパイルする必要があります。2 つ目は、オクターブのコンパイルに --enable64 が必要ですが、さらに重要なことに、64 ビット整数のインデックス付け BLAS ライブラリとリンクする必要があります。これは難しい部分です。

2008 年に、AMD blas ライブラリ (64 ビット整数の Fortran バージョン) を使用して、この方法で octave のバージョンをコンパイルすることができました。ただし、それ以来、ライブラリが更新され、使用している Linux システム (Ubunto 12.04) と互換性がなかったため、これを再現できませんでした。Octave をコンパイルしてサードパーティの BLAS とリンクするのは、単純に難しすぎました。

私は 128 GB メモリのコンピューターで作業していますが、私のオクターブ スクリプトは依然として小さな問題にしか対処できません。誰でも2GBで十分なはずです...

于 2013-09-25T20:33:43.977 に答える
0

Matlab/Octave パッケージの Psychtoolbox には、64 ビット .mex ファイルを含む 64 ビット MacOS バージョンがあります。私の知る限り、.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 ファイル ( Octave3LinuxFilesOctave3LinuxFiles64Octave3LinuxFilesARM) には 3 つのアーキテクチャが見られる/Applications/Psychtoolbox/PsychBasicのに対し、MacOS ( ) には 1 つしかないためOctave3OSXFiles64です。

于 2014-03-09T06:03:52.723 に答える