私はjulia
で並列計算で初めて遊んでいます。私は少し頭痛があります。だから私がjulia
を次のように始めるとしよう:julia -p 4
。それから私はすべてのプロセッサのための関数を宣言し、次にpmap
と@parallel for
と一緒に使用します。Julia並列マクロが動作しないようです
@everywhere function count_heads(n)
c::Int = 0
for i=1:n
c += rand(Bool)
end
n, c # tuple (input, output)
end
###### first part ######
v=pmap(count_heads, 50000:1000:70000)
println("Result first part")
println(v)
###### second part ######
println("Result second part")
@parallel for i in 50000:1000:70000
println(count_heads(i))
end
結果は以下のとおりです。
Result first part
Counting heads function
Any[(50000,24894),(51000,25559),(52000,26141),(53000,26546),(54000,27056),(55000,27426),(56000,28024),(57000,28380),(58000,29001),(59000,29398),(60000,30100),(61000,30608),(62000,31001),(63000,31520),(64000,32200),(65000,32357),(66000,33063),(67000,33674),(68000,34085),(69000,34627),(70000,34902)]
Result second part
From worker 4: (61000, From worker 5: (66000, From worker 2: (50000, From worker 3: (56000
したがって、funcion pmap
は明らかに正常に動作しているが、@parallel for
が停止しているか、それは私に結果を与えるものではありません。私は何か間違っているのですか?
ありがとうございます!
アップデートは、コードの最後に、私はsleep(10)
を置く場合。それは正しく働きます。
From worker 5: (66000,33182)
From worker 3: (56000,27955)
............
From worker 3: (56000,27955)
また、変数に物事を割り当て、返されたものをチェックする(またはフェッチされたリモート参照を使用する)場合は、printlnではなく、おそらくもっと便利で、おそらくより良い方法を試してみようとしています。私はあなたが後でそれらを使用するものになる可能性が高いと思うので –