Parallel processing IPython并行和映射性能

Parallel processing IPython并行和映射性能,parallel-processing,ipython,ipython-parallel,Parallel Processing,Ipython,Ipython Parallel,我以前通过MPI(和Fortran:)使用过并行计算。我现在想使用IPython的并行功能 我的问题与以下代码的糟糕性能有关,灵感来自: 一个处理器的结果如下: 10000 loops, best of 3: 43 µs per loop 100 loops, best of 3: 4.77 ms per loop 你能告诉我结果对你来说是否正常吗?如果正常,为什么计算时间会有如此巨大的差异 致以最良好的祝愿, 弗拉维安 并行处理不是免费的。将作业项发送到客户机并随后接收结果的相关成本称为开销

我以前通过MPI(和Fortran:)使用过并行计算。我现在想使用IPython的并行功能

我的问题与以下代码的糟糕性能有关,灵感来自:

一个处理器的结果如下:

10000 loops, best of 3: 43 µs per loop
100 loops, best of 3: 4.77 ms per loop
你能告诉我结果对你来说是否正常吗?如果正常,为什么计算时间会有如此巨大的差异

致以最良好的祝愿,
弗拉维安

并行处理不是免费的。将作业项发送到客户机并随后接收结果的相关成本称为开销。您的原始工作需要43µs,这太短了。在并行处理变得有益之前,您需要有更大的工作项。一个简单的经验法则是,为了处理其工作项,每个工作人员至少需要10倍的开销。尝试使用100万个元素或更大的向量。

以下是不同长度数组的结果:
长度10000 100个循环,最佳3:8.68 ms/循环10个循环,最佳3:61.5 ms/循环长度100000 10个循环,最佳3:89.3 ms/循环1个循环,最佳3:558 ms/循环长度1000000 1个循环,每个循环1个循环3:911毫秒的最佳值,每个循环3:5.59秒的最佳值可能编组和解编组数组项花费的时间太长。尝试在每个元素上做更多的工作,而不是简单地将它们平方。
10000 loops, best of 3: 43 µs per loop
100 loops, best of 3: 4.77 ms per loop