热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlab分布式并行计算,基于Matlab的分布式计算一些心得

由于算法计算量太大,电脑单核的计算能力已经无法满足我的需求,于是我考虑用并行计算,使用matlab中提供的local调度器,

由于算法计算量太大,电脑单核的计算能力已经无法满足我的需求,于是我考虑用并行计算,使用matlab中提供的local调度器,配和parfor语句,很方便的在一台服务器上实现了8核并行计算,但是很快,我觉得光用一台电脑跑太有限,8核已经很高,而且local调度器上限是有的,现在好像最高12个线程。于是我转而考虑使用分布式计算。matlab提供一个jobmanager调度器,支持一个几十台电脑的小规模计算机集群。一些基本的,按部就班的东西我这里就不说了,看看说明就能懂,我想趁热打铁,把一些容易使人迷茫,出错的地方记录下来。

一、认真看matlab的帮助,特别是链接,一定要看,网页帮助要比本地帮助全很多。

网页帮助中有个pdf文件,会教你如何一步一步使用各种调度器建立计算机集群,这个文件在2011a的帮助中有。之前看的的2008b中没有。

二、matlab中jobmanager调度器所支持的架构

在一个计算机集群(本文中的计算机集群特指基于jobmanager调度器的计算机集群)中,存在三种角色的电脑,一种是cluster,一种是jobmanager,另一种是client。我现在的情况是这样,一台电脑充当cluster、jobmanager和client角色,其他电脑则只扮演cluster,所有电脑通过以太网协议连接。

cluster中通常跑上几个worker,数量一般和cup的核数一样,worker的任务就是完成jobmanager分配给他的计算任务。理论上这些个worker可以在jobmanager上远程建立和销毁。

jobmanager其实就是计算机上跑的一个程序,他管理用户预先设置好的,可以并行计算的任务。我目前发现,计算机集群是一个动态的系统,他是可以动态添加和删除集群中的计算机的。在任务执行期间,是可以添加新的cluster的,这个我试过,删除没试过,我认为应该是可以的,要不然要调度器干嘛。

client就是用户程序所在电脑。程序需要寻找网络中可用的jobmanager,创建任务队列等等。

三、如何节约通信带宽

分布式计算是需要通信支持的,如果每个任务需要同步的数据(包括代码)太多,就挺浪费时间的。最好的办法就是在开启worker之前,先将需要使用的代码数据等都同步到每台cluster上,设置好path,记住,一定是在work打开之前做好同步工作,不然work使用的path是同步之前的路径,无法使用同步好的数据和代码。当然work是可以重启的。如果忘了这个关键的步骤,只能等到程序出错了才知道什么情况,这个代价太大。我现在使用的方法是在每个cluster上,把需要使用的第三方工具都事先安装好,而我经常需要改写的代码则是在任务开启前同步过去的,同步通常需要40s钟时间。代码同步过去之后,每次启动一个任务,只需要同步一个代码所在的path,这个数据量是很少的。

四、练手

如果手头么有建好的计算机集群,那就只能自己建了。如果上来就弄一堆电脑,接网线,上交换机,会有很多不确定因素。我建议先用一台电脑练手。也就是一台电脑扮演cluster、jobmanager以及client角色。 使用127.0.0.1地址寻找本台计算机。

五、其他

有些东西是需要牢记心里的。集群中的电脑matlab版本必须一样,操作系统版本无所谓,第三方工具要在worker开启前就装好,防火墙要小心设置,如果闲麻烦就直接关掉得了。最好的方法是进本地连接的属性的高级选项卡,里面有个关于防火墙的选项,从这里关防火墙最好。 有些杀毒软件会在计算机进入屏保时启动杀毒,这个会抢占计算机资源,是要关掉的。

以上只是个人一些经验总结,不对之处请大家多多指正。我刚起步的时候也是苦于没有方便的文献能够快速入门。我觉得大家可以多多补充,丰富这方面的内容。



推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了如何将PPT格式转换成PDF,并推荐了一款高效的PPT转换成PDF转换器。该转换器利用最新的超线程技术核心和多核心CPU性能,提高了转换效率和转换质量。同时,该转换器具备万能转换模式,可以轻松实现不同类型、不同内容和不同排版的PPT文件的转换。用户可以通过下载链接获取该转换器。 ... [详细]
author-avatar
懒得张开眼睛看你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有