基本上,我有一个大对象,我想执行一些功能,这很适合并行处理。在这个例子中,我有一个大矩阵,我想计算列向量之间的所有成对内积。调整并行性能
请看下面的IPython Notebook。
我意识到@interactive
装饰是没有必要在这种情况下,我试图消除@require
装饰,但其影响可以忽略不计。
我的问题是:有什么方法可以改善并联机器的性能吗?
我不知道map
方法的实现细节,我可以通过推动与视图中的引擎并行执行的函数来避免开销吗?尽管如此,我无法想象它会随每个参数一起发送。
将自变量列表自己分块并编写远程使用的函数,该函数似乎也很愚蠢。
我试过四核心机器上的笔记本电脑,笔记本电脑的结果是两个核心机器。
太棒了,谢谢你的时间和精力。我甚至没有想到内存布局可能会改变。 – Midnighter 2013-02-19 19:19:36
对于数组的零拷贝发送,IPython要求它们是连续的。为此,IPython使用'ascontiguousarray',它实际上最终将F连续数组强制转换为C连续数组,尽管它可能不需要(它可能*有时*,取决于切片)。我将研究在F-contiguous数组的零拷贝发送中会涉及哪些内容以避免这种奇怪的情况。 – minrk 2013-02-19 20:43:54