我正在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'为假。 单元格内容引用非单元格数组对象。'
编辑:重新创建我的默认本地并行池几次。现在它又回到了同一行代码上。
根据我的所有测试,似乎每当我从多个高数组文件夹构建一个高数据存储区,然后从该数据存储区构建一个高数组时,就会出现问题。
在这一个上撕掉我的头发。如果有人甚至怀疑在哪里寻找这个问题的根源,我会很感激。我会尝试快速响应有关更多信息的请求。