1

Matlab 2011b で数日かかるシミュレーションを実行しています。その結果、シミュレーション データを反復ごとにデータ構造に記録し、次にファイル ( *.mat 形式) に記録しています。シミュレーション/データ ロギングで奇妙な動作が見られます。ログに記録されたマット ファイルが 256 MB 程度を超えると、128 バイトのファイルに置き換えられることがわかりました。サイズは正確にはわかりませんが、128 バイトのファイルに置き換えられる前のファイル サイズは 256 MB 近くかそれ以下であることがわかりました。誰かが同様の問題を抱えているかどうか疑問に思っています。回避策は何ですか? 最大 256MB 程度の Matlab ワークスペース メモリ制限はありますか? その制限を変更する方法はありますか?

私は Matlab 2011b リリースを使用しており、並列計算ツールボックスを使用して、異なる Matlab ワーカーでスクリプトの複数のインスタンス (サーバーで最大 12 コア) を実行しています。各ワーカーのシミュレーションは独立しています。Matlab 2011b は Linux/CentOS/Mac で実行されており、観察はすべてのワーカーで行われ、Windows 7 でも行われます。したがって、微調整できるのは Matlab の設定または構成であると思います。提案や回避策は大歓迎です。

更新: コードの実行内容のサンプル スクリプトを更新しています。反復インデックスは、シミュレーション時間に従って増加する場合があります。

%Matlab workspace memory test 
% filename: sim_workspace_mem_test.m
clear; clc;
TotalData=[];
for i=1:1000
   for j=1:1000
    for k=1:100

        data.x=rand(100,100);
        data.y=randi(100,100);

        TotalData{i,j,k}=data;

    end
    filename='SimData';
    save(filename, 'TotalData');
  end
end
4

1 に答える 1

2

ファイルを何百万回も保存するのはクレイジーです。

clear; 
TotalData = [];
for i=1:1000
  for j=1:1000
    for k=1:100
        data.x=rand(100,100);
        data.y=randi(100,100);
        TotalData{i,j,k}=data;
    end
  end
    if mod(i,10)==0 %Save every 1 percent progress
       filename=['SimData' num2str(i)]; %Give each savefile a different name
       save([filename, 'TotalData');
    end
end
filename='SimData';
save(filename, 'TotalData'); %Just to be safe, we save the final result
于 2012-12-28T08:51:34.383 に答える