MPI:MPICH2 在 Windows 局域网中安装和编程

2024-03-06

我正在学习MPI。我遵循的第一个教程是here http://curveto.blogspot.in/search/label/Parallel

我在 Windows 7 上使用 MSVC 2010 成功运行的代码是:

#include "mpi.h"
#include "iostream.h"

int main(int argc,char *argv [])
{
   int numtasks, rank, rc; 
   rc = MPI_Init(&argc,&argv);
   if (rc != MPI_SUCCESS) {
       printf ("Error starting MPI program. Terminating.\n");
       MPI_Abort(MPI_COMM_WORLD, rc);
   } 
   MPI_Comm_size(MPI_COMM_WORLD,&numtasks);
   MPI_Comm_rank(MPI_COMM_WORLD,&rank);
   printf ("Number of tasks= %d My rank= %d\n", numtasks,rank);
   MPI_Finalize();
}

我在我的 Pentium-4 机器上成功运行了这段代码(不要惊讶,我仍然有一台 Pentium-4)。

现在我想在以太网 LAN 中连接的多台机器上运行此代码(或任何其他 MPI 代码)。举例来说,每台机器将 1 到 1000 求和,然后发送回主节点,然后主节点将所有这些数字相加以获得最终总和。

我的问题是如何在网络中开始 MPI 编程?我应该在每台机器上运行哪些工具/软件。

如果您能给我一个教程的指导,我将非常感激。

MPI Implemnetation: MPICH2 
O.S:each machine is having Windows 7, 32 bit CPU: Intel's Pentium 4 and Dual core 
Network: Ethernet 
IDE:MSVC2010

UPDATE:

杰夫的回答消除了我的一些疑虑。我最新的问题是:

我是否在每台机器上安装 MPICH2?在 cfg 文件中每行写入每台机器的名称后,我需要执行其他操作还是只给出命令:

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable>

我如何知道我的应用程序正在每台计算机上运行?运行应用程序时,我是否需要在每台计算机上进行一些特殊配置等?


将连接的机器添加到主机文件并将该文件传递给mpiexec:

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable>

检查第 5.4 节和第 9 节MPICH 用户指南 http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4-userguide.pdf.

Update:

是的,您需要在每台机器上安装 MPI 库。此外,您需要在每台计算机上启动进程管理器守护程序并启用自动远程登录(例如使用 ssh)。然后使用运行测试mpdtrace或者一个简单的 hello world 程序,打印出每台机器的主机名。如果它有效,您将打印不同的主机名。如果安装运行顺利,则不需要特殊配置(例如设置库的正确路径)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MPI:MPICH2 在 Windows 局域网中安装和编程 的相关文章

  • 在 Eclipse Indigo 中运行 MPJ Express 时出现“未解决的编译问题”

    我遵循了 Youtube 上关于如何在 IDE 中使用 MPJ Express 运行并行应用程序的教程 我下载了最新版本的 MPJ Express 并使用了 Eclipse Indigo 我确实在我的项目 JAR 文件中包含了 MPI 当我
  • 使用 MPI 和 openMP 并行运行代码时扩展性较差

    我有以下实现 int main int argc char argv int n runs 100 Number of runs int seed 1 int arraySize 400 initialise the random numb
  • 信号:MPI C++ 中的分段错误 (11)

    我有一个代码 它计算 MPI 中整数的平均值 include
  • 居委会集体——减少运营

    我需要 allreduce MPI Ineighbor allreduce 来进行 MPI 中的集体通信 遗憾的是它尚未包含在内 明显但效率不高的解决方案是使用 MPI Neighbor alltoall 以增加缓冲区大小为代价 您有什么建
  • 通过 fftw_mpi_r2c_2d 和 fftw_mpi_c2r_2d 输出不正确

    我编写了一个简单的测试程序 以便在 2d 域 使用 Fortran 中使用 MPI 实现 FFTW 该域的宽度为 Ny x Nx 并在第二个 x 索引中进行分区 在正确 我相信 声明和分配变量和计划之后 我调用 fftw mpi r2c 2
  • MPI_Comm_spawn 和 MPI_Reduce

    我有两个程序 主人 产生 工作人员 执行一些计算 我希望主人从工作人员那里获取结果并存储总和 我正在尝试使用 MPI Reduce 从工作人员收集结果 工作人员使用 MPI Reduce 将结果发送给主机 MPI Comm 我不确定这是否正
  • MPI - Bsend 用法

    当我想在异步发送之后释放资源时 MPI Bsend 好吗 这会吗 MPI Bsend array 0 delete array 阻止我删除我想要发送的内存 问题是 当适当的recv打开时 数组可能已经被删除 UPD void RectMPI
  • 如何将 MPI 派生数据类型用于 3D 数组?

    我想编写一个适用于 3D 矩阵的并行代码 其中每个进程都有自己的子矩阵 但为了完成其工作 它们需要一些有关相邻进程子矩阵的信息 只是边界平面 我通过点对点通信发送这些信息 但我知道对于大型矩阵来说这不是一个好主意 因此我决定使用派生数据类型
  • 使用 Open MPI 运行并行程序时出现分段错误

    在我之前的文章中 我需要在 10 台计算机之间分发 pgm 文件的数据 在 Jonathan Dursi 和 Shawn Chin 的帮助下 我集成了代码 我可以编译我的程序 但出现分段错误 我跑了 但什么也没发生 mpirun np 10
  • 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?

    故事是这样的 我需要一个 Python 的 MPI 包装器 我知道有mpi4py http code google com p mpi4py 对于当前的工作 我 大部分 使用 Python 和 Windows 我想使用 Microsoft
  • 如何释放 boost::mpi::request?

    我正在尝试让 MPI 断开通信器 这是一件很棘手的事情 我在下面整理了一个演示 我有相同想法的两个版本 侦听 int 一个使用 MPI IRecv 另一个使用 boost mpi request 您会注意到 在此程序上使用 mpiexec
  • MPI 运行错误“导致所有级别集体中止”

    我正在尝试使用 C 中的 MPI 编写并行程序 但是 当我运行我的程序时 我收到该消息并且我的程序被终止 我不知道该错误消息的原因 警告 无法读取 mpd hosts 或未提供主机列表 MPI 作业将仅在当前计算机上运行 解决方案正在启动
  • OpenMPI 1.4.3 mpirun 主机文件错误

    我正在尝试在 4 个节点上运行一个简单的 MPI 程序 我正在使用在 Centos 5 5 上运行的 OpenMPI 1 4 3 当我使用主机文件 机器文件提交 MPIRUN 命令时 我没有得到任何输出 而是出现空白屏幕 因此 我必须终止这
  • MPI 中的相同发送和接收缓冲区

    在我的代码中 每个进程都作用于数组的特定部分 我希望每个进程将其处理的部分发送到其他进程 并从其他进程接收其他部分 为此我使用了MPI Allgatherv但我保持发送和接收缓冲区相同 MPI Allgatherv vel 0 localS
  • MPI 是否提供预处理器宏?

    MPI 标准是否提供了预处理器宏 因此如果我的 C C 代码由支持 MPI 的编译器编译 它可以分支吗 就像是 OPENMPOpenMP 的宏 根据MPI标准 http www mpi forum org docs mpi 3 0 mpi3
  • 用MPI发送size_t类型数据

    在 MPI 中发送 size t 类型数字的最安全方法是什么 例如 我确信它是not将其作为 MPI INT 盲目发送是安全的 MPI LONG 总是有效吗 使用宏怎么样 include
  • 如何通过 mpi c++ 发送布尔数据类型?

    我是 C 新手 尝试通过 MPI 发送 bool 数据类型 但 C 不支持此数据类型 我试着做到了MPI BYTE and MPI INT但它什么也没打印 include
  • MPI mpirun execvp 错误:没有这样的文件或目录

    我正在尝试使用 MPI 运行 C 代码 BCparallel cpp 编译代码 mpic BCparallel cpp o BCparallel 很成功 但是当我通过这条线时 mpiexec np 4 BCparallel file txt
  • 在不阻塞的情况下“通知”处理器的正确方法是什么?

    假设我有很多东西 我必须对所有这些东西进行一些操作 如果一个元素的操作失败 我想停止整个阵列的工作 这项工作分布在多个处理器上 我想实现这一目标 同时将发送 接收的消息数量保持在最低限度 另外 如果没有必要 我不想阻止处理器 我该如何使用
  • MPI+CUDA 与纯 MPI 相比有何优势?

    加速应用程序的常用方法是使用 MPI 或更高级别的库 例如在幕后使用 MPI 的 PETSc 并行化应用程序 然而 现在每个人似乎都对使用 CUDA 来并行化他们的应用程序或使用 MPI 和 CUDA 的混合来解决更雄心勃勃 更大的问题感兴

随机推荐

  • 动态组件流畅自动映射

    有谁知道如何在 NHibernate 中使用 Fluent Automapping 自动映射动态组件 我知道我们可以将普通类映射为组件 但无法弄清楚如何使用流畅的自动映射将字典映射为动态组件 Thanks 我们成功地使用了以下方法 流畅NH
  • Docker compose 文件所有权

    我使用 Docker Compose 创建了 Django 项目 Dockerfile FROM python 2 7 ENV PYTHONUNBUFFERED 1 RUN mkdir code WORKDIR code ADD code
  • 如何在 Firefox page-mod 中进行重定向?

    我正在尝试将我的 Google Chrome 扩展程序移植到 Firefox Add On SDK 并且我需要该扩展程序来过滤我网站中的页面并进行重定向 例如 如果用户打开 http example com special http exa
  • 向material-ui AppBar组件添加垂直分隔线

    我们如何为 AppBar 设置垂直分隔线muicss 的左 右分隔符组件 https www muicss com docs v1 react dividers 只需插入 div 元素即可height 100 不起作用
  • 检查表是否存在,如果不存在,则在SQL Server 2008中创建它

    我正在 SQL Server 2008 中编写一个存储过程 我需要检查数据库中是否存在表 如果没有 那么我需要创建它 我该怎么做呢 像这样的东西 IF NOT EXISTS SELECT FROM sys objects WHERE obj
  • .htaccess 更改 URL

    所以我有一个 mvc 系统设置 但它不会生成搜索引擎友好的 url 典型的 url 格式如下 http sitedomain com class classMethod parameter valueA parameter2 valueB
  • 从 Flex 中的字符串中取消转义(解码)HTML 字符

    如何取消转义 HTML 编码字符 例如 gt lt 等 来自字符串 在 Flex AS3 中 所以 我有一个字符串 x gt 3 我希望结果字符串为 x gt 3 也许最简单的方法是通过 TextArea 或其他基于文本的组件发送它 这也将
  • 奇怪的“str”对象不可调用python

    大家好 在我的代码中我得到了这个堆栈 Traceback most recent call last File main py line 30 in
  • Android ImageView调整父级的高度和适配宽度

    Update 我通过使用描述的方法解决了这个问题这个答案 https stackoverflow com questions 2991110 android how to stretch an image to the screen wid
  • 如何为 GitHub 开放软件存储库做出贡献?

    我读了很多教程 试图找出使用 GitHub 本身为 GitHub 存储库做出贡献的工作流程的简单步骤 我是一名 Windows 程序员 所以我发现本地 git CLI 非常尴尬 而且要复杂得多 而不是在 GitHub 上完全远程工作 我将在
  • 在排序表达式中使用聚合函数

    我有一个使用从存储过程返回的数据集的报告 有两个关键列 Name and Value 我将此数据集用于两个 tablixes 第一个只是显示数据的简单 tablix 第二组数据基于Name柱子 我需要根据总和对这些数据进行排序Value c
  • 在 Emacs 中编写“Hello World”?

    我想在 Emacs Lisp 中编写一些 Unix 脚本 但是 似乎没有一种干净的方法来写入 STDOUT 因此我可以将结果重定向到文件或将输出通过管道传输到另一个命令 这print函数在输出字符串周围放置双引号 所以我得到 你好世界 代替
  • Visual Studio 2015 调试器 - 对 SqlCommand 的高性能影响

    从 VS2013 升级到 VS2015 后 我对附加了调试器的 Web 应用程序运行速度如此之慢感到震惊 所以我决定使用 VS2013 和 VS2015 进行比较迷你分析器 http miniprofiler com 分析一个特别慢的页面
  • git 写入和读取访问权限,无需成为服务器用户

    我搜索了一段时间 但找不到合适的解决方案 我的情况 我有一台服务器 上面有一个 git 存储库 只有使用合适的 ssh 密钥才能连接到服务器 是否可以向无法访问服务器的用户授予从此特定存储库写入和读取的权限 是否只能通过在服务器上为用户创建
  • 如何在Python中断言两个列表包含相同的元素? [复制]

    这个问题在这里已经有答案了 在编写测试用例时 我经常需要断言两个列表包含相同的元素 而不考虑它们的顺序 我一直通过将列表转换为集合来做到这一点 有没有更简单的方法来做到这一点 EDIT 正如 MarkDickinson 指出的那样 我可以使
  • 称程序“延迟”的最佳方式是什么?

    有两个过程 A1 和 A2 它们都在其代码中调用函数 B function B boolean begin do other stuff end procedure A1 begin do stuff if b then do stuff
  • 将谷歌地图折线转换为 html 画布线 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要将谷歌地图折线显示到 html 画布中 我如何像这样转换坐标 lat 25 5643498 lng 45 34492432 像这样的画
  • 使用 Kotlin 对 Android 10 上的标记进行聚类

    我发现 Google 的开发网站上大多只有 Java 代码示例 Kotlin 的代码示例也很少 这很烦人 所以我不得不在这里问这个问题 我正在尝试设置 ClusterManager 但我没有任何线索说明它应该如何完成 并且没有可以看到的 K
  • 在 Java 中使用 MessageFormat.format() 格式化消息

    我已将一些消息存储在资源包中 我正在尝试按如下方式格式化这些消息 import java text MessageFormat String text MessageFormat format You re about to delete
  • MPI:MPICH2 在 Windows 局域网中安装和编程

    我正在学习MPI 我遵循的第一个教程是here http curveto blogspot in search label Parallel 我在 Windows 7 上使用 MSVC 2010 成功运行的代码是 include mpi h