Создайте распределенный массив из данных в клиентской рабочей области или datastore
D = distributed(X)
D = distributed(X)
создает распределенный массив из X
. X
может быть массивом, сохраненным в клиентской рабочей области MATLAB или datastore. D
является распределенным массивом, сохраненным в частях на рабочих открытого параллельного пула.
Построение распределенного массива от локальных данных, этот путь является соответствующим, только если клиент MATLAB может сохранить полноту X
в ее памяти. Чтобы создать большие распределенные массивы, используйте один из методов конструктора, таких как
, ones(___,'distributed')
, и т.д.zeros(___,'distributed')
Если входной параметр уже является распределенным массивом, результат совпадает с входом.
Используйте gather
, чтобы получить распределенные элементы массива из пула назад к массиву в рабочем пространстве MATLAB.
Создайте небольшой массив и распределите его:
Nsmall = 50; D1 = distributed(magic(Nsmall));
Создайте большой распределенный массив непосредственно, с помощью метода сборки:
Nlarge = 1000;
D2 = rand(Nlarge,'distributed');
Получите элементы распределенного массива и отметьте, где массивы расположены их Class
:
D3 = gather(D2); whos
Name Size Bytes Class D1 50x50 733 distributed D2 1000x1000 733 distributed D3 1000x1000 8000000 double Nlarge 1x1 8 double Nsmall 1x1 8 double
Этот пример показывает, как создать и загрузить распределенные массивы с помощью datastore
. Вы сначала создаете datastore с помощью набора данных в качестве примера. Этот набор данных является слишком небольшим, чтобы показать равное разделение данных по рабочим. Чтобы моделировать действительный большой набор данных, искусственно увеличьте размер datastore с помощью repmat
:
files = repmat({'airlinesmall.csv'}, 10, 1);
ds = tabularTextDatastore(files);
Выберите переменные в качестве примера:
ds.SelectedVariableNames = {'DepTime','DepDelay'}; ds.TreatAsMissing = 'NA';
Составьте распределенную таблицу путем чтения datastore параллельно. Разделите datastore с одним разделом на рабочего. Каждый рабочий затем Считывает все данные от соответствующего раздела. Файлы должны быть в общем ресурсе, доступном от рабочих.
dt = distributed(ds);
Starting parallel pool (parpool) using the 'local' profile ... connected to 4 workers.
Наконец, отобразите итоговую информацию о распределенной таблице:
summary(dt)
Variables: DepTime: 1,235,230×1 double Values: min 1 max 2505 NaNs 23,510 DepDelay: 1,235,230×1 double Values: min -1036 max 1438 NaNs 23,510
Распределенный массив создается на рабочих существующего параллельного пула. Если никакой пул не будет существовать, distributed
запустит новый параллельный пул, если автоматический запуск пулов не будет отключен в ваших параллельных настройках. Если нет никакого параллельного пула, и distributed
не может запуститься один, результатом является полный массив в клиентской рабочей области.