使用 SciPy/NumPy 库,Python 是一个非常酷且性能卓越的科学计算平台。我只是想知道:当我必须并行处理(多线程、多核、多节点、gpu)时,Python 提供了什么?
我主要在寻找与当前 NumPy 实现完全兼容的东西。最酷的事情是 NumPy 和其他一些完全并行的基本功能(例如列表理解)的实现,也可以使用 GPU。但我可能要求的有点太多了 ;-)
(并不是说我们无法切换到 C/C++ 中的解决方案,而是我们真的很想在并行环境中利用 Python 在这些语言之上的优势。)
使用 SciPy/NumPy 库,Python 是一个非常酷且性能卓越的科学计算平台。我只是想知道:当我必须并行处理(多线程、多核、多节点、gpu)时,Python 提供了什么?
我主要在寻找与当前 NumPy 实现完全兼容的东西。最酷的事情是 NumPy 和其他一些完全并行的基本功能(例如列表理解)的实现,也可以使用 GPU。但我可能要求的有点太多了 ;-)
(并不是说我们无法切换到 C/C++ 中的解决方案,而是我们真的很想在并行环境中利用 Python 在这些语言之上的优势。)
您可以尝试的事情之一是pyMPI,它在 python 中支持 MPI。我们的 HPC 站点上有大量用户将其用于并行处理。这不是通过 NumPy 实现目标的自动化方式,但您应该仔细查看它的功能。
IPython 有一个用于并行计算的包,称为ipyparallel
.
他们的文档概述:
这种架构以一种非常通用的方式抽象出并行性,这使得 IPython 能够支持许多不同风格的并行性,包括:
- 单程序、多数据 (SPMD) 并行性。
- 多程序、多数据 (MPMD) 并行性。
- 使用 MPI 传递消息。
- 任务耕作。
- 数据并行。
- 这些方法的组合。
- 自定义用户定义的方法。
最重要的是,IPython 能够交互式地开发、执行、调试和监控所有类型的并行应用程序。因此,
I
在 IPython 中。以下是 IPython 的一些示例使用案例:
- 使用多种简单方法快速并行化令人尴尬的并行算法。许多简单的事情可以在一两行代码中以交互方式并行化。
- 通过笔记本电脑上的 IPython 会话来引导超级计算机上的传统 MPI 应用程序。
- 使用 IPython 和 matplotlib/TVTK 等工具交互式地分析和可视化大型数据集(可以是远程和/或分布式的)。
- 以交互方式开发、测试和调试新的并行算法(可能使用 MPI)。
- 将在不同系统上运行的多个 MPI 作业捆绑到一个巨大的分布式并行系统中。
- 在集群上启动并行作业,然后让远程协作者连接到它并将数据拉回其本地 IPython 会话以进行绘图和分析。
- 使用动态负载平衡在一组 CPU 上运行一组任务。