linux 进程阻塞 语句,MPI进程拓扑及非阻塞通信程序示例
题目如下,是关于MPI进程拓扑的:
请编写具有二维拓扑的MPI程序,每个程序都与其上下左右进程进行通信,请打印出它的上下左右进程的进程号和通信的内容。
代码如下,通信语句使用了非阻塞通信方式:
#include"mpi.h"
#include
#defineNUM_DIMS 2
intmain( int argc, char **argv ){
int rank,size;
int periods[NUM_DIMS] = {0,0};
int dims[NUM_DIMS] = {0,0};
int right_nbr, left_nbr;
int *data,buf=0;
int i,flag;
MPI_Comm my_comm;
MPI_Status status;
MPI_Request request;
MPI_Init(&argc, &argv);
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Dims_create(size, NUM_DIMS, dims);
MPI_Cart_create(MPI_COMM_WORLD, NUM_DIMS, dims, periods, 0, &my_comm);
data = (int *)malloc( size * sizeof(int) );
//初始化data数组
for(i=0;i
data[i] = 10*i;
}
flag = NUM_DIMS;
while(--flag>=0){
//flag = 1时,横向,flag = 0时,纵向
MPI_Cart_shift(my_comm, flag, 1, &left_nbr, &right_nbr);
MPI_Isend(&data[rank], 1, MPI_INT, left_nbr, 0, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
MPI_Isend(&data[rank], 1, MPI_INT, right_nbr, 0, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
if(flag){
printf("进程[%d]发送数据数据(%d)\n",rank, data[rank]);
}
if(left_nbr!=-1){
MPI_Irecv(&buf, 1, MPI_INT, left_nbr, 0, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
printf("进程[%d]从%s进程[%d]接收到数据(%d)\n",rank, flag?"左边":"上边", left_nbr, buf);
}
if(right_nbr!=-1){
MPI_Irecv(&buf, 1, MPI_INT, right_nbr, 0, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
printf("进程[%d]从%s进程[%d]接收到数据(%d)\n",rank, flag?"右边":"下边", right_nbr, buf);
}
}
MPI_Finalize();
}
进程数为8时,程序运行结果如下:
linux 进程阻塞 语句,MPI进程拓扑及非阻塞通信程序示例相关推荐
- java非阻塞锁_Java并发问题的非阻塞解决方案
转自http://blog.csdn.net/u011277203/article/details/9223545 在并发环境中,对于共享资源通常会采用显式的锁机制(比如synchronized或Re ...
- 【Linux】进程等待wait/waitpid status详解 (非)阻塞等待(代码)
文章目录 进程等待原因 进程等待方法 wait waitpid 获取子进程status (非)阻塞等待 进程的非阻塞等待方式代码 进程的阻塞等待方式代码 进程等待原因 fork创建了子进程,子进程帮父 ...
- Linux 设备驱动--- 阻塞型字符设备驱动 --- O_NONBLOCK --- 非阻塞标志【转】
阅读目录 1,以阻塞方式运行: 2,以非阻塞方式运行: 转自:http://blog.csdn.net/yikai2009/article/details/8653697 版权声明:本文为博主原创文章 ...
- python3socket非阻塞在linux里无效_Linux下socket设置为非阻塞方式和fcntl系统调用
用以下方法将socket设置为非阻塞方式 int flags = fcntl(socket, F_GETFL, 0); fcntl(socket, F_SETFL, flags | O_NONBLOC ...
- Linux高性能服务器I/0高级应用:非阻塞connect(15)
前言 首linux系统下,connect函数是阻塞的,阻塞时间的长度与系统相关.而如果把套接字设置成非阻塞,调用connect函数时会报错Operation now in progress,且errn ...
- python复制文件夹不阻塞_Python学习第54天(阻塞(blocking) IO和非阻塞(non-blocking)IO)...
今天之所以这么早结束,主要是因为自己脑子不够用了,发现最近的定义有点多,完全搞不清楚了,打算早点睡觉,今天的内容估计要引用很多别人的部分了. 看到题目的四个东东是不是惊呆了,我也是惊呆了,同时脑子还跟 ...
- 高级IO(文件的读写)——阻塞式IO的困境、非阻塞式IO
以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.阻塞式IO的困境 1.程序中读取键盘 int main(void) {// 读取键盘// 键盘就是标准输入,s ...
- c语言网络编程阻塞,c语言网络编程-设置非阻塞方式
#include #include #include #include #include #include #include #include #include #include #define MA ...
- java处理异步非阻塞请求_Spring WebFlux 的异步非阻塞处理
前言 随着 Web Servlet 技术栈的不断发展实现了异步处理与非阻塞 IO,但是其异步是不彻底的,因为受制于 Servlet 规范本身,比如其规范是同步的(Filter,Servlet)或阻塞( ...
最新文章
- 一图读懂《“十四五”软件和信息技术服务业发展规划》
- java 文件引用路径_JAVA项目引用文件路径问题
- CentOS7中多台服务器配置时钟同步
- webpack 引入jquery和第三方jquery插件
- Altium Designer20原理图库放置引脚报错解决方案
- 基于Tensorflow + Opencv 实现CNN自定义图像分类
- JS中判断某个字符串是否包含另一个字符串的方法
- Spark 基础 —— sc.broadcast
- 腾讯游戏人脸识别系统更新!刷脸的同时语音提示付款成功_游侠网 Ali213.net
- idea中怎么新建vue项目_项目中使用vue-awesome-swiper
- 关系抽取综述及相关顶会论文介绍
- random.choice与random.choices
- 【图像配准】基于matlab SIFT图像配准【含Matlab源码 148期】
- html5中的错误怎么调试,页面中css调试和问题 解决的一些经验总结
- 金笛JDMAIL打造公务员邮件系统
- quartusII编译时出现Error (119013): Current license file does not support the EP4CE6F17C8 device
- 中国历史人物传记数据库 CBDB 若干表简介
- 安徽省淮南市谷歌卫星地图下载
- 页面加载微信聊天记录图片不显示问题
- 第46届ICPC 东亚区域赛(澳门) A So I‘ll Max Out My Constructive Algor...
热门文章
- 怎样让手机变得更安全_使不安全变得更加安全
- java 导出word_Java 生成Word文档
- CEO不当了,CTO也不做了!我要回去写代码,这才是我所热爱的!
- 皮一皮:有钱人的品味实在不懂...
- 赠书:《Java性能优化实践》,众多业内大佬推荐阅读
- 8 种常见的SQL错误用法
- 快速提升页面性能的必备利器
- 从零开始入门 K8s | K8s 的应用编排与管理
- 命令行编译_新鲜货:C++ Build Insights告诉你为啥你的代码编译这么慢
- git项目比对_Git实战之Git对比SVN