我正在寻找一个 python 库,它将 numpy 的功能扩展到分布式内存集群上的操作:即“一种并行编程模型,其中程序员将数组视为单个全局数组,而不是位于不同处理器上的多个独立数组。 "
对于 Matlab,麻省理工学院的林肯实验室创建了pMatlab,它允许在集群上进行矩阵代数,而不必过多担心并行编程方面的细节。(以上引用的出处。)
对于基于磁盘的存储,python 存在 pyTables。尽管它没有优化计算在集群中的分布方式,而是优化了计算在磁盘上的大数据如何“分布”。- 这相当相似,但仍然缺少一个关键方面。
目的不是从集群中榨取最后一点性能,而是进行对于单台机器来说太大的科学计算(半交互式)。
python是否存在类似的东西?我的愿望清单是:
- 积极维护
- 代替numpy
- 或者类似于numexpr的用法
- 并行编程部分的高度抽象:即不需要用户显式使用 MPI
- 支持分布式内存集群中的数据局部性
- 支持集群中的多核机器
这可能有点像相信牙仙,但你永远不知道......
到目前为止我发现:
太平洋西北国家实验室(存在/曾经存在)为 Global Array 提供了一个 python 接口。请参阅“使用 NumPy 和全局数组工具包在 Python 中进行高性能并行计算”主题下的链接。(特别是“GA_SciPy2011_Tutorial.pdf”。)但是这似乎又消失了。
DistNumPy :在本文中有更详细的描述。然而,这些项目似乎已被放弃。
如果您知道任何软件包或使用过以上两种中的任何一种,请描述您对它们的体验。