我正在编写一个机器学习工具包,以并行运行具有不同设置的算法(每个进程运行一个设置的算法)。我在考虑使用mpi4py或python的内置多处理?
我正在考虑一些利弊。
易于使用:
速度:
简洁明了的代码:
工作环境是我的目标是在一台计算机或GPU服务器上运行代码。并不是真正针对在网络中的不同机器上运行(只有MPI可以这样做)。
由于主要目标是进行机器学习,因此并行化并不需要非常优化,我想要的关键目标是平衡简单,干净和快速维护代码库,但同时喜欢利用并行化的好处。
有了上述背景,是否建议使用多处理应该足够了?还是有很强的理由使用mpi4py?
答案 0 :(得分:0)
通过使用mpi4py,您可以将任务划分为多个线程,但是对于性能有限或内核数量有限的单台计算机,可用性将受到限制。但是,您可能会在训练期间发现它很方便。
mpi4py是在MPI-1 / 2规范的基础上构建的,并提供了紧跟MPI-2 C ++绑定的面向对象的接口。
用于Python的MPI为Python语言提供了MPI绑定,从而使程序员可以利用多个处理器计算系统。 MPI for Python支持通用Python对象的基于腌汁的便捷通信,以及缓冲区提供者对象的快速,接近C速度的直接数组数据通信