欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

并行程序设计学习笔记之用MPI进行分布式内存编程--打印问候语句

程序员文章站 2022-07-12 21:34:50
...
#include<stdio.h>
#include<string.h>
#include<mpi.h>

const int MAX_STRING = 100;

int main(void){
	char greeting[MAX_STRING];
	int comm_sz;//进程数量
	int my_rank;//我的进程号

	MPI_Init(NULL, NULL);//初始化
	MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);//通信子,表示进程数量
	MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);//通信子,表示进程号

	if (my_rank != 0){
		sprintf(greeting, "Greetings from process %d of %d!", my_rank, comm_sz);//打印
		MPI_Send(greeting, strlen(greeting) + 1, MPI_CHAR, 0, 0, MPI_COMM_WORLD);//发送消息给0号进程
	}
	else{
		printf("Greetings from process %d of %d!\n", my_rank, comm_sz);
		for (int q = 1; q < comm_sz; q++)
		{
			MPI_Recv(greeting, MAX_STRING, MPI_CHAR, q, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);//接收函数
			printf("%s\n", greeting);
		}
	}

	MPI_Finalize();//释放MPI程序的资源
	return 0;

}

遇到的问题:
error C4996: ‘sprintf’: This function or variable may be unsafe 解决方法:
在项目–属性页面中找到“C/C++"——”预处理器“,在“预处理器定义”添加一句命令:_CRT_SECURE_NO_WARNINGS
添加完成后应用并退出

无法查找或打开 PDB 文件解决办法:
菜单“工具”-“选项”“-调试”-“常规”,然后
1)在右边的窗格中勾选“启用源服务器支持”。
2)“调试”-“符号”,勾选“Windows符号服务器”。
3)点击“确定”关闭选项窗口。运行调试

调试的时候闪退,导致看不到结果,而不是按任意键才结束进程的解决方法:
调试不按启动调试(F5),而是按开始执行(不调试)(chtl+F5)