나는 @parallel for
매크로를 사용하여 다양한 매개 변수에 대한 시뮬레이션을 실행합니다. 각 런은 1 차원 벡터를 생성합니다. 결국 나는 DataFrame
에 결과를 수집하고 싶습니다.remotecall을 통해 @parallel for-loop의 결과 수집
지금까지 항상 중간 배열을 생성하고 for 루프를 vcat
으로 줄였습니다. 다음 DataFrame
을 건설했다. 나는 remotecall
을 통해 마스터 프로세스에 대한 각 계산의 결과가 push!
일 수도 있다고 생각했습니다. 최소한의 예
X=Float64[]
@sync @parallel for i in linspace(1.,10.,10)
remotecall_fetch(()->push!(X,i),1)
end
같은 일관되지 9 개 10 요소 어레이 X
되는 결과를 보일 것이다. 삭제 된 요소의 수는 더 많은 작업자가 추가 될수록 커집니다.
이것은 julia-0.6.1입니다.
나는 줄리아의 병렬 컴퓨팅 구조를 이해했다고 생각했지만 그렇지 않은 것 같습니다.
이 동작의 이유는 무엇입니까? 어떻게하면 더 좋고 안전하게 할 수 있습니까?