在Python中运行批量同步并行模型(BSP)
BSP并行编程模型有几个好处——程序员不需要明确关注同步,死锁变得不可能,关于速度的推理比传统方法容易得多。SciPy中有一个指向BSPlib的Python接口:在Python中运行批量同步并行模型(BSP),python,parallel-processing,Python,Parallel Processing,BSP并行编程模型有几个好处——程序员不需要明确关注同步,死锁变得不可能,关于速度的推理比传统方法容易得多。SciPy中有一个指向BSPlib的Python接口: import Scientific.BSP 我写了一个小程序来测试BSP。该程序是一个简单的随机实验,“计算”投掷n骰子产生k总和的概率: from Scientific.BSP import ParSequence, ParFunction, ParRootFunction from sys import argv from ra
import Scientific.BSP
我写了一个小程序来测试BSP。该程序是一个简单的随机实验,“计算”投掷n
骰子产生k
总和的概率:
from Scientific.BSP import ParSequence, ParFunction, ParRootFunction
from sys import argv
from random import randint
n = int(argv[1]) ; m = int(argv[2]) ; k = int(argv[3])
def sumWuerfe(ws): return len([w for w in ws if sum(w)==k])
glb_sumWuerfe= ParFunction(sumWuerfe)
def ausgabe(result): print float(result)/len(wuerfe)
glb_ausgabe = ParRootFunction(output)
wuerfe = [[randint(1,6) for _ in range(n)] for _ in range(m)]
glb_wuerfe = ParSequence(wuerfe)
# The parallel calc:
ergs = glb_sumWuerfe(glb_wuerfe)
# collecting the results in Processor 0:
ergsGesamt= results.reduce(lambda x,y:x+y, 0)
glb_output(ergsGesamt)
该程序运行良好,但是:它只使用一个进程
我的问题:有人知道如何告诉这个Pythonb BSP脚本使用4(或8或16)个进程吗?我认为这个BSP实现可以使用MPI,但是通过
mpiexe-n4randexp.py
启动脚本不起作用。一件小事,但是科学的Python!=在你的问题上有点奇怪
如果下载ScientificPython源代码,您将看到README.BSP、README.MPI和README.BSPlib。不幸的是,在线网页上并没有太多关于这些信息的提及
BSP的README.BSP非常明确地说明了要使BSP真正并行工作需要做什么:
为了使用该模块
Scientific.BSP使用多个
真正的处理器,你必须编译
BSPlib或MPI
接口。请参阅README.BSPlib和
有关安装详细信息,请参阅README.MPI。
BSPlib接口可能更简单
高效(我没有做过广泛的研究)
测试),并允许使用
另一方面,BSP工具集MPI是
更广泛地提供,因此可能
已在您的计算机上安装。
如果要认真使用,您可能应该
同时安装并比较
您自己的应用程序。应用
程序不必修改为
仅在MPI和BSPlib之间切换
在计算机上运行程序的方法
多处理器计算机必须是
改编
要以并行模式执行程序,
使用mpipython或bsppython
可执行文件。MPI或MPI的手册
BSPlib安装将告诉您如何
定义处理器的数量
README.MPI告诉您如何获得MPI支持:
以下是获得MPI所需的操作
对科学Python的支持:
1) 构建并安装科学Python
与往常一样(即“python setup.py
安装“在大多数情况下”)
2) 转到Src/MPI目录
3) 键入“python compile.py”
4) 移动生成的可执行文件
“mpipython”到您计算机上的目录系统的执行路径 因此,您必须显式地构建更多BSP内容,以利用真正的并行性。好消息是你不应该改变你的计划。这样做的原因是,不同的系统安装了不同的并行库,而位于这些并行库之上的库必须具有这样的配置/构建步骤,以利用任何可用的资源