我正在编写一个机器学习工具包,以并行运行不同设置的算法(每个进程运行一个设置的算法)。我想要么使用mpi4py,要么使用python的内置多处理?
我正在考虑一些利弊。
- mpi4py: It seems more concepts to learn and a bit more tricks to make it work well
- multiprocessing: quite easy and clean API
- mpi4py: people say it is more low level, so I am expect it can be faster than python multiprocessing ?
- multiprocessing: compared with mpi4py, much slower ?
- mpi4py: seems more code to write
- multiprocessing: preferred, easy to use API
工作背景是,我的目标基本上是在一台计算机或GPU服务器上运行代码。并不是真正针对在网络中的不同机器上运行(只有MPI才能做到这一点)。
由于主要目标是进行机器学习,所以并行化并不需要非常优化,所以我想要达到的关键目标是平衡容易、干净和快速地维护代码库,但同时也希望利用并行化的好处。
在上面描述的背景下,是否建议只使用多处理就足够了?还是有很强的理由使用mpi4py?
发布于 2019-09-20 10:49:42
通过使用mpi4py,您可以将任务划分为多个线程,但在性能或核心数量有限的一台计算机上,可用性将受到限制。然而,你可能会发现它在训练中很方便。
mpi4py是在MPI-1/2规范的基础上构建的,并提供了一个与MPI-2 C++绑定密切相关的面向对象接口。
MPI for Python为Python语言提供MPI绑定,允许程序员利用多个处理器计算系统。MPI for Python支持通用Python对象的方便的、基于泡菜的通信,以及缓冲区提供者对象的快速、接近C-速度的直接数组数据通信。
https://stackoverflow.com/questions/50787392
复制相似问题