python中的mpi4py或多处理?

Xin*_*ong 6 mpi python-multiprocessing

我正在编写一个机器学习工具包来并行运行具有不同设置的算法(每个进程运行一个设置的算法)。我正在考虑使用 mpi4py 或 python 的内置多处理?

我正在考虑一些优点和缺点。

  1. 便于使用:

    • mpi4py:似乎有更多的概念需要学习,还有更多的技巧可以让它运行良好
    • 多处理:非常简单和干净的 API
  2. 速度:

    • mpi4py:人们说它的级别更低,所以我希望它比 python 多处理更快?
    • 多处理:与mpi4py相比,慢得多?
  3. 干净和简短的代码:

    • mpi4py:似乎要编写更多代码
    • 多处理:首选,易于使用的 API

工作环境是我的目标是基本上在一台计算机或 GPU 服务器上运行代码。并不是真正针对在网络中的不同机器上运行(只有 MPI 可以做到)。

由于主要目标是进行机器学习,因此并行化并不是真的需要非常优化,我想要的关键目标是平衡简单、干净和快速维护代码库,但同时喜欢利用并行化的好处。

有了上述背景,是否建议使用多处理就足够了?或者是否有充分的理由使用 mpi4py ?

小智 -1

通过使用 mpi4py,您可以将任务划分为多个线程,但对于性能或内核数量有限的单台计算机,可用性将受到限制。但是,您可能会在训练期间发现它很方便。

mpi4py 构建在 MPI-1/2 规范之上,并提供严格遵循 MPI-2 C++ 绑定的面向对象的接口。

MPI for Python 为 Python 语言提供 MPI 绑定,允许程序员利用多处理器计算系统。MPI for Python 支持通用 Python 对象的便捷、基于 pickle 的通信,以及缓冲区提供程序对象的快速、接近 C 速度的直接数组数据通信

  • 这只是回答什么是 mpi4py。但根据我的理解,问题是关于“mpi4py”和“python multiprocessing”之间的比较。 (3认同)