how to not violate from trnasparency in parloop? (a good replacement for "which" or "exist")
2 views (last 30 days)
Show older comments
Zahra Yousefi Darani
on 7 May 2024
Commented: Edric Ellis
on 8 May 2024
Hello!
inside the body of my parloop, I have to evaluate the existance of sth in my workspace then based on that, run a piece of code,
of course this is not working:
if exist('NHP_SoloB')
Actor_B= string(report_struct.unique_lists.B_Name);
else
Actor_A = string(report_struct.unique_lists.A_Name);
end
%
%
loadedDATA = array2table(report_struct.data,'VariableNames',report_struct.header);
if exist('NHP_SoloB')
Rewarded_Aborted = report_struct.unique_lists.B_OutcomeENUM(loadedDATA.B_OutcomeENUM_idx);
else
Rewarded_Aborted = report_struct.unique_lists.A_OutcomeENUM(loadedDATA.A_OutcomeENUM_idx);
end
exist or which can not be used here bc they violates with transparency rules , do you have any suggestion to be consistent with transparency of the workspace?
0 Comments
Accepted Answer
Steven Lord
on 7 May 2024
How does that variable get created in the workspace? Inside the loop or before? If it gets created inside the loop I'm not sure you'll be able to use parfor at all, as whether or not that variable exists likely depends on which loop iterations have run previously.
Rather than testing for the existence of the variable, can you check for the value of that variable? That could still potentially lead to a violation of loop iteration independence (depending on the exact nature of the calculations you're trying to perform) but it would avoid the transparency rule violation.
2 Comments
Edric Ellis
on 8 May 2024
Maybe it would work to perform the conditional pieces of code ahead of the parfor loop, and have that work with a single named variable? (There can be additional complications other than simply exist when conditionally accessing variables inside parfor which might trip you up).
More Answers (0)
See Also
Categories
Find more on Parallel for-Loops (parfor) in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!