Общие массивы
SharedArrays.SharedArrayТип
SharedArray{T}(dims::NTuple; init=false, pids=Int[])
SharedArray{T,N}(...)
Создаёт общий SharedArray типа битов 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}(...)
Создаёт общий SharedArray, основанный на файле 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 позволяет пропустить указанное количество байт в начале файла.
SharedArrays.SharedVectorТип
SharedVector
Одномерный SharedArray.
SharedArrays.SharedMatrixТип
SharedMatrix
Двумерный SharedArray.
Distributed.procsМетод
procs(S::SharedArray)
Получение вектора процессов, отображающих общий массив.
исходный код
SharedArrays.sdataФункция
sdata(S::SharedArray)
Возвращает фактический объект Array под S.
SharedArrays.indexpidsФункция
indexpids(S::SharedArray)
Возвращает индекс текущего рабочего процесса в списке рабочих процессов, отображающих SharedArray (т.е. в том же списке, что возвращается procs(S)), или 0, если SharedArray не отображён локально.
SharedArrays.localindicesФункция
localindices(S::SharedArray)
Возвращает диапазон, описывающий «стандартные» индексы, которые должен обрабатывать текущий процесс. Этот диапазон следует интерпретировать в смысле линейной индексации, то есть как поддиапазон 1:length(S). В многопроцессорных контекстах возвращает пустой диапазон в родительском процессе (или любом процессе, для которого indexpids возвращает 0).
Стоит отметить, что localindices существует исключительно для удобства, и вы можете распределять работу по массиву среди рабочих процессов любым способом. Для SharedArray, все индексы должны быть одинаково быстрыми для каждого рабочего процесса.
© 2009–2020 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.4.2/stdlib/SharedArrays/