1

ゼロ(1500 * 64)を試しましたが、「プログラムで許可されている最大変数サイズを超えています」と表示されます。
しかし、[C、MAXSIZE]=COMPUTERはMAXSIZE=2.1475e + 009を返します
。では、なぜ機能しないのでしょうか。また、Matlabコマンドラインでこのaommandを数回発行しようとした後、ゼロ(500 * 64)からゼロ(1500 * 64)まですべてを試し、許容される最大値を見つけました。プログラムを超えています。」500 * 64の場合、「メモリ不足」が返されることがあります。エラー。その理由は何でしょうか?これは、memoryコマンドが返すものです。

可能な最大アレイ:486 MB(5.094e + 008バイト)*すべてのアレイで使用可能なメモリ:1436 MB(1.506e + 009バイト)** MATLABで使用されるメモリ:353 MB(3.697e + 008バイト)物理メモリ(RAM) :3070 MB(3.219e + 009バイト)

  • 使用可能な連続した仮想アドレス空間によって制限されます。**使用可能な仮想アドレス空間によって制限されます。

[u、s]の出力=メモリ

[u、s]=メモリ

u =

MaxPossibleArrayBytes: 509411328
MemAvailableAllArrays: 1.5057e+009
        MemUsedMATLAB: 369819648

s =

VirtualAddressSpace: [1x1 struct]
       SystemMemory: [1x1 struct]
     PhysicalMemory: [1x1 struct]

要素の数と占有されている合計バイト数の両方の観点から、この情報から許可される最大サイズを計算するにはどうすればよいですか?

4

2 に答える 2

3

コマンド

 x = zeros(1500*64);

倍精度ゼロの正方行列を作成しようとします。1辺あたり96000要素で、73ギガバイトが必要です。

使いたいと思います

x = zeros(1500,64);

これにより、倍精度ゼロの1500 x 64配列が作成され、0.8メガバイトのメモリが必要になります。

于 2012-12-07T01:47:25.637 に答える
1

そのエラーメッセージをグーグルで検索すると、最初のヒットは、MatLabの開発者であるMathWorksの説明的なヘルプページです。

それによると、MatLabのエディションでサポートされている最大行列サイズを学習するには、computerではなくコマンドを使用する必要があります。memory

「メモリ不足」エラーの場合は、によって報告された「可能な最大配列:486 MB(5.094e + 008バイト)」を取得しmemory、配列要素のサイズ(倍精度実数値の場合は8バイト)で除算します。 MatLabがデフォルトで使用するもの)。これが非常に低い理由は、アドレススペースの断片化によるものです。これは、memoryコマンドが「隣接するアドレススペースによって制限されている」と話しているときに通知する内容です。

于 2012-12-07T01:40:30.523 に答える