小编Enz*_*ime的帖子

Python 中具有动态生成的 MPI 深度优先搜索

好的,所以我想在树状结构中进行多线程深度优先搜索。为此,我使用集群中多台计算机的线程(本例中使用 localhost 四核和树莓派 2)。主线程应该启动该进程,并且在树中的第一次分割时,对于它分割成的每个节点,它应该生成一个新线程。然后,这些线程应该能够将它们的发现报告给主线程。

我试图动态地执行此操作,而不是为 mpiexec 提供多个线程,因为我事先不知道树会是什么样子(例如可能有 2 或 9 个分割)。

我从我正在处理的项目中制作了一个样本来解决这个问题,并且它的工作原理如下。它从一串数字中取出一个数字,并为每个数字生成一个线程并将该数字发送到该线程。

对于大师来说:

#!/usr/bin/python
from mpi4py import MPI
import datetime, sys, numpy, time

################ Set up MPI variables ################

comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
name = MPI.Get_processor_name()
status = MPI.Status()

################ Master code ################

script = 'cpi.py'
for d in '34':
   try:
       print 'Trying to spawn child process...'
       icomm = MPI.COMM_SELF.Spawn(sys.executable, args=[script], maxprocs=1, root=0)
       spawnrank = icomm.Get_rank()
       icomm.send(d, dest=spawnrank, tag=11)
       print 'Spawned rank %d.' % spawnrank …
Run Code Online (Sandbox Code Playgroud)

multithreading mpi python-2.7

2
推荐指数
1
解决办法
1587
查看次数

标签 统计

mpi ×1

multithreading ×1

python-2.7 ×1