15个进程,3行5列,结合MPI_Comm_split函数,MPI_Bcast实现行广播和列广播。
Bcast广播时,如果通讯域是split之后的,则会按照color相同的进行广播,即color相同的为一组,每个组内编号为root的向组内其他进程广播。
下面的代码首先是按照列划分组并广播,然后是按照行划分组并广播。

#include "mpi.h"
#include "stdio.h"
int main(int argc, char** argv) {int dataCol = 0, dataRow = 11;MPI_Comm colComm, rowComm;int worldRank, worldSize;MPI_Status status;MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &worldRank);MPI_Comm_size(MPI_COMM_WORLD, &worldSize);if (worldRank / 5 == 0) {dataCol = worldRank;}int colorCol = worldRank % 5;int keyRow = worldRank / 5;MPI_Comm_split(MPI_COMM_WORLD, colorCol, keyRow, &colComm);MPI_Bcast(&dataCol, 1, MPI_INT, 0, colComm);printf("worldRank = %d, data = %d ", worldRank, dataCol);fflush(stdout);MPI_Barrier(MPI_COMM_WORLD);if (worldRank == 0) {printf("\n");}if (worldRank % 5 == 0) {dataRow = worldRank;}int colorRow = worldRank / 5;int keyCol = worldRank % 5;MPI_Comm_split(MPI_COMM_WORLD, colorRow, keyCol, &rowComm);MPI_Bcast(&dataRow, 1, MPI_INT, 0, rowComm);printf("worldRank = %d, data = %d ", worldRank, dataRow);fflush(stdout);MPI_Finalize();return 0;
}

运行结果如下:

MPI_Bcast与MPI_Comm_split配合,实现行广播或列广播相关推荐

  1. linux广播命令,Linux下用命令行实现录像和广播教学功能

    Linux下用命令行实现录像(Recording and playback of terminal sessions)和广播教学功能. script和scriptreplay在绝大多数GNU/Linu ...

  2. Android S动态广播注册流程(广播1)

    Android S动态广播注册流程 1. 动态广播注册的流程 2. 新建一个动态广播接收者 3. App部分的registerReceiver 4. system_server侧的广播注册 5. 总结 ...

  3. 广播发送者广播接收者介绍

    1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context ...

  4. excel表格怎么调整行高和列宽_wps表格课程08|调整行高列宽

    本课程由菜鸟在线教育独家出品,未经授权严禁用于商业用途,侵权必究 客服微信:13264012523 调整行高列宽是表格内容布局的必备技能. 方法/步骤 ■ 调整行高/列宽的最基础办法是:将鼠标定位到行 ...

  5. 黑马Android76期学习笔记01基础--day07--广播,有、无序广播、特殊广播接受者、样式和主题,this与context的区别、普通对话框,进度条对话框、帧动画

    1.广播Broadcastreceiver 1.定义一个广播接收者(定义一个类并继承BroadcastReceiver) public class OutGoingCallReveiver exten ...

  6. 说说Android的广播(4) - 前台广播为什么比后台广播快?

    说说Android的广播(4) - 前台广播为什么比后台广播快? 前台广播为什么比后台广播快 讨论超时的细节之前,我们先讲讲对应用开发有帮助的,为什么前台队列比后台队列要快? 应用开发的同学在给系统团 ...

  7. Android 动态广播与静态广播

    学而时习,稳固而之心 目前推荐使用动态广播,现在已经很就没有使用过静态广播了. 动态广播与静态广播的联系 1 动态广播的速度要快于静态广播 2 静态广播的生存期可以比动态广播的长很多 在Manifes ...

  8. greenplum 数据库如何增加列_Greenplum行存与列存的选择以及转换方法-阿里云开发者社区...

    背景 数据在数据库中的存储形式多种多样,比较常见的如 1. PostgreSQL的堆表,以行的形式存储,(当变成字段压缩后的长度超过数据块的四分之一时,会以TOAST的形式存储到TOAST表). 2. ...

  9. 两个列向量相乘怎么计算_矩阵:行主序、列主序、行向量、列向量

    看龙书的时候发现一个矩阵在传入Shader之前都要转置一下,很好奇为什么要有一步这样的操作. 行主序和列主序 行主序指矩阵在内存中逐行存储,列主序指矩阵在内存中逐列存储. 行主序矩阵内存布局: 列主序 ...

  10. postgres默认安装后有哪些表_Greenplum 行存、列存,堆表、AO表的原理和选择

    行存和列存的原理 什么时候选择行存 什么时候选择列存 堆表和AO表的原理 什么时候选择堆表 什么时候选择AO表 测试对比行存deform和列存的性能差别 如何查看表的存储结构 Greenplum支持行 ...

最新文章

  1. 基于SSM实现垃圾分类信息管理系统
  2. python requests模块使用
  3. EBS R12.2 ADOP (R12.2 AD Online Patching) - 5
  4. android JNI层线程回调Java函数
  5. 如何解决与驱动相关的Linux网络问题
  6. httpd 处理模型
  7. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程
  8. 老师分身多个教室,教学还有这种神操作?
  9. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨0.56%
  10. PaaS适用于哪些场景?让案例说话
  11. 中文编程专栏目录, 初衷和希冀
  12. 全球各地区当前对电子烟行业的政策如何?
  13. rfid sim卡 android,手机专用SIM卡的非接触移动支付技术标准之争:NFC vs RFID
  14. 运营方法 - 运营的思考方法
  15. Xcode Accounts连接到Apple ID 服务器时出错
  16. 斯卡布罗市集 (口哨/宁林 人声/宁林) - 韩乘光
  17. 查看python包中所有方法_获取Python包中的所有类名
  18. 三个变量存在一个协整方程_计量经济学31个简答参考答案
  19. STM32F103ZE TFT液晶代码移植
  20. 如何直接用Tomcat启动项目

热门文章

  1. WWW 2017精选论文
  2. 哒螨灵使用注意事项_常用杀虫剂-哒螨灵使用方法
  3. 深圳java程序员培训班哪里最好,深圳java程序员培训学费(学习Java要不要报班)
  4. 酒香不怕巷子深,有心人才找得到的京都茶寮
  5. 基于Spire.Doc转PDF得方法,没有授权只能三页
  6. mocha-only和skip的用法
  7. 【读懂Autosar代码】-1-概述
  8. 使用github免费搭建个人网站详细教程
  9. 阿里云mysql自动备份_如何使用脚本自动备份阿里云rds数据库
  10. 解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\