MATLAB 'Gather' в Tall Array никогда не завершается
Я запускаю R2017a в Windows 10 и использую массив больших массивов, который был создан из объекта Datastore (который сам был построен из высоких массивов, построенных на матрицах двойных 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');
Как вы можете видеть, это почти как ваниль. Но операция 'sz = collect (sz)' просто висит навсегда. Это никогда не заканчивается или возвращается. Мой параллельный пул запущен правильно, и операция сбора достигает точки, где выводится "Оценка выполнена на 100%". Но это никуда не денется. Если я приостанавливаю выполнение, меня всегда переводят в точку RemoteSpdmExecutor, строка 129 'obj.RemoteSpmdController.drainIO( false);'. Эта линия, видимо, длится вечно.
РЕДАКТИРОВАТЬ: Когда я проснулся сегодня, он начал сбой с сообщением об ошибке вместо: "Ошибка с использованием параллельного.FevalOnAllFuture/fetchOutputs (строка 69) fetchOutputs не может объединить OutputArguments. Установите "UniformOutput" в false. Ссылка на содержимое ячейки из объекта массива не из ячейки. '
РЕДАКТИРОВАТЬ: пересоздал мой локальный параллельный пул по умолчанию пару раз. Теперь вернемся к той же строке кода.
Основываясь на всех моих тестах, кажется, что моя проблема возникает всякий раз, когда я создаю хранилище данных из нескольких папок с массивами, а затем создаю массив из этого хранилища данных.
Вырвать мои волосы над этим. Если у кого-то есть подозрения, где искать источник этой проблемы, я был бы признателен. Я постараюсь быстро ответить на запросы о дополнительной информации.