Если ваши данные находятся в настоящее время в памяти о вашей локальной машине, можно использовать функцию distributed
, чтобы распределить существующий массив от клиентской рабочей области до рабочих параллельного пула. массивы Distributed
используют объединенную память о нескольких рабочих в параллельном пуле, чтобы сохранить элементы массива. Для альтернативных способов разделить данные, смотрите Распределительные Массивы, чтобы быть Параллельными Рабочим. Можно использовать массивы distributed
, чтобы увеличить большое вычисление данных. Рассмотрите массивы distributed
, когда у вас есть доступ к кластеру, когда можно объединить память о нескольких машинах в кластере.
Массив distributed
является одной переменной, разделенной по нескольким рабочим в вашем параллельном пуле. Можно работать с этой переменной как одна одна сущность, не имея необходимость волноваться о ее распределенном характере. Исследуйте функциональности, доступные для массивов distributed
в Parallel Computing 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
Вы имеете 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.