Spec-Zone.ru › Julia 1.9

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

SharedArray представляет массив, общий для нескольких процессов на одном компьютере.

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–2024 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.11/stdlib/SharedArrays/

Spec-Zone.ru

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