2017-05-08 3 views
3

저는 P 작업자에 MxN 정수 배열을 배포하는 데 관심이 있습니다. 분배되는 차원을 지정하는 방법이 있습니까? 특히, 행 수를 고정시키고 N 개의 열에 분산시켜야합니다. 나의 경우에는 M> N (나는 크기 M의 어휘와 문서의 수 N이있는 용어 - 문서 행렬을 가지고있다).Julia distribute 함수 : 분산 치수 지정

기본적으로 줄리아는 가장 큰 크기의 응용 프로그램에서 작동하지 않는 차원을 통해 배포하는 것으로 보입니다. (나는 문서가 아닌 어휘로 배포하고 싶습니다.) 배포되는 차원을 제어하는 ​​방법이 있습니까?

답변

1

SharedArray 생성자에는 요소를 프로세스에 매핑하는 선택적 매개 변수 (documentation 참조)가 있습니다.

따라서 MxN 개로 행렬은 다음과 같은 코드로 초기화 될 수

# a helper function which might be useful in other contexts 
function balancedfill(v,n,b) 
    d,r = divrem(n,b) 
    return v[[repeat(1:r,inner=d+1);repeat(r+1:b,inner=d)]] 
end 

# N,M = size(mat) 
pidvec = repeat(balancedfill(1:nprocs(),N,nprocs()),inner=M) 

sharedmat = SharedArray{Float64}((N,M); pids=pidvec) 

이것은 프로세스간에 균형 열로하는 Float64 공유 어레이를 생성한다. Float64는 필요한 요소 유형으로 대체 될 수 있습니다. 약간의 변경 (innerouterN으로 바꾸고 Mpidvec에 만들면 행 분산 배열을 만들 수 있습니다.