Im пытается понять, как сделать распределенную обработку с 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. –