MATLAB'收集'在高阵列永远不会终止

时间:2017-07-31 12:31:49

标签: matlab matlabpool

我正在Windows 10上运行R2017a,并使用一个由数据存储对象构建的高大数组(也就是说,它本身是由基于双打的MATLAB矩阵构建的高大数组构建的。)

我现在遇到的问题真正让我感到困惑的是我的所有代码都运行良好。有一天,当我试图跑它时它就开始悬挂了。

这是有问题的街区:

%load
tallTraindat = tall(datastore);
sz = size(tallTraindat);
sz = gather(sz);
numExamples = sz(1);
exampleLen = sz(2);

我的高阵列是一个M x~1700单阵列,在这个较小的单个阵列的数据存储区上构建。循环中:

write(fname,tallEx); % tall ex constructed by tall(someSingles);
folderNames{end+1} = fname;

然后:

ds = datastore(folderNames,'Type','tall');

正如你所看到的,这就像它的香草一样。但是操作&#s; sz = gather(sz)'简直挂了。它永远不会完成或返回。我的并行池已正确启动,并且收集操作达到了打印“评估100%完成”的程度。但它从那里无处可去。如果我暂停执行,我总是在RemoteSpdmExecutor中找到一点,第129行' obj.RemoteSpmdController.drainIO(false);'。这条线显然是永恒的。

编辑:当我今天醒来时,它开始失败并显示错误消息:'使用parallel.FevalOnAllFuture / fetchOutputs时出错(第69行)     fetchOutputs无法连接OutputArguments。设置' UniformOutput'为假。         单元格内容引用非单元格数组对象。'

编辑:重新创建我的默认本地并行池几次。现在它又回到了同一行代码上。

根据我的所有测试,似乎每当我从多个高数组文件夹构建一个高数据存储区,然后从该数据存储区构建一个高数组时,就会出现问题。

在这一个上撕掉我的头发。如果有人甚至怀疑在哪里寻找这个问题的根源,我会很感激。我会尝试快速响应有关更多信息的请求。

0 个答案:

没有答案