Julia 1.0 - Shared Arrays

साझा किया गया




julia

साझा किया गया

SharedArrays.SharedArray प्रकार

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

एक बिट प्रकार के SharedArray का निर्माण करें T और pids द्वारा निर्दिष्ट प्रक्रियाओं के दौरान आकार pids - जिनमें से सभी एक ही मेजबान पर होना चाहिए। यदि N को SharedArray{T,N}(dims) कहकर निर्दिष्ट किया जाता है, तो N को dims की लंबाई से मेल खाना चाहिए।

यदि pids को अनिर्दिष्ट छोड़ दिया जाता है, तो साझा सरणी को मास्टर सहित वर्तमान होस्ट पर सभी प्रक्रियाओं में मैप किया जाएगा। लेकिन, localindices और indexpids केवल श्रमिक प्रक्रियाओं का उल्लेख करेंगे। यह मास्टर के रूप में कार्य करने वाली मास्टर प्रक्रिया के साथ वास्तविक गणना के लिए श्रमिकों का उपयोग करने के लिए कार्य वितरण कोड की सुविधा प्रदान करता है।

यदि initfn(S::SharedArray) प्रकार का init फ़ंक्शन निर्दिष्ट है, तो यह सभी भाग लेने वाले श्रमिकों को कहा जाता है।

साझा सरणी तब तक मान्य है जब तक कि मैपिंग के लिए बनाई गई नोड पर साझा किए गए SharedArray ऑब्जेक्ट के संदर्भ में मौजूद है।

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

फ़ाइल filename द्वारा समर्थित एक SharedArray निर्माण करें, जिसमें तत्व प्रकार T (एक बिट प्रकार होना चाहिए) और आकार dims , pids द्वारा निर्दिष्ट प्रक्रियाओं के पार - जिनमें से सभी को एक ही मेजबान पर होना चाहिए। इस फ़ाइल को निम्न परिणामों के साथ होस्ट मेमोरी में मिमीप किया गया है:

  • सरणी डेटा को द्विआधारी प्रारूप में दर्शाया जाना चाहिए (जैसे, CSV की तरह ASCII प्रारूप समर्थित नहीं हो सकता)

  • सरणी मूल्यों में आपके द्वारा किए गए कोई भी परिवर्तन (जैसे, A[3] = 0 ) डिस्क पर मान भी बदल देंगे

यदि pids को अनिर्दिष्ट छोड़ दिया जाता है, तो साझा सरणी को मास्टर सहित वर्तमान होस्ट पर सभी प्रक्रियाओं में मैप किया जाएगा। लेकिन, localindices और indexpids केवल श्रमिक प्रक्रियाओं का उल्लेख करेंगे। यह मास्टर के रूप में कार्य करने वाली मास्टर प्रक्रिया के साथ वास्तविक गणना के लिए श्रमिकों का उपयोग करने के लिए कार्य वितरण कोड की सुविधा प्रदान करता है।

mode "r" , "r+" , "w+" , या "a+" से एक होना चाहिए, और "r+" लिए डिफॉल्ट यदि फ़ाइल filename से निर्दिष्ट filename पहले से मौजूद है, या नहीं तो "w+" । यदि initfn(S::SharedArray) प्रकार का init फ़ंक्शन निर्दिष्ट है, तो यह सभी भाग लेने वाले श्रमिकों को कहा जाता है। यदि फ़ाइल लिखने योग्य नहीं है, तो आप एक init फ़ंक्शन निर्दिष्ट नहीं कर सकते।

offset आपको फ़ाइल की शुरुआत में निर्दिष्ट बाइट्स की संख्या को छोड़ने की अनुमति देता है।

source

Distributed.procs विधि विधि

procs(S::SharedArray)

साझा सरणी मैप करने वाली प्रक्रियाओं का वेक्टर प्राप्त करें।

source

SharedArrays.sdata फंक्शन

sdata(S::SharedArray)

वास्तविक Array ऑब्जेक्ट बैकिंग S लौटाता है।

source

SharedArrays.indexpids फ़ंक्शन

indexpids(S::SharedArray)

श्रमिकों की सूची में वर्तमान कार्यकर्ता के सूचकांक को साझा करता है, जो कि SharedArray मैपिंग करता है (यानी SharedArray procs(S) द्वारा लौटी उसी सूची में), या अगर स्थानीय रूप से SharedArray को मैप नहीं किया जाता है।

source

SharedArrays.localindices फ़ंक्शन

localindices(S::SharedArray)

वर्तमान प्रक्रिया द्वारा नियंत्रित किए जाने वाले "डिफ़ॉल्ट" सूचकांकों का वर्णन करने वाली सीमा लौटाता है। इस सीमा की व्याख्या रैखिक अनुक्रमण के अर्थ में की जानी चाहिए, अर्थात, 1:length(S) उप-सीमा के रूप में। बहु-प्रक्रिया संदर्भों में, मूल प्रक्रिया में एक खाली श्रेणी देता है (या किसी भी प्रक्रिया जिसके लिए indexpids 0 देता है)।

यह जोर देने के लायक है कि localindices एक सुविधा के रूप में शुद्ध रूप से मौजूद है, और आप किसी भी तरह से कामगारों के बीच सरणी पर विभाजन का काम कर सकते हैं। एक SharedArray , सभी सूचकांकों को प्रत्येक कार्यकर्ता प्रक्रिया के लिए समान रूप से तेज़ होना चाहिए।

source