4
Julia 언어는 pmat() 및 @parallel과 같은 방법을 통한 병렬 처리를 지원합니다. Julia : 비평 행렬 계산의 효율적인 병렬화
는 I 데이터 세트에 대한 차이도 행렬을 계산하는 것을 시도하고있다 : 계산 독립적이므로n = length(dataset)
mat = zeros(n,n)
for i = 1 : n
for j = i+1 : n
mat[i,j] = mat[j,i] = f_dist(dataset[i], dataset[j])
end
end
는 I이 병렬 계산을위한 좋은 후보되어야 그림.
pmat() 및 @parallel을 사용하려는 시도가 모두 느려지 게되었습니다.
mat = @parallel (+) for comb in collect(combinations([1:n],2))
submat = zeros(n,n)
i = comb[1]
j = comb[2]
dist = f_dist(dataset[i],dataset[j])
submat[i,j] = dist
submat[j,i] = dist
submat
end
나는 본질적으로 많은 희소 행렬을 만들고 함께 추가하기 때문에 @parallel이 좋지 않은 방법이라는 것을 알고 있습니다. 매우 비효율적이다.
이 방법을 사용하는 효과적인 방법이 있습니까? 나는 SharedArrays와 DistributedArrays를 시도했지만, 내가 원하는 것을 어떻게하는지 알지 못했다.
감사합니다. SharedArrays와
myfunc()는 공유 배열과 (i, j) indeces 목록을 입력으로 가져와야하므로 f_dist()와 동일하지 않습니다. – Mageek