并行环境搭建:Windows环境下的vs2013配置MPI

下载MPICH,官方地址:

点击打开链接

Windows下的MPI下载地址为:

点击打开链接

因为MPI在Windows下只能支持到1.4版本,所以我只下载了1.4版本。

安装完成后,在开始菜单可以看到:

并行环境搭建:Windows环境下的vs2013配置MPI_第1张图片



下面解决与vs的关联问题:

新建项目,打开属性,包含目录为MPICH2安装目录下的include,库目录为lib:

并行环境搭建:Windows环境下的vs2013配置MPI_第2张图片

在预处理器中添加“ MPICH_SKIP_MPICXX ”:

并行环境搭建:Windows环境下的vs2013配置MPI_第3张图片

在代码生成中选择多线程调试:

并行环境搭建:Windows环境下的vs2013配置MPI_第4张图片

在链接器的输入中,选择附加依赖项,添加mpi.lib,如果下载的MPI文件为Microsoft MPI (ms mpi)那么需要添加的文件为msmpi.lib:

并行环境搭建:Windows环境下的vs2013配置MPI_第5张图片

运行代码进行测试:

#include  
#include  
#include"mpi.h"  

int main(int argc, char *argv[])  // main必须带参数运行
{
	int myid, numprocs, source;
	MPI_Status status;

	char message[100];

	MPI_Init(&argc, &argv);//完成MPI程序的所有初始化,启动MPI环境,标志并行代码的开始

	printf("Hello World ! \n");
	MPI_Comm_rank(MPI_COMM_WORLD, &myid);/*获取进程的id,函数为int MPI_Common_rank(MPI_Comm comm,  int *rank) */
	MPI_Comm_size(MPI_COMM_WORLD, &numprocs); /*获取进程个数,函数为int MPI_Common_size(MPI_Comm comm,  int *size) */
	/*MPI_COMMON_WORLD为通讯组,一个通讯组是一个进程组和上下文的集合,上下文可以看作为组的超级标签,用于区分不同的通讯组,该参数用于限定参加通讯的进程的范围*/
	printf("I am %d of %d \n", myid, numprocs);

	if (myid != 0) //注意进程为非0
	{
		strcpy(message, "Hello World !");
		MPI_Send(message, strlen(message) + 1, MPI_CHAR, 0, 99, MPI_COMM_WORLD);
		/*先将字符串拷贝到发送缓冲区message中,然后调用MPI_Send语句将它发出,用
		strlen(message)指定消息的长度,用MPI_CHAR指定消息的数据类型1,指明发往进程0, 使
		用的消息标识是99 ,MPI_COMM_WORLD是包含本进程 和接收消息的进程进
		程0 的通信域,发送方和接收方必须在同一个通信域中,由通信域来统一协调和控制消息
		的发送和接收*/
	}
	else
	{
		for (source = 1; source < numprocs; source++)
		{
			MPI_Recv(message, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD, &status);
			printf("%s\n", message);
			/*进程0直接执行接收消息的操作,这里它使用message作为接收缓冲区,由此可见,对于同一个变量在发送进程和接收进程中的作用是不同的,它指定接收消息的最大长度为100,消息的数据类型为MPI_CHAR字符型,接收的消息来自进程source ,而接收消息携带的标识必须为99,使用的通信域也是MPI_COMM_WORLD, 接收完成后的各种状态信息存放在status中,接收完成后它直接将接收到的字符串打印在屏幕上*/

		}
	}
	MPI_Finalize(); // 结束MPI程序的运行,标志并行代码结束,结束除主进程外其它进程
	return 0;
}

结果为:

并行环境搭建:Windows环境下的vs2013配置MPI_第6张图片


程序已经生成完毕,现在可以进行并行运算:

首先打开“开始-程序-MPICH2-wmpiregister.exe"进行身份登录:

并行环境搭建:Windows环境下的vs2013配置MPI_第7张图片


这里的账号密码为计算机登录时的账号密码,填写完成后点击“Register”,结果如下:

并行环境搭建:Windows环境下的vs2013配置MPI_第8张图片


点击“ok”,进行下一步,打开“开始-程序-MPICH2-wmpiregister.exe"把刚生成的hello world程序放入到该程序中:


解决this  function or variable may be unsafe问题:

并行环境搭建:Windows环境下的vs2013配置MPI_第9张图片

需要在“属性”中的预处理器里面添加“ _CRT_SECURE_NO_WARNINGS ”:

并行环境搭建:Windows环境下的vs2013配置MPI_第10张图片


解决error LNK2019:无法解析的外部符号问题:

并行环境搭建:Windows环境下的vs2013配置MPI_第11张图片


这是因为vs创建的项目系统和安装的mpi系统不匹配,所以我们要把32位的项目更改3为64位的:
并行环境搭建:Windows环境下的vs2013配置MPI_第12张图片

解决控制台窗口闪退问题:

并行环境搭建:Windows环境下的vs2013配置MPI_第13张图片

你可能感兴趣的:(并行计算)