0

我使用以下代码片段来测试 IPython.parallel 模块的性能:

dview = c[:]    #use all engines

counter = time.time()
result = dview.map_sync(fib, range(4000))    #fib return the nth Fibonacci number
counter = time.time() - counter

这个测试我使用了多达 30 个“引擎”,我从 IPython 笔记本开始。令人惊讶的是,即使我超过了 CPU 内核的限制(我有 4 个内核),性能也会随着引擎(实际上是完整的 IPython 解释器)的数量而增加(非线性)。我一直认为一个引擎将与一个核心相关联,使用更多引擎作为核心只会导致开销。这里到底发生了什么?引擎以何种方式分布在内核上?

编辑:解决方案是来自 Matt 的评论加上http://nbviewer.ipython.org/5500077

4

1 回答 1

0

引擎以何种方式分布在内核上?

我们在 IPython 中没有做任何具体的事情。这完全由操作系统及其调度程序处理。

如果您使用的是直接视图而不是负载平衡视图,那么随着引擎数量的增加计算减少的时间仍然让我感到非常惊讶。

于 2013-05-25T17:22:37.837 回答