임, ipyparallel 및 jupyter 노트북으로 분산 처리를 수행하는 방법을 이해하려고 시도 했으므로 테스트를 수행하여 이상한 결과를 얻었습니다.ipyparallel 이상한 오버 헤드 동작
from ipyparallel import Client
%px import numpy as np
rc = Client()
dview = rc[:]
bview = rc.load_balanced_view()
print(len(dview))
print(len(bview))
data = [np.random.rand(10000)] * 4
%time np.sin(data)
%%time #45.7ms
results = dview.map(np.sin, data)
results.get()
%%time #110ms
dview.push({'data': data})
%px results = np.sin(data)
results
%%time #4.9ms
results = np.sin(data)
results
%%time #93ms
results = bview.map(np.sin, data)
results.get()
오버 헤드의 문제는 무엇입니까? 이 경우 작업 I/O 바인딩이되어 있고 1 코어만으로 더 잘 수행 할 수 있습니까? 큰 배열을 시도했지만 병렬 처리가없는 경우에도 더 나은 시간을 얻었습니다.
조언 해 주셔서 감사합니다.
로컬 컴퓨터에서 실행 중입니다. 노드는 동일한 기계에서 실행중인 엔진 일뿐입니다. –
그러나 Ipyparallel은 여전히 ZeroMQ 프로토콜을 사용합니다. 이론적으로 MPI를 사용하여 속도를 높일 수 있어야합니다. –