Octave が 64 ビットのメモリ範囲に完全にアクセスできるかどうかを知るにはどうすればよいですか?
4GB を超えるメモリを使用するマトリックスを作成できますか?
質問が古いことは承知していますが、それでもかなり関連性があります。はい、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
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ビットのどこでも答えは有効なテストを示していません。
それが役立つかどうかはわかりませんが、これによると: http://wiki.octave.org/wiki.pl?EnableLargeArrays、配列の2 GBを超えるメモリのサポートは実験的です。
関連することが 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で十分なはずです...
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 はありますか?
これは Psychtoolbox の問題である可能性があります。Linux ファイル ( Octave3LinuxFiles
、Octave3LinuxFiles64
、Octave3LinuxFilesARM
) には 3 つのアーキテクチャが見られる/Applications/Psychtoolbox/PsychBasic
のに対し、MacOS ( ) には 1 つしかないためOctave3OSXFiles64
です。