CN107679701B - 负荷削减并行计算方法及装置 - Google Patents

负荷削减并行计算方法及装置 Download PDF

Info

Publication number
CN107679701B
CN107679701B CN201710806361.9A CN201710806361A CN107679701B CN 107679701 B CN107679701 B CN 107679701B CN 201710806361 A CN201710806361 A CN 201710806361A CN 107679701 B CN107679701 B CN 107679701B
Authority
CN
China
Prior art keywords
load reduction
data
algorithm
branch node
matlab
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
Application number
CN201710806361.9A
Other languages
English (en)
Other versions
CN107679701A (zh
Inventor
陆国俊
胡金星
章磊
栾乐
李光茂
何兵
肖天为
冯圣中
崔屹平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Institute of Advanced Technology of CAS
Guangzhou Power Supply Bureau of Guangdong Power Grid Co Ltd
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
Guangzhou Power Supply Bureau Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Institute of Advanced Technology of CAS, Guangzhou Power Supply Bureau Co Ltd filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN201710806361.9A priority Critical patent/CN107679701B/zh
Publication of CN107679701A publication Critical patent/CN107679701A/zh
Application granted granted Critical
Publication of CN107679701B publication Critical patent/CN107679701B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0635Risk analysis of enterprise or organisation activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/06Electricity, gas or water supply

Abstract

本发明涉及一种负荷削减并行计算方法,读取支路节点开断数据,将支路节点开断数据均分到数据并行计算平台的多个分区中,获取Matlab与Java混合编程的负荷削减算法包;在各分区内分别调用负荷削减算法包计算当前分区内的支路节点开断数据,获取支路节点负荷削减量。通过调用Matlab与Java混合编程的负荷削减算法包并行计算支路节点开断数据,获取支路节点负荷削减量,大大降低了负荷削减算法并行化开发的难度以及复杂度,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。

Description

负荷削减并行计算方法及装置
技术领域
本发明涉及电网技术领域,特别涉及一种负荷削减并行计算方法。
背景技术
随着电力需求的持续增长及电网互联规模不断扩大,电力系统运行与控制需要处理大量的数据,而且对实时性有较高要求。电力系统负荷削减计算的传统串行方式在可处理规模与求解速度上无法满足大型电力网络的在线分析及实时控制等仿真要求,因此提出可行的支持复杂问题快速求解的并行计算方案。
目前电力分析的并行计算一般为基于MPI(Message-Passing-Interface,消息传递接口)实现并行化计算。但是,负荷削减计算用到的算法非常多,将这些算法进行并行化开发难度大、复杂度高,而且如果新加入一个算法,需要再次进行并行化,不具有普适性。
发明内容
基于此,有必要针对负荷削减算法并行化开发难度大、复杂高、不具有普适性的问题,提供一种负荷削减并行计算方法。
一种负荷削减并行计算方法,包括步骤:
读取支路节点开断数据,将支路节点开断数据均分到数据并行计算平台的多个分区中,其中,数据并行计算平台包括分布式文件系统、Matlab Runtime以及计算引擎;
获取Matlab与Java混合编程的负荷削减算法包;
在各分区内分别调用负荷削减算法包,计算当前分区内的支路节点开断数据,获取支路节点负荷削减量。
上述负荷削减并行计算方法,通过将读取的支路节点开关数据均分到数据并行平台的多个分区中,在各分区内分别调用Matlab与Java混合编程的负荷削减算法包,并行计算当前分区内的支路节点开断数据,获取支路节点负荷削减量,大大降低了负荷削减算法并行化开发的难度以及复杂度,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。
一种负荷削减并行计算装置,其特征在于,包括:
数据读取模块,用于读取支路节点开断数据,将支路节点开断数据均分到数据并行计算平台的多个分区中,其中,数据并行计算平台包括分布式文件系统、Matlab Runtime以及计算引擎;
算法包获取模块,用于获取Matlab与Java混合编程的负荷削减算法包;
负荷削减量计算模块,用于在各分区内分别调用负荷削减算法包,计算当前分区内的支路节点开断数据,获取支路节点负荷削减量。
上述负荷削减并行计算装置,数据读取模块读取的支路节点开关数据均分到数据并行平台的多个分区中,负荷削减量计算模块在各分区内调用通过算法包获取模块获取的Matlab与Java混合编程的负荷削减算法包,并行计算当前分区内的支路节点开断数据,获取支路节点负荷削减量,大大降低了负荷削减算法并行化开发的难度以及复杂度,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。
一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述负荷削减并行计算方法的步骤。
一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行负荷削减并行计算方法的步骤。
上述负荷削减并行计算的计算机设备以及存储介质,大大降低了负荷削减算法并行化开发的难度以及复杂度,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。
附图说明
图1为一个实施例的荷削减并行计算方法流程图;
图2为一个实施例的负荷削减并行计算装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明的保护范围。
参见图1所示,图1为本发明一个实施例的负荷削减并行计算方法的流程图,该实施例中负荷削减并行计算方法,包括以下步骤:
步骤S101:读取支路节点开断数据,将支路节点开断数据均分到数据并行计算平台的多个分区中,其中,数据并行计算平台包括分布式文件系统、Matlab Runtime以及计算引擎。
负荷削减计算针对的是电网中风险场景,即支路的开断情况。本步骤中,融合集成分布式文件系统(Hadoop Distribute File System,HDFS)、Matlab Runtime和计算引擎构建数据并行计算平台,读取支路节点开断数据,将支路节点开断数据均分到数据并行计算平台的多个分区中。
其中,分布式文件系统提供对大数据集的高吞吐量访问,实现对电气计算的输入输出的多元异构数据的存储。Matlab Runtim是提前部署的Matlab的运行环境,使得数据并行计算平台内不需要安装Matlab软件,使Java程序能够正确调用Matlab程序。计算引擎提供并行计算环境。
步骤S102:获取Matlab与Java混合编程的负荷削减算法包。
Matlab具有较好的数值计算功能,通常负荷削减的计算程序都是由Matlab编写的。Java是一种跨平台,适合于分布式计算环境的面向对象的编程语言,但在数值分析和处理方面的能力并不突出。Matlab和Java混合编程可以实现两种语言的优势互补。
步骤S103:在各分区内分别调用负荷削减算法包计算当前分区内的支路节点开断数据,获取支路节点负荷削减量。
上述负荷削减并行计算方法,通过将读取的支路节点开关数据均分到数据并行平台的多个分区中,在各分区内分别调用Matlab与Java混合编程的负荷削减算法包,并行计算当前分区内的支路节点开断数据,获取支路节点负荷削减量,大大降低了负荷削减算法并行化开发的难度以及复杂度,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。
可选的,读取支路节点开断数据的步骤可以是从分布式文件系统读取支路节点开断数据,或着是从本地读取支路节点开断情况。
在一个优选实施例中,计算引擎可以使用Spark计算引擎。Spark平台使用了弹性分布数据集(Resilient Distributed Dataset,RDD),为基于内存计算和DAG(DirectedAcyclic Graph,有向无环图)的优化,在Spark平台上可以实施大规模实时并行的电气计算。
融合集成HDFS、Matlab Runtime和Spark,构建数据并行计算平台。HDFS存储负荷削减并行计算数据的输入以及输出。Matlab Runtime提供Matlab计算环境,Spark提供分布式并行计算环境。其中,Matlab Runtime和Spark的整合需要通过管理界面的配置文件在yarn-site.xml的NodeManager高级配置代码段(安全阀)配置Matlab的读写目录。
具体的,从HDFS或本地读取支路节点开断数据后,在Spark上继承org.apache.spark.Partitioner这个类来实现自定义分区功能,将读取到的数据均分到每个spark中的worker上,确保每个worker的计算能力相同,完成负荷削减并行计算。
在本实施例中,采用一定的运算机制把计算任务分担到多台机器上,让每台机器都承担一部分的计算和数据存储在内存中的,实现内存分布式计算框架。使用内存来计算,使用弹性分布数据集存储数据,减少了磁盘I/O的消耗,实现轻量级快速处理,而且适用于多次迭代的计算模型,能够高效的完成电网运行风险评估及其辅助决策系统中的负荷削减计算任务,而且不必对分布式计算过程中各种问题和计算异常进行控制。
在其中一个实施例中,获取Matlab与Java混合编程的负荷削减算法包,可以包括以下步骤:
将Matlab负荷削减串行算法封装为Java类,发布为jar包;
对jar包进行测试,若测试成功,将jar包作为负荷削减算法包;若测试失败,则转至将Matlab负荷削减串行算法封装为Java类,发布为jar包的步骤。
具体的,负荷削减的计算程序通常是由Matlab程序编写的,利用Matlab软件将Matlab负荷削减串行算法封装为Java类,发布为一个完整的jar包,对这个jar包进行本地测试,如果测试成功,该jar包可以作为负荷削减算法包,如果测试失败,则对Matlab负荷削减串行算法重新封装、发布jar包以及测试。
在本实施例中,通过对Matlab负荷削减串行算法进行Matlab与Java混合编程,把不同阶段的算法和数据处理交给具有优势的编程语言,大大降低了负荷削减算法并行化开发的难度以及复杂度。在后续使用过程中,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。
在其中一个实施例中,对jar包进行测试的步骤可以包括以下步骤:
记录Matlab负荷削减串行算法的输入数据的值和类以及输出数据的值和类型;
根据输入数据的值和类在Java中构建与Matlab相对应的数据结构;
导入jar包,根据jar包获取Java程序;
将数据结构传入Java程序,获取数据结构的执行结果,对比数据结构的执行结果与Matlab负荷削减串行算法的输出数据,若执行结果的值和类型与输出数据的值和类型相同,测试成功。
在本实施例中,通过对jar包进行本地测试的方法,确保分区调用的负荷削减算法包能够正确使用。减少错误出现概率,提高负荷削减并行计算的效率。
具体的,记录Matlab负荷削减串行算法的输入数据的值和类以及输出数据的值和类型,导入Matlab软件提供的“javabuilder.jar”文件,针对Matlab负荷削减串行算法的输入数据类型,在Java中编写和Matlab相对应的数据结构。编写Java程序,对jar包中的Matlab负荷削减串行算法的Java类创建一个对象,传入编写的数据结构,运行Java程序,得到执行结果。将执行结果与Matlab负荷削减串行算法的输出数据进行对比,如果执行结果的值和类型和输出数据的值和类型一样,则本地测试成功,如果执行结果的值和类型和输出数据的值和类型不一样,则本地测试失败。
在其中一个实施例中,在各分区内分别调用负荷削减算法包计算当前分区内的支路节点开断数据,获取支路节点负荷削减量,可以包括以下步骤:
导入负荷削减算法包至计算引擎;
在计算引擎中根据负荷削减算法包获取目标算子;
通过目标算子对支路节点开断数据进行并行计算。
在本实施例中,可以将负荷削减算法包导入至计算引擎,进而生成目标算子,目标算子可以对支路节点开断数据直接进行计算,实现负荷削减算法的应用,达到并行计算的目的。
具体的,将读取到数据均分到各个分区内以后,每个分区的计算引擎导入负荷削减算法包,编写程序获取目标算子,对均分到该分区上的支路节点开断数据进行计算,所获得的计算结果为支路节点负荷削减量。
以计算引擎为Spark为例进行说明,将读取到的数据均分到每个spark中的worker上以后,启动worker的每一个分区上mapPartitions算子,通过Java代码或者Scala代码导入负荷削减算法包,使用Scala语言编写程序获得目标算子,对均分到该分区上的支路节点开断数据进行计算。其中Scala开发代码精简、执行效率高,同时Scala语言是无缝衔接Java的。
在其中一个实施例中,通过目标算子对支路节点开断数据进行并行计算步骤之后,还包括以下步骤:
若分区内的并行计算结果是下一阶段计算的参数,则缓存本阶段并行计算结果,转至导入负荷削减算法包至计算引擎的步骤,进行下一阶段计算。
在本实施例中,对于一个大型的电力辅助系统的负荷削减计算常常具有几十万个任务、每个任务有几十次迭代,这几十万个任务频繁的消耗I/O,可以将计算过程分为多个阶段的,在每一阶段分区计算完成后,将该阶段的计算结果进行缓存,并且对该计算结果进行下一阶段的计算。
以计算引擎为Spark为例进行说明,在每一阶段worker上的分区计算完成后,将该阶段计算结果缓存为RDD,在内存中存储数据,需要持久化时才到磁盘,减少了磁盘I/O的消耗,实现轻量级快速处理,提高了负荷削减计算的速度。
在其中一个实施例中,通过目标算子对支路节点开断数据进行并行计算之后,还包括以下步骤:
自定义序列化目标算子,压缩各分区内的支路节点负荷削减量;收集各分区内的支路节点负荷削减量的压缩数据。
Matlab给Java提供的类型本身是不支持序列化的,所以需要自定义序列化,具体的,可以使用Kyro算法,Kryo是一个快速高效的Java序列化框架,可以快速序列化以及反序列化。对jar包创建的目标算子自定义序列化,在需要再次使用同样的目标算子时,可以反自定义序列化得到目标算子,无需再次调用负荷削减算法包,加快负荷削减并行计算的速度,提高负荷削减并行计算效率。各分区内的通过并行计算得到的支路节点负荷削减量中有大量的矩阵,通过压缩可以节省空间和增加汇聚结果的效率,其中,压缩算法可以采用Snappy压缩算法,Snappy压缩算法提供高速压缩速度和合理的压缩率。
根据上述负荷削减并行计算方法,本发明还提供一种负荷削减并行计算装置,以下就本发明的负荷削减并行计算装置的实施例进行详细说明。
参见图2所示,为本发明一个实施例的负荷削减并行计算装置的结构示意图。该实施例中的负荷削减并行计算装置包括:
数据读取模块201,用于读取支路节点开断数据,将支路节点开断数据均分到数据并行计算平台的多个分区中,其中,数据并行计算平台包括分布式文件系统、MatlabRuntime以及计算引擎。
算法包获取模块202,用于获取Matlab与Java混合编程的负荷削减算法包。
负荷削减量计算模块203,用于在各分区内分别调用负荷削减算法包计算当前分区内的支路节点开断数据,获取支路节点负荷削减量。
可选的,读取支路节点开断数据的步骤可以是从分布式文件系统读取支路节点开断数据,或着是从本地读取支路节点开断情况。
在一个优选实施例中,计算引擎可以使用Spark计算引擎。Spark平台使用了弹性分布数据集(Resilient Distributed Dataset,RDD),为基于内存计算和DAG(DirectedAcyclic Graph,有向无环图)的优化,在Spark平台上可以实施大规模实时并行的电气计算。
融合集成HDFS、Matlab Runtime和Spark,构建数据并行计算平台。HDFS存储负荷削减并行计算数据的输入以及输出。Matlab Runtime提供Matlab计算环境,Spark提供分布式并行计算环境。其中,Matlab Runtime和Spark的整合需要通过管理界面的配置文件在yarn-site.xml的NodeManager高级配置代码段(安全阀)配置Matlab的读写目录。
具体的,从HDFS或本地读取支路节点开断数据后,在Spark上继承org.apache.spark.Partitioner这个类来实现自定义分区功能,将读取到的数据均分到每个spark中的worker上,确保每个worker的计算能力相同,完成负荷削减并行计算。
在其中一个实施例中,算法包获取模块202将Matlab负荷削减串行算法封装为Java类,发布为jar包;对jar包进行测试,若测试成功,将jar包作为负荷削减算法包;若测试失败,重新将Matlab负荷削减串行算法封装为Java类,发布为jar包。
具体的,负荷削减的计算程序通常是由Matlab程序编写的,利用Matlab软件将Matlab负荷削减串行算法封装为Java类,发布为一个完整的jar包,对这个jar包进行本地测试,如果测试成功,该jar包可以作为负荷削减算法包,如果测试失败,则对Matlab负荷削减串行算法重新封装、发布jar包以及测试。
在本实施例中,算法包获取模块202通过对Matlab负荷削减串行算法进行Matlab与Java混合编程,把不同阶段的算法和数据处理交给具有优势的编程语言,大大降低了负荷削减算法并行化开发的难度以及复杂度。在后续使用过程中,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。
在其中一个实施例中,算法包获取模块202记录Matlab负荷削减串行算法的输入数据的值和类以及输出数据的值和类型;根据输入数据的值和类在Java中构建与Matlab相对应的数据结构;导入jar包,根据jar包获取Java程序;将数据结构传入Java程序,获取数据结构的执行结果,对比数据结构的执行结果与Matlab负荷削减串行算法的输出数据,若执行结果的值和类型与输出数据的值和类型相同,测试成功。
具体的,算法包获取模块202记录Matlab负荷削减串行算法的输入数据的值和类以及输出数据的值和类型,导入Matlab软件提供的“javabuilder.jar”文件,针对Matlab负荷削减串行算法的输入数据类型,在Java中编写和Matlab相对应的数据结构。编写Java程序,对jar包中的Matlab负荷削减串行算法的Java类创建一个对象,传入编写的数据结构,运行Java程序,得到执行结果。将执行结果与Matlab负荷削减串行算法的输出数据进行对比,如果执行结果的值和类型和输出数据的值和类型一样,则本地测试成功,如果执行结果的值和类型和输出数据的值和类型不一样,则本地测试失败。
在本实施例中,算法包获取模块202通过对jar包进行本地测试的方法,确保分区调用的负荷削减算法包能够正确使用。减少错误出现概率,提高负荷削减并行计算的效率。
在其中一个实施例中,负荷削减量计算模块203导入负荷削减算法包至计算引擎;在计算引擎中根据负荷削减算法包获取目标算子;通过目标算子对支路节点开断数据进行并行计算。
在本实施例中,负荷削减量计算模块203可以将负荷削减算法包导入至计算引擎,进而生成目标算子,目标算子可以对支路节点开断数据直接进行计算,实现负荷削减算法的应用,达到并行计算的目的。
具体的,负荷削减量计算模块203将数据读取模块201读取到数据均分到各个分区内以后,每个分区的计算引擎导入负荷削减算法包,编写程序获取目标算子,对均分到该分区上的支路节点开断数据进行计算,所获得的计算结果为支路节点负荷削减量。
以计算引擎为Spark为例进行说明,负荷削减量计算模块203将数据读取模块201读取到的数据均分到每个spark中的worker上以后,启动worker的每一个分区上mapPartitions算子,通过Java代码或者Scala代码导入负荷削减算法包,使用Scala语言编写程序获得目标算子,对均分到该分区上的支路节点开断数据进行计算。其中Scala开发代码精简、执行效率高,同时Scala语言是无缝衔接Java的。
在其中一个实施例中,负荷削减量计算模块203在分区内的并行计算结果是下一阶段计算的参数时,缓存本阶段并行计算结果,导入负荷削减算法包至计算引擎进行下一阶段计算。
对于一个大型的电力辅助系统的负荷削减计算常常具有几十万个任务、每个任务有几十次迭代,这几十万个任务频繁的消耗I/O。在本实施例中,负荷削减量计算模块203可以将计算过程分为多个阶段的,在每一阶段分区计算完成后,将该阶段的计算结果进行缓存,并且对该计算结果进行下一阶段的计算。
以计算引擎为Spark为例进行说明,在每一阶段worker上的分区计算完成后,将该阶段计算结果缓存为RDD,在内存中存储数据,需要持久化时才到磁盘,减少了磁盘I/O的消耗,实现轻量级快速处理,提高了负荷削减计算的速度。
在其中一个实施例中,负荷削减量计算模块203自定义序列化目标算子,压缩各分区内的支路节点负荷削减量;收集各分区内的支路节点负荷削减量的压缩数据。
Matlab给Java提供的类型本身是不支持序列化的,所以需要自定义序列化,具体的,负荷削减量计算模块203可以使用Kyro算法,Kryo是一个快速高效的Java序列化框架,可以快速序列化以及反序列化。对jar包创建的目标算子自定义序列化,在需要再次使用同样的目标算子时,可以反自定义序列化得到目标算子,无需再次调用负荷削减算法包,加快负荷削减并行计算的速度,提高负荷削减并行计算效率。各分区内的通过并行计算得到的支路节点负荷削减量中有大量的矩阵,通过压缩可以节省空间和增加汇聚结果的效率,其中,压缩算法可以采用Snappy压缩算法,Snappy压缩算法提供高速压缩速度和合理的压缩率。
上述负荷削减并行计算装置,数据读取模块读取的支路节点开关数据均分到数据并行平台的多个分区中,负荷削减量计算模块在各分区内调用通过算法包获取模块获取的Matlab与Java混合编程的负荷削减算法包,并行计算当前分区内的支路节点开断数据,获取支路节点负荷削减量,大大降低了负荷削减算法并行化开发的难度以及复杂度,当新加入一个负荷削减的算法,只需要对新算法进行Matlab与Java混合编程得到负荷削减算法包,就可以对该算法并行化,具有较好的普适性。
本发明的负荷削减并行计算装置与本发明的负荷削减并行计算方法一一对应,在上述负荷削减并行计算方法的实施例阐述的技术特征及其有益效果均适用于负荷削减并行计算装置的实施例中。
本发明还提供一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述任一实施例的负荷削减并行计算方法的步骤。
该计算机设备中的处理器所执行的方法与上述实施例中负荷削减并行计算方法相同,此处不再赘述。
本发明一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例的负荷削减并行计算方法的步骤。
该计算机可读存储介质所执行的方法与上述实施例中的负荷削减并行计算方法相同,此处不再赘述。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (4)

1.一种负荷削减并行计算方法,其特征在于,包括步骤:
读取支路节点开断数据,将所述支路节点开断数据均分到数据并行计算平台的多个分区中,其中,所述数据并行计算平台包括分布式文件系统、Matlab Runtime以及计算引擎;
获取Matlab与Java混合编程的负荷削减算法包;
在各所述分区内分别调用所述负荷削减算法包,计算当前分区内的支路节点开断数据,获取支路节点负荷削减量;
所述读取支路节点开断数据的步骤包括以下步骤:
从所述分布式文件系统或本地读取支路节点开断数据;
所述获取Matlab与Java混合编程的负荷削减算法包的步骤包括以下步骤:
将Matlab负荷削减串行算法封装为Java类,发布为jar包;
对所述jar包进行测试,若测试成功,将所述jar包作为负荷削减算法包;
若测试失败,则转至将Matlab负荷削减串行算法封装为Java类,发布为jar包的步骤;
所述对jar包进行测试的步骤包括以下步骤:
记录Matlab负荷削减串行算法的输入数据的值和类以及输出数据的值和类型;
根据所述输入数据的值和类,在Java中构建与Matlab相对应的数据结构;
导入所述jar包,根据所述jar包获取Java程序;
将所述数据结构传入所述Java程序,获取所述数据结构的执行结果,对比所述数据结构的执行结果与Matlab负荷削减串行算法的输出数据,若所述执行结果的值和类型与所述输出数据的值和类型相同,测试成功;
所述在各所述分区内分别调用所述负荷削减算法包,计算当前分区内的支路节点开断数据的步骤包括以下步骤:
导入负荷削减算法包至所述计算引擎;
在所述计算引擎中根据所述负荷削减算法包获取目标算子;
通过所述目标算子对所述支路节点开断数据进行并行计算;
所述通过所述目标算子对所述支路节点开断数据进行并行计算之后,还包括以下步骤:
自定义序列化所述目标算子,压缩各所述分区内的支路节点负荷削减量;
收集各所述分区内的支路节点负荷削减量的压缩数据;
所述通过目标算子对所述支路节点开断数据进行并行计算步骤之后,还包括:
若所述分区内的并行计算结果是下一阶段计算的参数,则缓存本阶段并行计算结果,转至导入负荷削减算法包至所述计算引擎的步骤,进行下一阶段计算。
2.一种负荷削减并行计算装置,其特征在于,包括:
数据读取模块,用于读取支路节点开断数据,将所述支路节点开断数据均分到数据并行计算平台的多个分区中,其中,所述数据并行计算平台包括分布式文件系统、MatlabRuntime以及计算引擎;
算法包获取模块,用于获取Matlab与Java混合编程的负荷削减算法包;
负荷削减量计算模块,用于在各所述分区内分别调用所述负荷削减算法包计算当前分区内的支路节点开断数据,获取支路节点负荷削减量;
所述数据读取模块还用于从所述分布式文件系统或本地读取支路节点开断数据;
所述算法包获取模块还用于将Matlab负荷削减串行算法封装为Java类,发布为jar包;对所述jar包进行测试,若测试成功,将所述jar包作为负荷削减算法包;若测试失败,重新将所述Matlab负荷削减串行算法封装为Java类,发布为jar包,重新测试;
所述负荷削减量计算模块还用于导入所述负荷削减算法包至所述计算引擎;在所述计算引擎中根据所述负荷削减算法包获取目标算子;通过所述目标算子对所述支路节点开断数据进行并行计算;
所述算法包获取模块还用于记录Matlab负荷削减串行算法的输入数据的值和类以及输出数据的值和类型;根据输入数据的值和类在Java中构建与Matlab相对应的数据结构;导入所述jar包,根据所述jar包获取Java程序;将所述数据结构传入所述Java程序,获取所述数据结构的执行结果,对比所述数据结构的执行结果与Matlab负荷削减串行算法的输出数据,若所述执行结果的值和类型与所述输出数据的值和类型相同,测试成功;
所述负荷削减量计算模块还用于自定义序列化目标算子,压缩各分区内的支路节点负荷削减量;收集各分区内的支路节点负荷削减量的压缩数据;
所述负荷削减量计算模块还用于在所述分区内的并行计算结果是下一阶段计算的参数时,缓存本阶段并行计算结果,导入负荷削减算法包至所述计算引擎进行下一阶段计算。
3.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1所述负荷削减并行计算方法的步骤。
4.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1所述负荷削减并行计算方法的步骤。
CN201710806361.9A 2017-09-08 2017-09-08 负荷削减并行计算方法及装置 Active CN107679701B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710806361.9A CN107679701B (zh) 2017-09-08 2017-09-08 负荷削减并行计算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710806361.9A CN107679701B (zh) 2017-09-08 2017-09-08 负荷削减并行计算方法及装置

Publications (2)

Publication Number Publication Date
CN107679701A CN107679701A (zh) 2018-02-09
CN107679701B true CN107679701B (zh) 2021-02-05

Family

ID=61134757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710806361.9A Active CN107679701B (zh) 2017-09-08 2017-09-08 负荷削减并行计算方法及装置

Country Status (1)

Country Link
CN (1) CN107679701B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536645B (zh) * 2018-04-04 2021-10-01 北京科东电力控制系统有限责任公司 用于电力市场交易业务的内核并行计算方法及装置
CN111861860B (zh) * 2020-07-23 2023-04-21 哈尔滨工业大学(威海) 一种面向ai智能soc芯片的图像加速处理系统
CN114924772B (zh) * 2022-07-15 2022-10-25 浙江大华技术股份有限公司 一种算法包的更新方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102436534A (zh) * 2012-01-13 2012-05-02 浙江省电力试验研究院 一种电力系统仿真方法
CN106445676A (zh) * 2015-08-05 2017-02-22 杭州海康威视系统技术有限公司 一种分布式数据计算的任务分配方法和任务分配装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130066924A1 (en) * 2008-12-23 2013-03-14 Honeywell International Inc. Method and apparatus for utilizing matlab functionality in java-enabled environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102436534A (zh) * 2012-01-13 2012-05-02 浙江省电力试验研究院 一种电力系统仿真方法
CN106445676A (zh) * 2015-08-05 2017-02-22 杭州海康威视系统技术有限公司 一种分布式数据计算的任务分配方法和任务分配装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
hadoop调用matlab程序;gnpowel;《百度文档》;20150409;正文第1-4页 *
分布式电力大数据计算分析平台设计与实现;陈云;《中国优秀硕士学位论文全文数据库》;20170215(第2期);正文第13-28页 *

Also Published As

Publication number Publication date
CN107679701A (zh) 2018-02-09

Similar Documents

Publication Publication Date Title
US20210182106A1 (en) Resource configuration prediction method and device
CN107679701B (zh) 负荷削减并行计算方法及装置
CN107644063B (zh) 基于数据并行的时间序列分析方法与系统
CN112527404B (zh) 芯片化继电保护通用系统配置方法、装置、设备和介质
Jin et al. Fast: Fpga-based subgraph matching on massive graphs
CN110233802B (zh) 一种构建一主链多侧链的区块链架构的方法
US11789733B2 (en) Instruction processing apparatus, acceleration unit, and server
US20200117433A1 (en) Code optimization conversations for connected managed runtime environments
CN107301243A (zh) 基于大数据平台的开关设备故障特征提取方法
CN114510339A (zh) 一种计算任务调度方法、装置、电子设备及可读存储介质
CN114327399A (zh) 分布式训练方法、装置、计算机设备、存储介质和产品
US9720792B2 (en) Information theoretic caching for dynamic problem generation in constraint solving
CN111367786B (zh) 一种符号执行方法、电子设备以及存储介质
CN114327479A (zh) 用于大数据的数据处理方法和数据处理装置
CN117034821B (zh) 用于芯片设计前端仿真验证的回归验证方法及介质
US20220172044A1 (en) Method, electronic device, and computer program product for deploying machine learning model
CN113923129A (zh) 基于数据驱动的vnf需求预测方法及系统
CN117291260A (zh) 深度学习框架适配方法、装置、设备、存储介质和产品
US20230409302A1 (en) Computer-readable recording medium storing conversion program and conversion processing method
CN109213105B (zh) 一种可重构装置、实现可重构的方法及分布式控制系统
Vidal et al. Dynamic applications on reconfigurable systems: from UML model design to FPGAs implementation
CN113704046A (zh) 一种故障告警处理方法及装置、设备、存储介质
CN107967170B (zh) 迁移计算方法、装置、设备及存储介质
Paler et al. Clifford gate optimisation and T gate scheduling: Using queueing models for topological assemblies
CN113296907B (zh) 一种基于集群的任务调度处理方法、系统和计算机设备

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231027

Address after: 510620, No. two, No. 2, Tianhe South Road, Guangzhou, Guangdong, Tianhe District

Patentee after: Guangzhou Power Supply Bureau of Guangdong Power Grid Co.,Ltd.

Patentee after: SHENZHEN INSTITUTES OF ADVANCED TECHNOLOGY CHINESE ACADEMY OF SCIENCES

Address before: 510620, No. two, No. 2, Tianhe South Road, Guangzhou, Guangdong, Tianhe District

Patentee before: GUANGZHOU POWER SUPPLY Co.,Ltd.

Patentee before: SHENZHEN INSTITUTES OF ADVANCED TECHNOLOGY CHINESE ACADEMY OF SCIENCES