模拟mpi4py进行测试的工具

MockM的Python项目详细描述


概述

消息传递接口(MPI)是一种基于进程间显式通信的并行方法。Python绑定可以通过mpi4py获得。在

测试使用MPI的代码可能会很尴尬。这个包提供了一个纯python mock MPI通信器,可以使用它来执行此操作,而不需要实际的MPI。它使用多重处理来 启动进程并生成一个模拟通信器(comm)对象,该对象将替代 mpi4型py.MPI.COMM峎WORLD公司. 在

安装

代码是纯python;可以使用以下工具安装:

    pip install mockmpi

使用

定义一个函数,该函数保存应在MPI会话中工作的代码:

^{pr2}$

如果这是一个真正的MPI会话,它的工作方式应该是:

    import mpi4py
    comm = MPI.COMM_WORLD
    function_to_test(comm)

您将与mpiexec -n nproc ...一起运行

要在不使用MPI的情况下测试代码,请从此包导入mock-mpiexec并运行:

    mock_mpiexec(nproc, function_to_test)

额外的参数

您还可以为mock_mpiexec提供附加的命名或位置参数,它们将 传递给function_to_test

    mock_mpiexec(nproc, function_to_test, 1, 2, 3, a='b')

模仿:

    import mpi4py
    comm = MPI.COMM_WORLD
    function_to_test(comm, 1, 2, 3, a='b')

如果参数可以被pickle(对于大多数基本的python和numpy类型都是这样),那么这就可以工作了。在

注意事项

  1. 它在python3.5+上运行
  2. 完全没有注意到如何使这一点更有效率。这个代码 设计用于单元测试,而不是用于生产。在
  3. 目前只有内部命令对象被模仿,而不是许多其他特性 比如运营商,未来,拓扑,窗口,生成。。。在
  4. 目前缺少许多方法。目前只实现了以下内容。其他人将提高NotImplementedError
  • 获得排名
  • 获取\u大小
  • 障碍物
  • 发送-与真正的MPI不同,它是非阻塞的
  • 发送-也无阻塞
  • 接收
  • 接收
  • 障碍物
  • bcast公司
  • Bcast公司
  • 分散
  • reduce(仅使用默认的和运算)
  • Reduce(仅使用默认的和运算)
  • 全减
  • 全减
  • 全部
  • 集合

出资和许可

我们非常欢迎您的贡献,特别是填补缺失的功能。在

代码和任何贡献都是在bsd2条款许可下发布的(参见许可文件)。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
windows请帮助获取java。运行程序时发生lang.nullpointerexception   JPA标准中的错误:java。lang.IllegalArgumentException:此JPQLquery中没有名为“:inputMsgId_1_”的参数   java调度一个小程序,从ScheduledExecutorService开始   java点击AVD“创建设备”按钮抛出NullPointerException   缓存Java9WebStart会多次加载jar文件   使用java计算最小二乘   当代理关闭时,java kafka生产者不会抛出异常   我们什么时候以及为什么要在java中进行自定义序列化?   java使用GSON解析包含包含所需字符串的对象的对象数组   java如何使用BOBJ REST API实现分页?   java身份验证失败:用户的凭据已过期。CAS v4。2.   合并排序中的java无限循环?   java jackson xml将pojo子元素转换为字符串   tcp Java ObjectOutputStream重置错误   如何调用。bat文件,并使用java中的ProcessBuilder发送字符串   奇怪的Java数学结果   java如何在Android中禁用最近的活动按钮?   java刷下应用程序崩溃   使用Java收集所有VersionOne资产及其所有属性   Java打印:创建具有最小可接受边距的页面格式