windows visual studio 2012下MPI并行环境搭建

因为课程作业的缘故需要编写并行计算的程序,准备写一下MPI程序,MPI的全称是Message
Passing Interface即标准消息传递界面,可以用于并行计算。MPI的具体实现一般采用MPICH。下面介绍如何在Windows 8系统下visual studio 2012中搭建MPI环境来编写MPI程序。

安装MPI实现库

MPICH官网上给出了windows下的下载地址。可以看出链接到了微软的官网,根据我的版本下载并安装了HPC
Pack 2012 SDK
。然而在网上查找资料发现都是关于MPICH2的,所以又下载安装了这个,并根据博客的内容进行了配置。后文的结果是我写的hello
world程序能够成功运行,但前面安装了两次这个过程却给我后面工作带来了很大麻烦。

实现第一个MPI程序

在visual studio 2012中新建控制台程序,配置mpi的include和Lib路径。打开应用程序属性->VC目录下进行更改。

加入代码:

#include "stdafx.h"
#include "mpi.h"
#include <stdio.h>
#include <math.h>
#pragma comment (lib, "msmpi.lib")

int _tmain(int argc, char* argv[])
{
	int myid, numprocs;
	int namelen;

	char processor_name[MPI_MAX_PROCESSOR_NAME];

	MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD, &myid);
	MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
	MPI_Get_processor_name(processor_name, &namelen);

	fprintf(stderr, "Hello World! Process %d of %d on %s\n", myid, numprocs, processor_name);

	MPI_Finalize();
	return 0;
}

运行得到:

说明程序正确运行。但是从程序运行中看到只运行了一个进程,没有看到所谓的并行运算呀。别着急下一节进行介绍。

MPI并行运算

使用控制台命令调用上面的helloworld.exe程序,得到并行运算结果。输入命令:

mpiexec -n 4 helloworld.exe

结果出现了下面的问题:

ERROR:unable to read the cmd header on the pmi context, Error = -1

stackoverflow上的大牛说明产生这个问题的原因在于系统中安装了两个版本的mpi,分别是c:\program files\mpich2\bin和c:\program
files\microsoft hpc pack 2012\bin.

根据上面的方法,我将hpc pack 2012卸载了(因为到处都是MPICH的使用,所以就卸载了微软提供的了),重新运行上面的命令,又产生了问题:

Please specify an authentication passphrase for smpd:

stackoverflow上提供的解决方法是使用wmpiregister进行注册,具体方法参考资料1中提供了,但仍然没有解决该问题。又卸载并重新安装了MPICH这次,直接提示没有mpiexec命令了。我猜想MPICH是由第三方库提供的,而hpc pack 2012是微软自己的东西,因此使用MPICH时需要进行一些环境上的配置,而hpc
pack 2012不需要,所以又卸载了MPICH并安装会pc pack 2012。这次再运行mpiexec命令竟然成功了!得到运行10次结果如下:

从上面结果还可以看出,系统调用不同线程的顺序由系统随机决定的,线程的结束时间无法确定。

一点感想:编程不光是个技术活也是个体力活,很多时候遇到一个问题需要不停的去google寻找解决方法,但我们平时遇到的大部分问题都是有很多人遇到过的,这个过程就要求我们不急不躁,仔细去查找前人的解决方案了。

参考资料:

  1. windows xp下配置MPICH:http://blog.csdn.net/morewindows/article/details/6823436
  2. Error = -1问题的解决方法:http://stackoverflow.com/questions/10977026/mpi-runtime-errorunable-to-read-the-cmd-header-on-the-pmi-context-error-1
  3. authentication问题解决方法:http://stackoverflow.com/questions/13926882/please-specify-an-authentication-passphrase-for-smpd

windows visual studio 2012下MPI并行环境搭建

时间: 2024-10-12 05:55:40

windows visual studio 2012下MPI并行环境搭建的相关文章

Visual Studio 2012下Box2D开发环境设置

Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同.由于本书在此之前介绍的都是基于微软的Visual Studio 2012下开发的Win32平台,所以这一节我们介绍Visual Studio 2012下Box2D开发环境设置.这些需要设置和调整的方面包括如下:在解决方案中添加libBox2D库工程.添加libBox2D库引用.开启Box2D预编译开关. 1.在解决方案中添加libBo

Visual Studio 2013 Xamarin for iOS 环境搭建

原文:Visual Studio 2013 Xamarin for iOS 环境搭建 一.Mac安装Xamarin.iOS 1,我的Mac 环境:OSX 10.10.3.Xcode 6.3.2 (使用虚拟机亲测也成功  VMware 11 安装 Mac OS X10.10  ) Xamarin.iOS支持Mac OS 10.7及以上版本 下载安装xcode然后继续↓ Xamarin官网下载xamarininstaller.dmg, 安装前关闭防火墙,安装失败后会自动弹出资源列表(同windows

visual studio 2012下的配置记录

最近做的windows下的项目涉及到对VS的一些零散配置,记录如下: 1.要让vs2012下创建的工程支持winXP,需要下载update 3或以上的更新包.安装完后,在properties->configuration properties->general->platform tools下选择Visual Studio 2012 - Windows XP (v110_xp),这样输出的可执行文件,即可支持winXP. 2.为了防止缓冲区溢出攻击,可以开启DEP(data execut

Windows 7, Visual Studio 2012下编译Webkit

因工作需要,需要编译Windows版本的Webkit,中间走了不少弯路,都记录下来,供大家参考!也随时欢迎大家讨论(QQ群:345802342) 整个编译工作参考的是官方文档:https://webkit.org/webkit-on-windows/ 1. 主要的时间是下载代码,不需要VPN,我晚上下载的,第二天就好了:这个步骤应该不会有什么问题: 2. 文档上要求的工具我除了下面四个没装,其他的都装了: 3. WebKitAuxiliaryLibrary.zip和WebKitSupportLi

Visual Studio 2017+OpenCV-入门之环境搭建

for beginer.......... OpenCV包准备 下载地址:http://opencv.org/downloads.html 在官网上随便找一个Sample: http://docs.opencv.org/3.2.0/examples.html 1: 2: 3:拷贝官网的代码:ffilldemo.cpp 呀!!怎么报这么多错,看看提示原来是无法找到opencv的源文件.那么,少了, 我们就加上吧 添加好了之后又发现: 需要以下设置: 设置后发现还有问题: 设置后发现还是有问题: 需

用Visual Studio 2012+Xamarin搭建C#开发Andriod的环境

原文:用Visual Studio 2012+Xamarin搭建C#开发Andriod的环境 第一步:安装Visual Studio: Visual Studio 2012(或者Visual Studio 2010),原因是目前为止Xamarin for Visual Studio的插件只支持2010和2012版本的,安装过程在此不再赘述. 第二步:安装Xamarin: 1.到http://xamarin.com/download这里去注册一个账号,就可以下载Xamarin的安装包.如下图: 这

Visual Studio 2012 与此版本的 Windows 不兼容 解决

警告: [Window Title] 程序兼容性助手[Main Instruction] 此程序存在已知的兼容性问题[Expanded Information] Visual Studio 2012 与此版本的 Windows 不兼容.有关详细信息,请联系 Microsoft. 下载更新包安装:http://www.microsoft.com/zh-CN/download/details.aspx?id=36020

使用Visual Studio 2012远程调试Windows Azure网站

登录Windows Azure门户,点击"所有项目"中的网站名称. 点击"配置". 在"远程调试"选项中选择"打开",在"远程调试VISUAL STUDIO版本"中选择"2012". 点击下方的"保存"按钮. 来到VS2012项目中,在程序中打上断点. 右键项目,点击"发布",在"配置"中选择"Debug",

Windows7下Blend for Visual Studio 2012使用问题

目前开发的系统里很多控件样式和动画比较复杂,应该是之前同事用Blend做的,这种神器不用太浪费了,自己也准备试试. 系统环境Windows7+Visual Studio 2012 1.Windows7下使用问题 之前vs安装时已经选择安装Blend,但在win7下使用还是有问题,提示需要win8系统. 通过vs2012补丁包解决此问题,安装后即可在win7下使用Blend for Visual Studio 2012.下载地址 小插曲:安装完果然又报错了,在vs里无法debug,于是又用vs20