Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中运行批量同步并行模型(BSP)_Python_Parallel Processing - Fatal编程技术网

在Python中运行批量同步并行模型(BSP)

在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

BSP并行编程模型有几个好处——程序员不需要明确关注同步,死锁变得不可能,关于速度的推理比传统方法容易得多。SciPy中有一个指向BSPlib的Python接口:

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内容,以利用真正的并行性。好消息是你不应该改变你的计划。这样做的原因是,不同的系统安装了不同的并行库,而位于这些并行库之上的库必须具有这样的配置/构建步骤,以利用任何可用的资源