Shared Arrays
SharedArray
يمثل مصفوفة، يتم مشاركتها عبر عمليات متعددة، على جهاز واحد.
SharedArrays.SharedArray
— TypeSharedArray{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
— TypeSharedVector
مصفوفة SharedArray
أحادية البعد.
SharedArrays.SharedMatrix
— TypeSharedMatrix
مصفوفة ثنائية الأبعاد SharedArray
.
Distributed.procs
— Methodprocs(S::SharedArray)
احصل على متجه العمليات التي تقوم بتعيين المصفوفة المشتركة.
SharedArrays.sdata
— Functionsdata(S::SharedArray)
إرجاع كائن Array
الفعلي الذي يدعم S
.
SharedArrays.indexpids
— Functionindexpids(S::SharedArray)
إرجاع فهرس العامل الحالي في قائمة العمال التي تقوم بتعيين SharedArray
(أي في نفس القائمة التي يتم إرجاعها بواسطة procs(S)
)، أو 0 إذا لم يتم تعيين SharedArray
محليًا.
SharedArrays.localindices
— Functionlocalindices(S::SharedArray)
يعيد نطاقًا يصف "المؤشرات الافتراضية" التي يجب التعامل معها بواسطة العملية الحالية. يجب تفسير هذا النطاق بمعنى الفهرسة الخطية، أي كنطاق فرعي من 1:length(S)
. في سياقات متعددة العمليات، يعيد نطاقًا فارغًا في العملية الأصلية (أو أي عملية تعيد indexpids
0).
من الجدير بالتأكيد أن localindices
موجودة فقط كوسيلة راحة، ويمكنك تقسيم العمل على المصفوفة بين العمال بأي طريقة تريد. بالنسبة لـ SharedArray
، يجب أن تكون جميع المؤشرات سريعة بنفس القدر لكل عملية عامل.