vs2019运行mpi如何改变进程数, 运行结果总是一个进程,进程号为0; 如何改变VS2019进程数? return 0;

vs2019运行mpi如何改变进程数, 运行结果总是一个进程,进程号为0; 如何改变VS2019进程数? return 0;,第1张

编译程序生成的.exe文件不要直接双击运行,也不要让vs2019帮你运行。

打开cmd命令行,或者powershell也行,一路cd进入.exe并行程序所在路径。

用命令mpiexec -n 8 xxx.exe来运行,并行.exe程序需要用mpiexec运行,其中的-n 8就是告诉mpiexec这次程序运行开8个进程。

mpiexec只要正确安装了mpich都会有,在cmd中用命令mpiexec --help可以查询更多用法。

要使用 OMPT,需要在系统上安装和运行 Oracle Solaris 11。除了安装过程中使用的 root 权限之外,运行任何 OMPT 实用程序通常无需任何其他特殊权限。

如果您想编译 MPI 程序,则需要安装 Oracle Solaris Studio 12.1 或更高版本。在运行 MPI 程序的节点集群上,可以在其中一个节点上安装 Oracle Solaris Studio 并仅在该节点上编译 openmpi-15 程序包,但在所有节点上都安装该程序包。

要获取 OMPT,请安装 openmpi-15 程序包,该程序包由一个映像包管理系统 (IPS) 信息库托管,您的系统上应配置有该信息库。要验证是否配置了 IPS 信息库,请运行 pkg publisher 命令。

如果尚未 配置 IPS 信息库,请在尝试添加 openmpi-15 程序包之前配置它。否则,程序包添加将失败。

系统应配置了网络访问(如果是通过网络访问 IPS 信息库)或本地配置的从同一系统提供服务的 IPS 信息库。

本文示例使用了本地配置的 IPS 信息库,如 pkg publisher 命令的以下输出所示,该输出指示 IPS 信息库通过 HTTP 托管在 localhost 上。

root@solarix:/usr/share/distro_const# pkg publisher

PUBLISHER TYPE STATUS URI

solaris origin online http://localhost/

验证配置了信息库之后,以 root 身份运行 pkg install openmpi-15 命令添加该分发构造器程序包。然后从 IPS 信息库下载 openmpi-15 程序包并立即安装。

pkg install openmpi-15 命令显示进程的状态,如清单 1 所示,这样便于观察进度。

清单 1:pkg install openmpi-15 命令的输出

root@solarix:~# pkg install openmpi-15

Creating Plan

Packages to install: 2

Create boot environment: No

DOWNLOAD PKGS FILESXFER (MB)

service/picl 0/2 0/1430 0.0/11.9[K

developer/openmpi-15 1/2 1430/143011.9/11.9[K

Completed 2/2 1430/143011.9/11.9[K

PHASEACTIONS

Install Phase 1639/1639

PHASE ITEMS

Package State Update Phase 1/2

Package State Update Phase 2/2

Image State Update Phase 1/2

Image State Update Phase 2/2

PHASE ITEMS

Reading Existing Index 1/8

Reading Existing Index 5/8

Reading Existing Index 8/8

Indexing Packages2/2

安装完 openmpi-15 程序包之后,只需在 PATH 变量中包括 /usr/openmpi/ompi-15/bin,然后就一切准备妥当。

使用 OMPT 编译 MPI 程序

使用 OMPT 编译 MPI 程序有两种方式。您可以使用程序包中包含的编译器包装器(mpicc、mpiCC、mpif77 和 mpif90)或者直接调用编译器。

因为需要包含的 include、library 和 run 路径,建议采用第一种方法。包装器将其不了解的所有选项都传给 Oracle Solaris Studio 编译器,因此您应能够使用包装器实用程序替换 makefile 中编译器的所有实例。

以清单 2 作为示例 MPI 程序,可以使用一行命令编译程序:

mpicc hello.c -o hello.x

清单 2:示例 hello.c 程序

#include <stdio.h>

#include <mpi.h>

int main(int argc, char **argv) {

int np, me

MPI_Init(&argc,&argv)

MPI_Comm_size(MPI_COMM_WORLD,&np)

MPI_Comm_rank(MPI_COMM_WORLD,&me)

printf("hello from %d of %d\n", me, np)

MPI_Finalize()

return 0

}

还可以执行两阶段的编译和链接:

mpicc -c hello.c

mpicc hello.o -o hello.x

如果要直接执行编译器而不使用包装器,可以通过向包装器提供 -showme 选项来确定包装器使用的选项:

mpicc -showme hello.c -o hello.x

使用 OMPT 运行 MPI 程序

编译完可执行文件并与 OMPT 库链接之后,可以单独运行该程序或使用并行作业启动器实用程序 mpirun 来运行。

要单独运行程序,只需运行该可执行文件,就跟普通非并行可执行文件一样。但是,随后将由该程序来负责调用相应的 MPI API(如 MPI_Comm_spawn 或 MPI_Comm_spawn_multiple)来生成 MPI 作业的其他进程。

要一开始就创建运行多个进程的 MPI 作业,请使用 mpirun 实用程序。例如,如果您要使用总共 8 个进程在 2 个节点上运行我们的示例 MPI 程序,可以使用以下命令:

mpirun -np 8 -host hostname1,hostname2 hello.x

有几个选项可以与 mpirun 一起用来控制绑定、布局、输出重定向等等。通过执行 mpirun -h 或 man mpirun 可以获取有关这些选项的更多信息。

      这个事网上有攻略,参见:http://www.docin.com/p-728410179.html,或者度娘搜索“win7+ivf+mpi”字样即可。但是这个攻略有不详之处,这里结合自己的经验说说要注意的地方。

首先,假设你已经在win7系统下安装好了ivf开发环境(具体参见上述链接中的攻略,这又是一个大问题,限于篇幅这里不再详述),那么按以下步骤安装和配置mpi。

1. 安装mpich2文件。pc如果显示是64位 *** 作系统,不用搭理,要看ivf的位数,选择mpi的位数,一般是32位的。

2.安装目录可以自己选。目录下会有include,bin和lib文件夹,以及example 文件夹。安装过程中出现一个behappy,在后面要用到。

3.装完mpich2才完成了一小步,接下来要运行smpd可执行文件,该文件在安装目录下的bin文件夹中(大概是bin,反正就是上面提到的三个文件夹中的一个)。a.开始-搜索,找到 cmd.exe符,鼠标右键以管理员身份运行(注意,这里必须用鼠标右键,才能以管理员身份运行),就出现一个命令流窗口,黑色背景的那种。b. 进入smpd.exe文件所在的目录,例如目录在D盘的话,cd /d D:\。。。,总之进入smpd.exe所在的路径。c.查看smpd安装状态,smpd -status,如果没有安装,键入命令smpd -install -phrase behappy,就ok了。

4. 注册,就是让win7知道有smpd在运行了,开始-所有程序-mpich2-register相关的一个,会出现输入用户名密码什么的,用户名输入机器的名字,注意,这里要输入的名字有讲究,我的电脑-右键-管理-计算机管理(本地)-系统工具-本地用户和租-用户-名称,找到自己当前登录的账户对应的名称,而不是全名(一般两者一致,不一致的话按名称输入),将对应的账户名称和密码填入后,既可以注册。

5.ivf中的mpi配置,打开一个项目,在项目-项目名称属性中设置,有三个地方必须设置,1是fortran-genreral中的additional include directories,将include文件夹目录完整copy到里面;2是link-general中的additional library directories,将bin文件夹的完整目录copy过去;3是link-input中的addtional dependencies,将fmpich.lib文件的完整目录包括文件名copy过去。上述设置需要在每个项目中都做一遍,做一遍之后,该项目会记住设置,从而不用在同一个项目中重复设置。另外,对同一个项目,release和debug模式下也要分别进行上述设置。

6.接下来就可以使用mpi编译了,编译完生成的可执行文件(.exe)要在mpi提供的一个界面中运行,开始-所有程序-mpich2-mpiexec.exe,会d出一个对话框,在里面添加编译生成的可执行文件目录,所用的线程数即可,点击execute按钮即可以并行计算了。这里面可以勾选一个run in a separate window选项,屏幕输出会在一个独立窗口中显示,背景是黑色的那种,不勾选这个,屏幕输出就在下面的白色方框内显示。另外,如果想选择mpi运行程序的位置(可执行文件,头文件,输入文件输出文件),在对话框左下角勾选more,第一行即可选择。

上述细节乃是本人亲历艰辛才得到的经验,权作开头连接中给出的攻略的补充。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11551796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存