Matlab 並列計算ツールボックスの parfor cicle がメモリでどのように機能するかを理解していません。すべてのワーカー間でメモリを共有することを読みました (その後、すべてのワーカー (コア) がローカル コピーを作成せずに目的のメモリ位置にアクセスできると思います)。他の参考文献は、すべてのコアがメモリ(変数など)のローカルコピーを作成することを教えてくれます。答えは何ですか?Parfor には共有メモリ システムがあり、データのコピーを作成していませんか、それともすべてのワーカーがデータのローカル コピーを持っていますか? ありがとう
2269 次
1 に答える
4
MDCSクラスターを使用している場合、PARFOR は複数のマシンで動作できるため、必要なデータをワーカーにコピーできる必要があります。たまたま、ワーカーがデスクトップ MATLAB と同じホスト上にある場合でもデータをコピーします。この理由の 1 つは、MATLAB にはいつ配列を安全に共有できるかを理解する手段がないためです。これは、「スライスされた」データではなく、「ブロードキャスト」されたデータに適用されることに注意してください。配列が「スライス」されると、関連する部分のみが各ワーカーに送信されます。次の不自然な例では:
broadcast = rand(400);
slicedIn = rand(400);
parfor idx = 1:400
slicedOut(idx) = numel(broadcast) + sum(slicedIn(:, idx));
end
次に、すべてがbroadcast
各ワーカーにコピーされます。一方、 と の必要な部分だけslicedIn
がslicedOut
コピーされます。詳細はこちら: http://www.mathworks.co.uk/help/distcomp/advanced-topics.html#bq_of7_-1
于 2013-07-15T07:34:03.717 に答える