आप उपयोग कर सकते हैं n आयामी वितरित सरणी comprehensions:
julia> addprocs(CPU_CORES - 1);
:
सबसे पहले आप कुछ और प्रक्रियाओं, या तो स्थानीय या दूरदराज के जोड़ने की जरूरत
फिर आपको DistributedArrays
का उपयोग प्रत्येक स्पैन प्रो उपकर:
julia> @everywhere using DistributedArrays
अंत में आप इस तरह, उपयोग कर सकते हैं @DArray
मैक्रो:
julia> x = @DArray [@show x^2 for x = 1:10];
From worker 2: x^2 = 1
From worker 2: x^2 = 4
From worker 4: x^2 = 64
From worker 2: x^2 = 9
From worker 4: x^2 = 81
From worker 4: x^2 = 100
From worker 3: x^2 = 16
From worker 3: x^2 = 25
From worker 3: x^2 = 36
From worker 3: x^2 = 49
आप देख सकते हैं यह आप क्या अपेक्षा करता है:
julia> x
10-element DistributedArrays.DArray{Int64,1,Array{Int64,1}}:
1
4
9
16
25
36
49
64
81
100
याद रखें यह एक मनमाना संख्या के साथ काम करता आयामों:
julia> y = @DArray [@show i + j for i = 1:3, j = 4:6];
From worker 4: i + j = 7
From worker 4: i + j = 8
From worker 4: i + j = 9
From worker 2: i + j = 5
From worker 2: i + j = 6
From worker 2: i + j = 7
From worker 3: i + j = 6
From worker 3: i + j = 7
From worker 3: i + j = 8
julia> y
3x3 DistributedArrays.DArray{Int64,2,Array{Int64,2}}:
5 6 7
6 7 8
7 8 9
julia>
यह IM12O का इरादा करने के लिए सबसे अधिक जूलियन तरीका है।
हम क्या देखने के लिए macroexpand
उत्पादन देख सकते हो रहा है:
नोट: इस उत्पादन थोड़ा, पठनीयता के लिए संपादित किया गया है T
खड़ा के लिए:
DistributedArrays.Tuple{DistributedArrays.Vararg{DistributedArrays.UnitRange{DistributedArrays.Int}}}
julia> macroexpand(:(@DArray [i^2 for i = 1:10]))
:(
DistributedArrays.DArray(
(
#231#I::T -> begin
[i^2 for i = (1:10)[#231#I[1]]]
end
),
DistributedArrays.tuple(DistributedArrays.length(1:10))
)
)
जो मूल रूप से मैन्युअल टाइपिंग जैसा ही है:
julia> n = 10; dims = (n,);
julia> DArray(x -> [i^2 for i = (1:n)[x[1]]], dims)
10-element DistributedArrays.DArray{Any,1,Array{Any,1}}:
1
4
9
16
25
36
49
64
81
100
julia>
समानांतर पाश में आप क्या करना चाहते हैं? मुझे लगता है कि यह एक सटीक उत्तर के बिना एक व्यापक सवाल है। –