Shared Arrays
SharedArray
représente un tableau, qui est partagé entre plusieurs processus, sur une seule machine.
SharedArrays.SharedArray
— TypeSharedArray{T}(dims::NTuple; init=false, pids=Int[])
SharedArray{T,N}(...)
Construit un SharedArray
d'un type de bits T
et de taille dims
à travers les processus spécifiés par pids
- tous devant être sur le même hôte. Si N
est spécifié en appelant SharedArray{T,N}(dims)
, alors N
doit correspondre à la longueur de dims
.
Si pids
est laissé non spécifié, le tableau partagé sera mappé à travers tous les processus sur l'hôte actuel, y compris le maître. Cependant, localindices
et indexpids
ne feront référence qu'aux processus de travail. Cela facilite le code de distribution de travail pour utiliser des travailleurs pour le calcul réel avec le processus maître agissant comme un conducteur.
Si une fonction init
de type initfn(S::SharedArray)
est spécifiée, elle est appelée sur tous les travailleurs participants.
Le tableau partagé est valide tant qu'une référence à l'objet SharedArray
existe sur le nœud qui a créé le mappage.
SharedArray{T}(filename::AbstractString, dims::NTuple, [offset=0]; mode=nothing, init=false, pids=Int[])
SharedArray{T,N}(...)
Construit un SharedArray
soutenu par le fichier filename
, avec un type d'élément T
(doit être un type de bits) et de taille dims
, à travers les processus spécifiés par pids
- tous devant être sur le même hôte. Ce fichier est mappé dans la mémoire de l'hôte, avec les conséquences suivantes :
- Les données du tableau doivent être représentées au format binaire (par exemple, un format ASCII comme CSV ne peut pas être pris en charge)
- Toute modification que vous apportez aux valeurs du tableau (par exemple,
A[3] = 0
) changera également les valeurs sur le disque
Si pids
est laissé non spécifié, le tableau partagé sera mappé à travers tous les processus sur l'hôte actuel, y compris le maître. Cependant, localindices
et indexpids
ne feront référence qu'aux processus de travail. Cela facilite le code de distribution de travail pour utiliser des travailleurs pour le calcul réel avec le processus maître agissant comme un conducteur.
mode
doit être l'un de "r"
, "r+"
, "w+"
, ou "a+"
, et par défaut à "r+"
si le fichier spécifié par filename
existe déjà, ou "w+"
sinon. Si une fonction init
de type initfn(S::SharedArray)
est spécifiée, elle est appelée sur tous les travailleurs participants. Vous ne pouvez pas spécifier de fonction init
si le fichier n'est pas écrivable.
offset
vous permet de sauter le nombre spécifié d'octets au début du fichier.
SharedArrays.SharedVector
— TypeSharedVector
Un tableau unidimensionnel SharedArray
.
SharedArrays.SharedMatrix
— TypeSharedMatrix
Un SharedArray
bidimensionnel.
Distributed.procs
— Methodprocs(S::SharedArray)
Obtenez le vecteur des processus mappant le tableau partagé.
SharedArrays.sdata
— Functionsdata(S::SharedArray)
Retourne l'objet Array
réel soutenant S
.
SharedArrays.indexpids
— Functionindexpids(S::SharedArray)
Renvoie l'index du travailleur actuel dans la liste des travailleurs mappant le SharedArray
(c'est-à-dire dans la même liste retournée par procs(S)
), ou 0 si le SharedArray
n'est pas mappé localement.
SharedArrays.localindices
— Functionlocalindices(S::SharedArray)
Renvoie une plage décrivant les "indices par défaut" à traiter par le processus actuel. Cette plage doit être interprétée dans le sens de l'indexation linéaire, c'est-à-dire comme une sous-plage de 1:length(S)
. Dans des contextes multi-processus, renvoie une plage vide dans le processus parent (ou tout processus pour lequel indexpids
renvoie 0).
Il convient de souligner que localindices
existe uniquement par commodité, et vous pouvez partitionner le travail sur le tableau parmi les travailleurs comme vous le souhaitez. Pour un SharedArray
, tous les indices devraient être également rapides pour chaque processus de travail.