Если данные в настоящее время находятся в памяти локального компьютера, можно использовать distributed функция для распределения существующего массива из клиентской рабочей области среди работников параллельного пула. Distributed массивы используют объединенную память нескольких работников в параллельном пуле для хранения элементов массива. Альтернативные способы секционирования данных см. в разделе Распределение массивов по параллельным работникам. Вы работаете со всем массивом как с одной сущностью, однако работники работают только со своей частью массива и при необходимости автоматически передают данные между собой. Вы можете использовать distributed массивы для масштабирования вычислений больших данных. Рассмотреть distributed массивы, когда у вас есть доступ к кластеру, так как вы можете объединить память нескольких машин в кластере.
A distributed массив - это одна переменная, разделенная на несколько работников в параллельном пуле. С этой переменной можно работать как с одной отдельной сущностью, не беспокоясь о ее распределенном характере. Ознакомьтесь с функциональными возможностями, доступными для distributed массивы в Toolbox™ параллельных вычислений: выполнение функций MATLAB с распределенными массивами.
При создании distributed массив, невозможно управлять подробностями дистрибутива. С другой стороны, codistributed массивы позволяют управлять всеми аспектами распределения, включая размеры и секции. Далее вы узнаете, как создавать оба distributed и codistributed массивы.
Распределенный массив можно создать различными способами:
Используйте distributed функция для распределения существующего массива из клиентской рабочей области среди работников параллельного пула.
Распределенный массив можно создать непосредственно на рабочих. Нет необходимости сначала создавать массив в клиенте, чтобы уменьшить требования к памяти рабочей области клиента. Доступные функции: , eye(___,'distributed')и т.д. Полный список см. в разделе rand(___,'distributed')distributed страница ссылки на объект.
Создать codistributed массив внутри spmd см. раздел Несколько данных одной программы (spmd). Затем получить доступ к нему как к distributed массив за пределами spmd заявление. Это позволяет использовать схемы распределения, отличные от схем по умолчанию.
В этом примере создается массив в клиентской рабочей области, а затем он превращается в распределенный массив.
parpool('local',4) % Create pool A = magic(4); % Create magic 4-by-4 matrix B = distributed(A); % Distribute to the workers B % View results in client. whos % B is a distributed array here. delete(gcp) % Stop pool
Вы создалиB в качестве distributed массив, разделенный на работников в параллельном пуле. Это показано на рисунке.

В отличие от этого, distributed массивы, codistributed массивы позволяют управлять всеми аспектами распределения, включая размеры и секции. Можно создать codistributed массив различными способами:
Разбиение большего массива - начните с большого массива, который реплицируется на всех работников, и разбиение его таким образом, чтобы части распределялись между работниками. Это наиболее удобно при наличии достаточного объема памяти для хранения исходного реплицированного массива.
Создание из меньших массивов - начните с меньших реплицированных массивов, хранящихся на каждом работнике, и объедините их таким образом, чтобы каждый массив стал сегментом большего распределенного массива. Этот метод снижает требования к памяти, так как позволяет создавать распределенный по коду массив из небольших частей.
Использование функций конструктора MATLAB - использование любой из функций конструктора MATLAB ®, напримерrand или zeros с аргументом объекта codistributor. Эти функции предлагают быстрое средство построения совместно распределенного массива любого размера всего за один шаг.
В этом примере создается codistributed массив внутри spmd , используя схему распределения, не используемую по умолчанию. Сначала определите распределение 1-D по третьему измерению: 4 детали на работнике 1 и 12 деталей на работнике 2. Тогда создайте множество нолей 3 на 3 на 16.
parpool('local',2) % Create pool spmd codist = codistributor1d(3,[4,12]); Z = zeros(3,3,16,codist); Z = Z + labindex; end Z % View results in client. whos % Z is a distributed array here. delete(gcp) % Stop pool
Дополнительные сведения о распределенных по кодам массивах см. в разделе Работа с распределенными по кодам массивами.