1.MPI多进程协同

MPI多进程运行的时候,每个进程的访问空间是独立的。例如对于一个全局变量sum==0。不能同时调用多个进程修改这个值,这样达不到你想要的效果。因为不同进程的执行顺序不确定,而且不同进程的存储空间相互独立。进程之间的沟通只能使用通信函数。

2.我的实际问题(视觉测量算法局部并行)

24个相同的任务,24个任务计算的结构都要保存到map里面。所以我的task是并行化这一段代码提速。当然提速的前提是要知道代码的时间消耗在哪。
如果简单使用不同进程不断更新map,那样就存在1中说的问题。
解决办法1:
使用通信,0号进程接收其他进程的计算结构,全部用0号进程保存。我感觉这是正解,但是自定义结构数据和string数据不太会send和recv。
解决办法2:
暴力。例如我有4个进程,每个进程的计算结构保留在自己对应的txt文件,最后统一读取txt文件内容,保存到我的map中。这是我采用的方法。
解决办法3(OpenMP):
最简单的方向,对map设置进程单独访问,因为OpenMP内存共享,这一点和MPI巨大不同。

3.MPI_Finalize()之后

在我实验过程中,MPI_Finalize()之后的代码也会执行多次,感觉十分奇怪,而我只想后面的代码串行执行就行。多方方法不行,我用的如下代码,退出其他进程,只保留一个进程。感觉应该不是标准方法,希望知道的读者可以指点我。

MPI_Barrier();//进程同步
if (myid!=0){MPI_Finalize();exit(1);//退出
}
MPI_Finalize();

在stackoverrun网址上看到一些大牛的回答,发现MPI会并行化全部代码,包括MPI_Init()之前的代码。所以结论是MPI会并行整个MPI代码,所以写MPI code最先可执行的代码应该是 MPI_Init()这个函数(当然也可以包括初始化函数)。如果想要使用MPI并行一个工程的部分函数,其他串行代码都需要用if(rank_id==0)判断,以免被执行多次。因为这个因素,强烈建议使用OpenMP,可以很快上手,上手难与低于MPI十倍,配置也超级方便,IDE一般自带。而且OpenMP使用更加灵活,如果没有多机并行的要求,强烈建议OpenMP。

MPI多进程问题记录相关推荐

  1. mpi大规模矩阵乘法C语言,MPI多进程并行计算矩阵乘法实现

    MPI多进程并行计算矩阵乘法实现,对原始矩阵A.B进行初始化算为: 其主要思想:是把相乘的矩阵按行分解(任务分解),分别分给不同的进程,然后在汇总到一个进程上,在程序上实现则用到了主从模式,人为的把进 ...

  2. win10+vs2017配置mpi环境的记录(已成功)

    并行计算的课程需要动手实验,需要在电脑上使用mpi 使用mpi有两种选择:虚拟机搭建集群,vs多线程模拟多机. 搭建集群太麻烦,果断放弃.决定使用vs2017多线程环境,通过mpi进行并行计算实验. ...

  3. Android 多进程Debug 记录

    1.为什么会用到多进程debug 为了分担主进程内存压力,将三方webview页面独立到其他进程.这样做虽然分担的内存压力但是造成了debug 其他进程代码困难.现对debug过程记录下,方便以后查看 ...

  4. python日志模块 超量处理_Python日志模块-多进程日志记录

    一.问题描述 项目中,使用RotatingFileHandler根据日志文件大小来切分日志.设置文件的MaxBytes为1GB, backupCount大小为5. 经查看,发现日志文件的大小均小于10 ...

  5. 深度增强学习DDPG(Deep Deterministic Policy Gradient)算法源码走读

    原文链接:https://blog.csdn.net/jinzhuojun/article/details/82556127 本文是基于OpenAI推出deep reinforcement learn ...

  6. 网页实时聊天之PHP如何实现websocket

    网页实时聊天之PHP如何实现websocket 一.总结 一句话总结: 应用 PHP 的 socket 函数库:PHP 的 socket 函数库跟 C 语言的 socket 函数非常类似 PHP 实现 ...

  7. 新浪是如何分析处理32亿条实时日志的?

    服务介绍 随着实时分析技术的发展及成本的降低,用户已经不仅仅满足于离线分析.目前我们服务的用户包括微博,微盘,云存储,弹性计算平台等十多个部门的多个产品的日志搜索分析业务,每天处理约32亿条(2TB) ...

  8. websocket 西部数码php_网页实时聊天之PHP实现websocket

    前言 websocket 作为 HTML5 里一个新的特性一直很受人关注,因为它真的非常酷,打破了 http "请求-响应"的常规思维,实现了服务器向客户端主动推送消息,本文介绍如 ...

  9. python-生产者消费者模型_线程_线程互斥锁_GIL全局解释器锁

    进程 1. 开启进程的两种方式 2. 进程对象其他属性和方法-pid: 进程id号 os.getpid()-ppid: 父进程id号 os.getppid() -is_alive(): 当前进程是否存 ...

最新文章

  1. python 类-python 类如何使用
  2. C++ 使用静态变量和静态方法统计学生分数和学生个数
  3. c语言使单片机输出低电平,单片机开发中的一些实用技巧
  4. 聊聊RocksDB Compact
  5. python怎么做回归分析_如何在Python中进行二维回归分析?
  6. 电池技术为什么如此高深莫测,以至于一直是手机等相关行业的短板?
  7. smali-2.2.4.jar baksmali-2.2.4.jar
  8. 矩阵乘法c语言蓝桥杯,[蓝桥杯][基础练习VIP]矩阵乘法 (C语言代码)
  9. asp.net core 返回的Server Kestrel是什么
  10. 数据结构面试常见问题总结
  11. 回溯算法原理及其应用场景
  12. c语言程序设计景点售票系统,c语言售票系统.docx
  13. BZOJ#4816. [Sdoi2017]数字表格
  14. 计算机应用能力考试ppt2003,全国专业技术人员计算机应用能力考试_PPT_2003_题库版.docx...
  15. Celery---手机短信异步发送
  16. 代理(proxy):正向代理,反向代理
  17. [新手入门]微信公众号推文制作
  18. java取得对象占用的内存大小
  19. 华为设备 配置成为FTP服务器/客户端
  20. PTA Swan学院社团招新(sort排序)

热门文章

  1. bulldog靶机练习思路详解
  2. 有钱人和你想的不一样
  3. Corona建筑表现作品:岩石上的住宅
  4. 吴洪声十问戴跃: 域名圈巴菲特是如何炼成的?
  5. 软件测试——前言介绍
  6. 地图 svg中国地图、echarts百度迁徙图
  7. 使用机器人工具箱在matlab上进行六轴机器人(6R)运动学建模【个人简记】
  8. 专题分纲目录 思维导图 XMind 闯关之路
  9. 小甲鱼零基础入门学习Python(绝对干货,值得学习)
  10. 抖音算法推荐机制详解!(科普向)