Если ваши данные находятся в настоящее время в памяти о вашей локальной машине, можно использовать distributed
функция, чтобы распределить существующий массив от клиентской рабочей области до рабочих параллельного пула. Distributed
массивы используют объединенную память о нескольких рабочих в параллельном пуле, чтобы сохранить элементы массива. Для альтернативных способов разделить данные, смотрите Распределительные Массивы, чтобы быть Параллельными Рабочим. Можно использовать distributed
массивы, чтобы увеличить ваш большой расчет данных. Рассмотрите distributed
массивы, когда у вас есть доступ к кластеру, когда можно объединить память о нескольких машинах в кластере.
distributed
массив является одной переменной, разделенной по нескольким рабочим в вашем параллельном пуле. Можно работать с этой переменной как одна одна сущность, не имея необходимость волноваться о ее распределенном характере. Исследуйте функциональности, доступные для distributed
массивы в Parallel Computing Toolbox™: Запустите функции MATLAB с Распределенными Массивами.
Когда вы создаете distributed
массив, вы не можете управлять деталями распределения. С другой стороны, codistributed
массивы позволяют вам управлять всеми аспектами распределения, включая размерности и разделы. В следующем вы изучаете, как создать оба distributed
и codistributed
массивы.
Можно создать распределенный массив по-разному:
Используйте distributed
функция, чтобы распределить существующий массив от клиентской рабочей области до рабочих параллельного пула.
Можно непосредственно создать распределенный массив на рабочих. Вы не должны сначала создавать массив в клиенте, так, чтобы клиентские требования к памяти рабочей области уменьшались. Доступные функции включают eye
(___, 'распределенный')
, и т.д. Для полного списка, смотрите rand
(___, 'распределенный')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
У вас есть createdB
как distributed
массив, разделенный по рабочим в вашем параллельном пуле. Это показано на рисунке.
В отличие от distributed
массивы, codistributed
массивы позволяют вам управлять всеми аспектами распределения, включая размерности и разделы. Можно создать codistributed
массив по-разному:
Разделение Большего Массива — Запускается с большого массива, который реплицирован во всех рабочих, и разделите его так, чтобы части были распределены на рабочих. Это является самым полезным, когда у вас есть достаточная память, чтобы сохранить реплицированный массив начальной буквы.
Создание от Меньших массивов — Запускается с меньших реплицированных массивов, сохраненных на каждом рабочем, и комбинирует их так, чтобы каждый массив стал сегментом большего codistributed массива. Этот метод уменьшает требования к памяти, когда он позволяет вам создать codistributed массив из мелких кусочков.
Используя Функции конструктора MATLAB — Использование любая из функций конструктора MATLAB® как rand
или zeros
с codistributor возражают аргументу. Эти функции предлагают быстрые средние значения построения codistributed массива любого размера всего на одном шаге.
В этом примере вы создаете codistributed
массив в spmd
оператор, с помощью схемы распределения не по умолчанию. Во-первых, задайте 1D распределение по третьему измерению с 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
Для получения дополнительной информации о codistributed массивах смотрите Работу с Массивами Codistributed.