In-place editing of (co)distributed arrays?
1 回表示 (過去 30 日間)
古いコメントを表示
If I have a large distributed array A, and I do some in-place operation to it inside an SPMD block, here's what I would write:
spmd
A_codistr = getCodistributor(A);
local_A = getLocalPart(A);
local_A = some_inplace_operation(local_A);
A = codistributed.build(local_A, A_codistr);
end
However, is it true that this would create a copy of local_A on each machine, because the reference to A still exists when you call getLocalPart on it? Is the MATLAB PCT smart enough to recognize that I am simply doing in-place operations on the local parts of A?
If not, what would be a good way to ensure that normal in-place operation in MATLAB can be done on local parts of distributed arrays?
0 件のコメント
回答 (1 件)
Jill Reese
2012 年 7 月 2 日
This is the right way to perform an in-place operation with codistributed arrays. You should also make sure that the implementation of some_inplace_operation uses in-place optimization like so:
function local_A = some_inplace_operation(local_A)
% do stuff with A and overwrite the input
end
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Distributed Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!