并行程序设计学习笔记之用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)
上一篇: 并行学习之旅——MPI的安装与配置
下一篇: 并行编程之MPI使用简析(1)