在Python中对分布式内存集群进行“全局数组”并行编程
我在寻找一个Python库,它可以扩展numpy的功能,让我们在分布式内存集群上进行操作。简单来说,就是让程序员把一个数组看作是一个整体,而不是分散在不同处理器上的多个独立数组。
在Matlab中,麻省理工学院的林肯实验室创建了一个叫做pMatlab的工具,它可以在集群上进行矩阵运算,而不需要太担心并行编程的细节。(以上引用的来源。)
对于基于磁盘的存储,Python中有pyTables这个库。虽然它并没有优化计算在集群中的分配方式,而是关注如何在磁盘上处理大数据的“分配”。这两者有点相似,但还是缺少了一个关键的方面。
我的目标不是从集群中榨取最后一点性能,而是进行一些科学计算(半交互式),这些计算对于单台机器来说太大了。
Python中有没有类似的工具呢?我希望的功能包括:
- 持续维护
- 可以直接替代numpy
- 使用方式与numexpr类似
- 并行编程部分的高抽象:也就是说,用户不需要明确使用MPI
- 支持分布式内存集群中的数据局部性
- 支持集群中的多核机器
这可能有点像相信牙仙子,但谁知道呢……
到目前为止,我找到了一些信息:
太平洋西北国家实验室曾经有一个Global Array的Python接口。可以查看“使用NumPy和Global Arrays工具包在Python中进行高性能并行计算”下的链接。(特别是“GA_SciPy2011_Tutorial.pdf”。)不过这个接口似乎又消失了。
如果你知道任何相关的包,或者使用过上述两个,请分享一下你的经验。
1 个回答
0
你可以看看Blaze,不过它可能还没有发展到能满足你需求的程度。从链接的页面上可以看到:
Blaze 是一套简洁而强大的基础工具,旨在帮助你处理大量半结构化的数据。这些数据可以是各种格式,并且分布在不同的网络上。