Spec-Zone.ru › Julia 1.0

Общие массивы

SharedArrays.SharedArrayТип

SharedArray{T}(dims::NTuple; init=false, pids=Int[])
SharedArray{T,N}(...)

Создаёт общий массив типа битов T и размера dims для процессов, указанных в pids — все они должны находиться на одном хосте. Если N задан вызовом SharedArray{T,N}(dims), то N должен совпадать с длиной dims.

Если pids не указан, общий массив будет сопоставлен всем процессам на текущем хосте, включая главный. Однако, localindices и indexpids будут ссылаться только на рабочие процессы. Это облегчает распределение работы, когда рабочие процессы выполняют вычисления, а главный процесс выступает в роли драйвера.

Если задана функция init типа initfn(S::SharedArray), она вызывается на всех участвующих рабочих процессах.

Общий массив остается допустимым, пока ссылка на объект SharedArray существует на узле, который создал отображение.

SharedArray{T}(filename::AbstractString, dims::NTuple, [offset=0]; mode=nothing, init=false, pids=Int[])
SharedArray{T,N}(...)

Создаёт общий массив, поддерживаемый файлом filename, с типом элементов T (должен быть типом битов) и размером dims, для процессов, указанных в pids — все они должны находиться на одном хосте. Этот файл отображается в памяти хоста, что влечёт за собой следующие последствия:

  • Данные массива должны быть представлены в двоичном формате (например, формат ASCII, такой как CSV, не поддерживается)

  • Любые изменения, которые вы вносите в значения массива (например, A[3] = 0), также изменят значения в файле на диске

Если pids не указан, общий массив будет сопоставлен всем процессам на текущем хосте, включая главный. Однако, localindices и indexpids будут ссылаться только на рабочие процессы. Это облегчает распределение работы, когда рабочие процессы выполняют вычисления, а главный процесс выступает в роли драйвера.

mode должен быть одним из "r", "r+", "w+", или "a+", и по умолчанию равен "r+" если файл, указанный в filename, уже существует, или "w+" в противном случае. Если указана функция init типа initfn(S::SharedArray), она вызывается на всех участвующих рабочих процессах. Вы не можете указать функцию init если файл не доступен для записи.

offset позволяет пропустить указанное количество байтов в начале файла.

исходный код

Distributed.procsМетод

procs(S::SharedArray)

Возвращает вектор процессов, сопоставляющих общий массив.

исходный код

SharedArrays.sdataФункция

sdata(S::SharedArray)

Возвращает фактический объект Array , поддерживающий S.

исходный код

SharedArrays.indexpidsФункция

indexpids(S::SharedArray)

Возвращает индекс текущего рабочего процесса в списке рабочих процессов, сопоставленных с общим массивом SharedArray (то есть в том же списке, что и возвращаемый procs(S)), или 0, если общий массив не сопоставлен локально.

исходный код

SharedArrays.localindicesФункция

localindices(S::SharedArray)

Возвращает диапазон, описывающий «стандартные» индексы, которые обрабатывает текущий процесс. Этот диапазон следует интерпретировать в смысле линейной индексации, то есть как поддиапазон 1:length(S). В многопроцессорных контекстах возвращает пустой диапазон в родительском процессе (или любом процессе, для которого indexpids возвращает 0).

Стоит подчеркнуть, что localindices существует только в качестве удобства, и вы можете разделить работу над массивом среди рабочих процессов любым способом. Для эффективного выполнения SharedArray, все индексы должны быть равнозначны по скорости для каждого рабочего процесса.

исходный код

© 2009–2019 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.0.4/stdlib/SharedArrays/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API