распределенный

Создайте распределенный массив из данных в клиентской рабочей области или 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 не может запуститься один, результатом является полный массив в клиентской рабочей области.

Смотрите также

| | | | | | |