[发明专利]分布式并行计算方法和装置有效
申请号: | 201710987163.7 | 申请日: | 2017-10-20 |
公开(公告)号: | CN107832144B | 公开(公告)日: | 2020-07-28 |
发明(设计)人: | 何恒靖;肖勇;赵云;钱斌;郑楷洪;周密 | 申请(专利权)人: | 南方电网科学研究院有限责任公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/48 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 周清华 |
地址: | 510663 广东省广州市萝岗区科*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 并行 计算方法 装置 | ||
本发明分布式并行计算方法和装置,在得到各计算子任务线程时,根据远程过程调用,为每一个计算子任务线程新建一个Matlab任务进程;每个Matlab任务进程都有一个独立的MCR实例,克服MCR实例仅能串行运行计算子任务的机制问题;各Matlab任务进程可同时并行运行,各MCR实例同时对计算子任务的数据包进行处理计算,实现分布式环境下跨语言调用Matlab进行分布式并行计算的功能。
技术领域
本发明涉及软件工程技术领域,特别是涉及一种分布式并行计算方法和装置。
背景技术
当前,分布式并行计算系统,如Hadoop、Storm等平台,均采用Java、Python等开发语言;这些语言在事务处理、网络编程等方面有巨大优势,但难以处理大规模数值计算、矩阵运算等任务。而Matlab则主要面向科学计算,在计算速度和计算效率方面要明显优于Java、Python等语言,但在事务处理和网络编程方面,Matlab难以应对复杂的网络应用开发。
在实现的过程中,发明人发现传统技术中至少存在如下问题:通常Java、Python等语言一般采用多线程方式来实现并行计算,而由于Matlab的限制,采用多个线程调用多个Matlab实例进行并行计算无法实现。
发明内容
基于此,有必要针对跨语言调用Matlab难以实现并行计算的问题,提供一种分布式并行计算方法和装置。
为了实现上述目的,一方面,本发明实施例提供了一种分布式并行计算方法;
一种分布式并行计算方法,包括:
在得到各计算子任务线程时,根据远程过程调用,分别建立各计算子任务线程的Matlab任务进程;
分别获取各Matlab任务进程对应的计算子任务线程的数据包,并独立运行处理数据包,执行Matlab分布式并行计算。
在其中一个实施例中,Matlab任务进程包括计算服务线程;
在得到各计算子任务线程时,根据远程过程调用,分别建立各计算子任务线程的Matlab任务进程的步骤包括:
根据远程过程调用,调度计算子任务线程的计算服务线程。
在其中一个实施例中,Matlab任务进程还包括MCR实例以及Matlab计算服务;
分别获取各Matlab任务进程对应的计算子任务线程的数据包,独立运行处理数据包,实现Matlab分布式并行计算的步骤包括:
根据计算服务线程,启动MCR实例并运行Matlab计算服务;
通过MCR实例和Matlab计算服务,对数据包进行处理。
在其中一个实施例中,还包括步骤,
在建立各Matlab任务进程时,通过计算子任务线程启动心跳线程;通过心跳线程,将计算子任务线程的运行状态传输给Matlab任务进程;
在启动MCR实例时,启动心跳检测线程;通过心跳检测线程,以轮询的方式检测计算子任务线程的运行状态。
在其中一个实施例中,在得到各计算子任务线程时,通过远程过程调用,分别建立各计算子任务线程的Matlab任务进程的步骤之前,还包括:
在获取到待处理数据时,通过非Matlab语言对待处理数据进行预处理,得到各预处理数据,基于各预处理数据启动各计算子任务线程;非Matlab语言为支持Matlab调用的编程语言。
在其中一个实施例中,分别获取各Matlab任务进程对应的计算子任务线程的数据包,并独立运行处理数据包,实现Matlab分布式并行计算的步骤之前,还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南方电网科学研究院有限责任公司,未经南方电网科学研究院有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710987163.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种物理机资源的处理方法和装置
- 下一篇:一种基于虚拟机的系统资源释放方法