CN107832144B - 分布式并行计算方法和装置 - Google Patents
分布式并行计算方法和装置 Download PDFInfo
- Publication number
- CN107832144B CN107832144B CN201710987163.7A CN201710987163A CN107832144B CN 107832144 B CN107832144 B CN 107832144B CN 201710987163 A CN201710987163 A CN 201710987163A CN 107832144 B CN107832144 B CN 107832144B
- Authority
- CN
- China
- Prior art keywords
- matlab
- computing
- task
- thread
- subtask
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明分布式并行计算方法和装置,在得到各计算子任务线程时,根据远程过程调用,为每一个计算子任务线程新建一个Matlab任务进程;每个Matlab任务进程都有一个独立的MCR实例,克服MCR实例仅能串行运行计算子任务的机制问题;各Matlab任务进程可同时并行运行,各MCR实例同时对计算子任务的数据包进行处理计算,实现分布式环境下跨语言调用Matlab进行分布式并行计算的功能。
Description
技术领域
本发明涉及软件工程技术领域,特别是涉及一种分布式并行计算方法和装置。
背景技术
当前,分布式并行计算系统,如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分布式并行计算的步骤之前,还包括:
通过非Matlab语言对待处理数据进行分区处理,得到多个计算子任务,并获取各计算子任务对应的Matlab任务进程的数量;
根据目标任务进程编号,将各计算子任务均匀分配到各Matlab任务进程中;目标任务进程编号为对计数变量和Matlab任务进程的数量进行取模运算得到。
另一方面,本发明实施例还提供了一种分布式并行计算装置,包括:
任务调用单元,用于在得到各计算子任务线程时,根据远程过程调用,分别建立各计算子任务线程的Matlab任务进程;
任务单元,用于分别获取各Matlab任务进程对应的计算子任务线程的数据包,并独立运行处理数据包,执行Matlab分布式并行计算。
在其中一个实施例中,Matlab任务进程包括计算服务线程、MCR实例以及Matlab计算服务;
任务调用单元,用于根据远程过程调用,调度计算子任务线程的计算服务线程;
任务单元,用于根据计算服务线程,启动MCR实例并运行Matlab计算服务;通过MCR实例和Matlab计算服务,对数据包进行处理。
本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现一种分布式并行计算方法的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种分布式并行计算方法的步骤。
本发明具有如下优点和有益效果:
本发明分布式并行计算方法和装置,在得到各计算子任务线程时,根据远程过程调用,为每一个计算子任务线程新建一个Matlab任务进程;每个Matlab任务进程都有一个独立的MCR实例,克服MCR实例仅能串行运行计算子任务的机制问题;各Matlab任务进程可同时并行运行,实现分布式环境下跨语言调用Matlab进行分布式并行计算的功能。
附图说明
图1为传统技术调用Matlab进行计算的示意图;
图2为传统技术中基于Java调用Matlab进行计算的示意图;
图3为本发明分布式并行计算方法实施例1的流程示意图;
图4为本发明分布式并行计算方法的工作原理流程示意图;
图5为本发明分布式并行计算方法具体实施进程的示意图;
图6为本发明分布式并行计算方法的整体实施的流程示意图;
图7为本发明分布式并行计算方法中启动阶段的流程示意图;
图8为本发明分布式并行计算方法中并行计算阶段的流程示意图;
图9为本发明分布式并行计算方法中终止阶段的流程示意图;
图10为本发明分布式并行计算装置实施例1的结构示意图。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的首选实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
在某些应用领域,如分布式并行电力系统状态估计系统,电力系统状态估计是电力系统调度中心的能量管理系统的核心功能之一,其功能是根据电力系统的各种量测信息,估计出电力系统当前的运行状态,如各节点的电压、电流等信息;分布式并行电力系统状态估计,就是采用分布式并行计算方法的状态估计系统;为了实现复杂的网络数据交互与事务处理、同时兼具高性能数值计算功能,一般是基于Java、Python等语言构建系统整体框架,并采用Matlab来实现核心计算过程,也即跨语言调用Matlab程序实现计算。
通常,Java、Python等语言一般采用多线程方式来实现并行计算,由于Matlab的限制,采用多个线程调用多个Matlab实例进行并行计算无法实现,具体如图1所示,图1为传统技术调用Matlab进行计算的示意图。通常,一个程序对应一个程序进程,程序进程通过同时运行多个线程来执行并行计算;当需要调用Matlab程序或任务实例进行并行计算时,每个线程会分别生成和运行一个Matlab任务实例,多个Matlab任务实例同时运行即可达到并行计算的效果。
但是,Matlab任务实例的运行必须在MCR中进行,即在Matlab编译运行环境中运行。对每个程序进程,MCR仅运行一个MCR实例,而同一时间每个MCR实例仅能运行一个Matlab任务实例。因此,图1中的程序进程虽然启动多个线程,同时运行了多个Matlab任务实例,但这些Matlab任务实例只能在MCR实例上串行执行,即一个Matlab任务实例运行完后另一个Matlab任务实例才能开始运行。由于MCR这种机制的限制,传统技术调用Matlab进行并行计算将难以实现。
虽然Matlab本身也支持并行计算,但在某些应用场景下,并行任务的分解、数据的分块等任务需要其他语言完成,而Matlab仅完成最核心的计算任务。例如,现需要实现两个大的矩阵相加,数据来源于网络;为加快计算速度,需要采用并行计算;理想的方案是利用Java对数据进行预处理,然后调用Matlab进行计算。此时,利用Java在网络编程方面的功能全面、灵活性强的特点,先对矩阵数据进行分区,然后将分区好的矩阵传递给多个Matlab实例进行并行计算,如图2所示,图2为传统技术中基于Java调用Matlab进行计算的示意图。但如上所述,直接用Java调用Matlab,在同一台计算机上仅会运行一个MCR,而MCR对任务是串行执行的,也就是说,任务1和任务2是串行执行的;Java调用Matlab进行并行计算将难以实现。
为解决跨语言调用Matlab难以实现并行计算的问题,本发明提供一种分布式并行计算方法实施例1,参见图3,图3为本发明分布式并行计算方法实施例1的流程示意图,包括:
步骤S310:在得到各计算子任务线程时,根据远程过程调用,分别建立各计算子任务线程的Matlab任务进程;
步骤S320:分别获取各Matlab任务进程对应的计算子任务线程的数据包,并独立运行处理数据包,执行Matlab分布式并行计算。
具体而言,Matlab任务进程的建立是通过远程过程调用技术实现的;远程过程调用的优势是可实现进程间的通信;采用远程过程调用,可为每一个计算子任务线程新建一个Matlab任务进程,从而保证各个Matlab任务进程可以独立、同时并行运行。
需要说明的是,远程过程调用是一种进程间通信方式;允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节,即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同;比如两台服务器A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存空间,不能直接调用,这时候需要通过就可以应用远程过程调用框架的实现来解决。
远程过程调用是实现分布式并行计算的一种重要的、有效的技术手段,是实现跨进程通信的一种有效方式,本地过程调用的基础就是远程过程调用;远程过程调用是针对本地进程交互进行了优化。本发明适用于集群,也即不同计算机之间的交互,因此,采用远程过程调用技术来执行分布式并行计算。
上述实施例通过采用远程过程调用技术,为每一个计算子任务线程新建一个Matlab任务进程;各Matlab任务进程可同时接收对应计算子任务的数据包并独立运行处理,实现分布式环境下跨语言调用Matlab进行分布式并行计算的功能。
为了更清楚地阐释本发明的技术方案,以分布式并行电力系统状态估计系统为例进行说明;通过本发明的方法,把大的电力系统,分割成多个小的子系统,然后利用Matlab对这多个子系统同时进行一些状态估计的矩阵迭代运算,可大大提高估计的速度;引入非Matlab语言作为主体框架,是因为Java等语言在大规模网络系统的开发和集成上相比于Matlab有更大优势,而Matlab则在矩阵计算方面有很大优势,两者结合,效率更高。
在具体的一个实施例中,Matlab任务进程包括计算服务线程;
在得到各计算子任务线程时,根据远程过程调用,分别建立各计算子任务线程的Matlab任务进程的步骤包括:
根据远程过程调用,调度计算子任务线程的计算服务线程。
具体而言,本发明可基于远程过程调用技术,计算子任务线程负责启动Matlab任务进程中的计算服务线程。
在具体的一个实施例中,Matlab任务进程还包括MCR实例以及Matlab计算服务;
分别获取各Matlab任务进程对应的计算子任务线程的数据包,独立运行处理数据包,实现Matlab分布式并行计算的步骤包括:
根据计算服务线程,启动MCR实例并运行Matlab计算服务;
通过MCR实例和Matlab计算服务,对数据包进行处理。
具体而言,本发明中的计算服务线程主要完成以下步骤:
启动MCR实例并运行封装好的Matlab计算服务;
将接收到的数据包传输至MCR实例和封装好的Matlab计算服务;
在MCR实例和封装好的Matlab计算服务对数据包进行处理后,将处理结果反馈给计算子任务线程。
需要说明的是,执行本发明分布式并行计算方法的计算机需安装MCR运行环境;根据实际计算任务的需要,采用Matlab语言编写并封装Matlab计算服务;其它部分均可采用Java或Python等语言来实现;
为了进一步阐述本发明的具体实现过程,特以实施本发明分布式并行计算方法的、安装MCR运行环境的计算机为例,说明本发明的工作原理:
基于本发明各实施例,在具体的一个示例中,如图4所示,图4为本发明分布式并行计算方法的工作原理流程示意图;本发明分布式并行计算方法可包括调用进程和任务进程;调用进程通过远程过程调用与任务进程通信;调用进程得到包括线程1、线程2和线程3在内的各计算子任务线程时,通过远程过程调用分别建立各计算子任务线程对应的任务进程;调用进程的各线程包括Matlab任务调度模块;各任务进程包括Matlab计算服务模块,MCR实例以及Matlab计算模块;其中,Matlab任务调度模块主要负责Matlab计算服务模块的启动和Matlab计算任务的传输;各任务进程获取对应的计算子任务线程的数据包,并独立运行处理数据包,执行Matlab分布式并行计算。
具体的,Matlab任务调度模块通过远程过程调用启动Matlab计算服务模块至任务进程的计算服务线程中,然后即可将计算子任务线程的数据包传输给Matlab计算服务模块并接收Matlab计算服务模块反馈的数据包处理结果;Matlab计算服务模块主要负责启动MCR实例并运行封装好的Matlab计算模块,之后即可通过MCR实例和Matlab计算模块对来自Matlab任务调度模块的数据包进行处理,并将处理结果反馈给Matlab任务调度模块。由于每个Matlab计算服务模块都位于不同的任务进程中,每个任务进程都有一个独立的MCR实例,因此各任务进程中的Matlab计算模块均可同时并行运行。
为了进一步阐述本发明的具体实现过程,特以实施本发明分布式并行计算方法的、安装MCR运行环境的计算机为例,说明本发明的具体实施进程:
在具体的一个示例中,参见图5,图5为本发明分布式并行计算方法具体实施进程的示意图;基于本发明各实施例,具体实施进程可包括控制模块、Matlab任务调度模块、Matlab计算服务模块和Matlab计算模块;本发明中,控制模块、Matlab任务调度模块以及Matlab计算服务模块基于非Matlab语言开发;根据实际应用需求,Matlab计算模块采用Matlab语言开发并进行封装,同时,运行环境需要安装部署Matlab编译运行环境(MCR)。
控制模块的功能包括启动Matlab的任务调度模块,同时监测Matlab任务调度模块的状态,如Matlab任务调度模块线程是否处于正常运行状态等。控制模块以线程的方式启动Matlab任务调度模块,可以同时启动多个Matlab任务调度模块线程;如图5所示,控制模块启动了两个Matlab任务调度模块线程;Matlab任务调度模块启动一个任务进程,任务进程中会启动Matlab计算服务模块线程;Matlab任务调度模块线程与Matlab计算服务模块线程为一一对应关系;Matlab计算服务模块在启动时,会同时启动一个MCR实例并在其上运行Matlab计算模块。控制模块与各Matlab任务调度模块线程处于同一调用进程中;Matlab计算服务模块线程、MCR实例及Matlab计算模块的实例处于对应的任务进程中。
为了进一步阐述本发明的具体实现过程,特以实施本发明分布式并行计算方法的、安装MCR运行环境的计算机为例,说明本发明整体实施的流程:
基于本发明各实施例,本发明分布式并行计算方法整体实施的流程可包括三个阶段,参见图6,图6为本发明分布式并行计算方法的整体实施的流程示意图,按顺序排列分别为启动阶段、并行计算阶段以及终止阶段。
在具体的一个实施例中,还包括步骤,在建立各Matlab任务进程时,通过计算子任务线程启动心跳线程;通过心跳线程,将计算子任务线程的运行状态传输给Matlab任务进程;
在启动MCR实例时,启动心跳检测线程;通过心跳检测线程,以轮询的方式检测计算子任务线程的运行状态。
具体而言,各计算子任务线程启动Matlab任务进程时,会同时启动心跳线程,用于通知该Matlab任务进程当前计算子任务线程的运行状态;Matlab任务进程启动时,先启动计算服务线程,该计算服务线程在启动MCR实例的同时,会启动心跳检测线程;心跳检测线程以轮询的方式检测计算子任务线程的状态。
需要说明的是,心跳指的是两个进程之间,进程1为了确定进程2仍然在运行中,需要进程2向进程1周期性发送心跳包,即表示进程2当前运行状态的小数据包,以告知进程2当前仍在运行中。心跳线程指的是进程2中用于周期性发送心跳包的程序线程,而心跳检测线程则是进程1中用于接收心跳包的线程。进程1通过心跳包获取进程2的运行状态;若是进程2结束运行或是因宕机等缘故而停止,未发送心跳包,则进程1可根据进程2终止的状况执行对应的步骤,避免一直处于待机状态,降低效率。
换言之,心跳是为了监测进程或线程的状态,比如客户端会定期向服务端发送一个数据包,这个数据包就是心跳包,如果服务端接收到这个心跳,说明客户端还在运行,如果服务端一直没接收到这个心跳包,那服务端就任务客户端已经终止,就可以采取相应的操作,如释放资源。
在具体的一个实施例中,在得到各计算子任务线程时,通过远程过程调用,分别建立各计算子任务线程的Matlab任务进程的步骤之前,还包括:
在获取到待处理数据时,通过非Matlab语言对待处理数据进行预处理,得到各预处理数据,基于各预处理数据启动各计算子任务线程;非Matlab语言为支持Matlab调用的编程语言。
具体而言,非Matlab语言对待处理数据进行预处理得到各预处理数据;预处理数据是指适合Matlab语言处理的数据;进一步的,基于适合Matlab语言处理的预处理数据,启动各计算子任务线程;非Matlab语言是指支持Matlab调用的编程语言,包括Java、C++等语言。
为了进一步阐述本发明的具体实现过程,特以实施本发明分布式并行计算方法的、安装MCR运行环境的计算机为例,说明本发明启动阶段的流程:
在具体的一个示例中,参见图7,图7为本发明分布式并行计算方法中启动阶段的流程示意图。启动阶段时,控制模块通过循环,共启动N个Matlab任务调度模块线程。每个Matlab任务调度模块启动时会启动一个任务进程,同时启动心跳线程,用于通知任务进程当前调用进程处于运行状态。任务进程启动时,首先启动Matlab计算服务模块,该模块会启动MCR实例,同时启动心跳检测线程以轮询的方式检测调用进程的状态。MCR实例启动过程主要包括两个步骤,即启动MCR实例以及载入计算模块,之后MCR实例就处于侦听状态,等待调用进程发送计算任务请求。
需要说明的是,本发明中的计算任务属于待处理数据;本发明中的任务进程属于Matlab任务进程;本发明中的Matlab任务调度模块线程属于计算子任务线程;本发明中的Matlab计算服务模块、Matlab计算服务模块线程属于计算服务线程;本发明中的计算模块属于Matlab计算服务。
在具体的一个实施例中,分别获取各Matlab任务进程对应的计算子任务线程的数据包,并独立运行处理数据包,实现Matlab分布式并行计算的步骤之前,还包括:
通过非Matlab语言对待处理数据进行分区处理,得到多个计算子任务,并获取各计算子任务对应的Matlab任务进程的数量;
根据目标任务进程编号,将各计算子任务均匀分配到各Matlab任务进程中;目标任务进程编号为对计数变量和Matlab任务进程的数量进行取模运算得到。
具体而言,非Matlab语言对待处理数据进行分区,得到多个计算子任务,而Matlab任务进程则完成核心的处理计算;各计算子任务通过子任务编号向Matlab任务进程总数取模,均匀地分配到各Matlab任务进程中。
为了进一步阐述本发明的具体实现过程,特以实施本发明分布式并行计算方法的、安装MCR运行环境的计算机为例,说明本发明并行计算阶段的流程:
在具体的一个示例中,如图8所示,图8为本发明分布式并行计算方法中并行计算阶段的流程示意图;在并行计算阶段,若总的计算任务被分区为M个计算子任务,共有N个并行任务进程,控制模块会按i=(j MOD N),即任务编号向N取模的方式,将M个计算子任务均匀地分配到N个任务进程中,从而保证负载的均衡。计算任务请求和相关的数据包会通过Matlab任务调度模块发送给任务进程中的MCR实例上,执行分布式并行计算,由各MCR实例调用计算模块完成数据的处理,并返回结果。最后,由控制模块汇总各任务进程的处理计算结果,并进行合并。
在完成分布式并行计算,得到处理计算结果后,进入终止阶段;
在具体的一个示例中,参见图9,图9为本发明分布式并行计算方法中终止阶段的流程示意图;当计算结束后,调用进程会先终止运行,此时调用进程中的控制模块和所有Matlab任务调度模块线程均会终止,且Matlab任务调度模块中的心跳线程也会终止;任务进程中Matlab计算服务模块的心跳检测线程在检测到心跳超时,先终止任务进程中的MCR实例及计算模块,然后终止心跳检测线程,最后终止整个任务进程。
另一方面,本发明还提供了一种分布式并行计算装置,如图10所示,图10为本发明分布式并行计算装置实施例1的结构示意图,包括:
任务调用单元110,用于在得到各计算子任务线程时,根据远程过程调用,分别建立各计算子任务线程的Matlab任务进程;
任务单元120,用于分别获取各Matlab任务进程对应的计算子任务线程的数据包,并独立运行处理数据包,执行Matlab分布式并行计算。
在具体的一个实施例中,Matlab任务进程包括计算服务线程、MCR实例以及Matlab计算服务;
任务调用单元110,用于根据远程过程调用,调度计算子任务线程的计算服务线程;
任务单元120,用于根据计算服务线程,启动MCR实例并运行Matlab计算服务;通过MCR实例和Matlab计算服务,对数据包进行处理。
需要说明的是,上述分布式并行计算装置中的各单元模块,能够对应实现上述分布式并行计算方法中的各流程步骤,此处不再重复赘述。
本发明针对的应用场景就是非Matlab语言调用Matlab实现并行计算,且非Matlab语言主要实现数据的收集、业务逻辑控制、数据预处理等,而Matlab仅负责核心计算任务。上述实施例提到的非Matlab语言是指支持Matlab调用的编程语言,包括Java、C++等语言。由于Matlab语言在业务逻辑控制、网络编程等方面相对较弱,因此系统流程的控制、业务逻辑过程控制等都需要由非Matlab语言实现;例如,Java调用Matlab进行并行计算,且并行粒度由Java控制。
本发明具有如下优点和有益效果:
本发明分布式并行计算方法和装置,在得到各计算子任务线程时,根据远程过程调用,为每一个计算子任务线程新建一个Matlab任务进程;每个Matlab任务进程都有一个独立的MCR实例,克服MCR实例仅能串行运行计算子任务的机制问题;各Matlab任务进程可同时并行运行,各MCR实例同时对计算子任务的数据包进行处理计算,实现分布式环境下跨语言调用Matlab进行分布式并行计算的功能;通过本发明的技术方案,既可以利用基于Java等非Matlab语言构建大型分布式系统的优势,同时也可以兼具Matlab高效的数值计算功能,对构建复杂的大型数据分析、处理系统具有重要的指导意义。
在建立Matlab任务进程以及启动MCR实例时,分别启动心跳线程和心跳检测线程,以轮询的方式传输计算子任务线程的运行状态,用于保证进程间的连接以及确定Matlab任务进程的执行步骤。
本发明提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现一种分布式并行计算方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种分布式并行计算方法的步骤。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括以上方法所述的步骤,所述的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种分布式并行计算方法,其特征在于,包括:
在得到各计算子任务线程时,根据远程过程调用,分别建立各所述计算子任务线程的Matlab任务进程;
分别获取各所述Matlab任务进程对应的所述计算子任务线程的数据包,并独立运行处理所述数据包,执行Matlab分布式并行计算;
在得到各计算子任务线程时,通过远程过程调用,分别建立各所述计算子任务线程的Matlab任务进程的步骤之前,还包括:
在获取到待处理数据时,通过非Matlab语言对所述待处理数据进行预处理,得到各预处理数据,基于各所述预处理数据启动各所述计算子任务线程;所述非Matlab语言为支持Matlab调用的编程语言。
2.根据权利要求1所述的分布式并行计算方法,其特征在于,所述Matlab任务进程包括计算服务线程;
在得到各计算子任务线程时,根据远程过程调用,分别建立各所述计算子任务线程的Matlab任务进程的步骤包括:
根据所述远程过程调用,调度所述计算子任务线程的所述计算服务线程。
3.根据权利要求2所述的分布式并行计算方法,其特征在于,所述Matlab任务进程还包括MCR实例以及Matlab计算服务;
分别获取各所述Matlab任务进程对应的所述计算子任务线程的数据包,独立运行处理所述数据包,实现Matlab分布式并行计算的步骤包括:
根据所述计算服务线程,启动所述MCR实例并运行所述Matlab计算服务;
通过所述MCR实例和所述Matlab计算服务,对所述数据包进行处理。
4.根据权利要求3所述的分布式并行计算方法,其特征在于,还包括步骤:
在建立各所述Matlab任务进程时,通过所述计算子任务线程启动心跳线程;通过所述心跳线程,将所述计算子任务线程的运行状态传输给所述Matlab任务进程;
在启动所述MCR实例时,启动心跳检测线程;通过所述心跳检测线程,以轮询的方式检测所述计算子任务线程的运行状态。
5.根据权利要求1至4任意一项所述的分布式并行计算方法,其特征在于,所述非Matlab语言为Java语言或C++语言。
6.根据权利要求1至4任一项所述的分布式并行计算方法,其特征在于,
分别获取各所述Matlab任务进程对应的所述计算子任务线程的数据包,并独立运行处理所述数据包,实现Matlab分布式并行计算的步骤之前,还包括:
通过所述非Matlab语言对所述待处理数据进行分区处理,得到多个计算子任务,并获取各所述计算子任务对应的所述Matlab任务进程的数量;
根据目标任务进程编号,将各所述计算子任务均匀分配到各所述Matlab任务进程中;所述目标任务进程编号为对计数变量和所述Matlab任务进程的数量进行取模运算得到。
7.一种分布式并行计算装置,其特征在于,包括:
任务调用单元,用于在得到各计算子任务线程时,根据远程过程调用,分别建立各所述计算子任务线程的Matlab任务进程;其中,在得到各计算子任务线程时,通过远程过程调用,分别建立各所述计算子任务线程的Matlab任务进程的步骤之前,还包括:
在获取到待处理数据时,通过非Matlab语言对所述待处理数据进行预处理,得到各预处理数据,基于各所述预处理数据启动各所述计算子任务线程;所述非Matlab语言为支持Matlab调用的编程语言;
任务单元,用于分别获取各所述Matlab任务进程对应的所述计算子任务线程的数据包,并独立运行处理所述数据包,执行Matlab分布式并行计算。
8.根据权利要求7所述的分布式并行计算装置,其特征在于,所述Matlab任务进程包括计算服务线程、MCR实例以及Matlab计算服务;
所述任务调用单元,用于根据所述远程过程调用,调度所述计算子任务线程的所述计算服务线程;
所述任务单元,用于根据所述计算服务线程,启动所述MCR实例并运行所述Matlab计算服务;通过所述MCR实例和所述Matlab计算服务,对所述数据包进行处理。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6中任意一项所述分布式并行计算方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至6中任意一项所述分布式并行计算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710987163.7A CN107832144B (zh) | 2017-10-20 | 2017-10-20 | 分布式并行计算方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710987163.7A CN107832144B (zh) | 2017-10-20 | 2017-10-20 | 分布式并行计算方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107832144A CN107832144A (zh) | 2018-03-23 |
CN107832144B true CN107832144B (zh) | 2020-07-28 |
Family
ID=61648719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710987163.7A Active CN107832144B (zh) | 2017-10-20 | 2017-10-20 | 分布式并行计算方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107832144B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110162452A (zh) * | 2019-04-30 | 2019-08-23 | 广州微算互联信息技术有限公司 | 一种用于测试控制服务的模拟测试方法、装置和存储介质 |
CN112363817A (zh) * | 2020-11-27 | 2021-02-12 | Oppo广东移动通信有限公司 | 大数据任务执行方法、装置、存储介质以及服务器 |
CN115470912B (zh) * | 2022-03-16 | 2024-04-05 | 本源量子计算科技(合肥)股份有限公司 | 一种量子任务的处理装置、方法及量子计算机 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852209A (zh) * | 2006-05-31 | 2006-10-25 | 北京和利时系统工程股份有限公司 | 一种分布式控制系统中的远程过程调用方法及系统 |
CN102006315A (zh) * | 2009-08-28 | 2011-04-06 | 迈普通信技术股份有限公司 | 分布式系统远程过程调用通信方法 |
CN102193831A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 一种建立层次化的映射/归约并行编程模型的方法 |
CN103109260A (zh) * | 2010-05-04 | 2013-05-15 | 谷歌公司 | 数据的并行处理 |
CN104484228A (zh) * | 2014-12-30 | 2015-04-01 | 成都因纳伟盛科技股份有限公司 | 基于Intelli-DSC的分布式并行任务处理系统 |
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
-
2017
- 2017-10-20 CN CN201710987163.7A patent/CN107832144B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852209A (zh) * | 2006-05-31 | 2006-10-25 | 北京和利时系统工程股份有限公司 | 一种分布式控制系统中的远程过程调用方法及系统 |
CN102006315A (zh) * | 2009-08-28 | 2011-04-06 | 迈普通信技术股份有限公司 | 分布式系统远程过程调用通信方法 |
CN102193831A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 一种建立层次化的映射/归约并行编程模型的方法 |
CN103109260A (zh) * | 2010-05-04 | 2013-05-15 | 谷歌公司 | 数据的并行处理 |
CN104484228A (zh) * | 2014-12-30 | 2015-04-01 | 成都因纳伟盛科技股份有限公司 | 基于Intelli-DSC的分布式并行任务处理系统 |
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
Non-Patent Citations (1)
Title |
---|
基于JSP的Matlab远程调用和并行处理;孙佳庆 等;《计算机科学与应用》;20131231(第3期);第273-277页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107832144A (zh) | 2018-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832144B (zh) | 分布式并行计算方法和装置 | |
CN104834506A (zh) | 一种采用多线程处理业务应用的方法 | |
CN102323917B (zh) | 一种基于共享内存实现多进程共享gpu的方法 | |
CN104536937A (zh) | 基于cpu-gpu异构集群的大数据一体机实现方法 | |
CN108228330B (zh) | 一种串行化的多进程任务调度方法和装置 | |
CN105159769A (zh) | 一种适用于计算能力异构集群的分布式作业调度方法 | |
CN112035238A (zh) | 任务调度处理方法、装置、集群系统及可读存储介质 | |
Sadooghi et al. | Achieving efficient distributed scheduling with message queues in the cloud for many-task computing and high-performance computing | |
CN113835866B (zh) | 多线程任务调度优化方法 | |
CN109660569B (zh) | 一种多任务并发执行方法、存储介质、设备及系统 | |
CN110611707A (zh) | 一种任务调度的方法及装置 | |
CN110633145B (zh) | 一种分布式系统内实时通讯方法、装置及分布式系统 | |
Tsuji et al. | Multiple-spmd programming environment based on pgas and workflow toward post-petascale computing | |
CN107391221B (zh) | 调度服务器、编译服务器及分布式编译方法 | |
CN114615308A (zh) | 基于rpc的异步多线程并发网络通讯方法及装置 | |
US9032251B2 (en) | Re-forming an application control tree without terminating the application | |
US8291419B2 (en) | Fault tolerant system for execution of parallel jobs | |
CN115114022A (zh) | 对gpu资源进行使用的方法、系统、设备及介质 | |
Rashmi et al. | Factors influencing job rejections in cloud environment | |
Cabello et al. | Fault tolerance in heterogeneous multi-cluster systems through a task migration mechanism | |
Lu et al. | Developing a concurrent service orchestration engine in ccr | |
CN112860396B (zh) | 一种基于分布式深度学习的gpu调度方法及系统 | |
CN110647440A (zh) | 一种基于状态机的大数据任务处理方法及系统 | |
Huang et al. | Performance optimization of High-Performance LINPACK based on GPU-centric model on heterogeneous systems | |
Ding et al. | ROS Task Scheduling Algorithm in Multi-Core System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |