How can I Ensure Transparency in parfor-Loops when using cell2table ?

1 次查看(过去 30 天)
I am using parfor which contains a for loop and in it I have:
ranked_global_firstorder=sortrows(empty_cell_fo,[2],'descend');
ranked_global_firstorder=cell2table(ranked_global_firstorder);
ranked_global_firstorder.Properties.VariableNames=["m","ranked_global_first_order"];
descending_per_Ns_fo(:,k-1)=[table(m);ranked_global_firstorder(:,1)];
I am getting the following error:
Error using cell2table (line 39)
Transparency violation error.
See Ensure Transparency in parfor-Loops or spmd Statements.
If anyone can offer any insight into how I can solve this, I would be very grateful. I am new to parfor and while I did read certain stackexchange pages, I cannot figure it out. Thank you very much in advance. Cheers.
  2 个评论
Walter Roberson
Walter Roberson 2022-11-7
Which MATLAB version are you using? What is the name of the file you stored this code in? And please check whether the cell you are passing in is possibly empty.
Marina-Effrosyni Panteli
Thank you for your reply.
I am using MATLAB R2019a.
The name of the file is Global_Sens.m (did I understand your question correctly?)
empty_cell_fo has been filled in prior to the lines of code I shared. However, I noticed that before the for loop I mention but still in the parfor loop, I have another case of cell2table where the cell is empty. Is an empty cell an issue and if so, how do I go around this?
Thanks again, Walter.

请先登录,再进行评论。

回答(1 个)

Edric Ellis
Edric Ellis 2022-11-7
Most of the table-building functions can have this problem if you do not specify 'VariableNames', like this (tested in R2019a):
parfor i = 1
c = {1, "foo";
2, "bar";
3, "baz"};
t{i} = cell2table(c, 'VariableNames', {'numbers', 'words'});
end
Starting parallel pool (parpool) using the 'Processes' profile ... Connected to the parallel pool (number of workers: 2).
disp(t{1})
numbers words _______ _____ 1 "foo" 2 "bar" 3 "baz"

类别

Help CenterFile Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by