CN114691231A - 一种数据流水编排方法、装置、可读存储介质及终端设备 - Google Patents

一种数据流水编排方法、装置、可读存储介质及终端设备 Download PDF

Info

Publication number
CN114691231A
CN114691231A CN202011613077.8A CN202011613077A CN114691231A CN 114691231 A CN114691231 A CN 114691231A CN 202011613077 A CN202011613077 A CN 202011613077A CN 114691231 A CN114691231 A CN 114691231A
Authority
CN
China
Prior art keywords
thread
data processing
data
task
output
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.)
Pending
Application number
CN202011613077.8A
Other languages
English (en)
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.)
Jiangsu Yuntian Lifei Technology Co ltd
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Jiangsu Yuntian Lifei Technology Co ltd
Shenzhen Intellifusion Technologies 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 Jiangsu Yuntian Lifei Technology Co ltd, Shenzhen Intellifusion Technologies Co Ltd filed Critical Jiangsu Yuntian Lifei Technology Co ltd
Priority to CN202011613077.8A priority Critical patent/CN114691231A/zh
Priority to PCT/CN2021/133115 priority patent/WO2022142902A1/zh
Publication of CN114691231A publication Critical patent/CN114691231A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请属于芯片技术领域,尤其涉及一种数据流水编排方法、装置、计算机可读存储介质及终端设备。所述方法包括:读取预设的数据流水编排配置文件;创建用于数据流水编排的容器对象;根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象;根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接;根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,以完成数据流水编排。通过本申请,可以按照预设的配置文件来进行数据流水编排。对于各种不同的应用场景,仅需对配置文件进行对应的调整即可,能够进行便捷灵活的数据流水编排,可扩展性更强。

Description

一种数据流水编排方法、装置、可读存储介质及终端设备
技术领域
本申请属于芯片技术领域,尤其涉及一种数据流水编排方法、装置、计算机可读存储介质及终端设备。
背景技术
随着各种人工智能(Artificial Intelligence,AI)芯片的普及,传统的数据流同步堵塞调度设计难以充分利用芯片上的硬件计算资源,因此普遍采取多线程无堵塞异步数据流调度设计。但是现有技术中的大部分解决方案均是基于某一具体的实际应用场景来进行定制化的数据流水编排,无法进行灵活的数据流水编排,可扩展性较差。
发明内容
有鉴于此,本申请实施例提供了一种数据流水编排方法、装置、计算机可读存储介质及终端设备,以解决现有的数据流水编排方法可扩展性较差的问题。
本申请实施例的第一方面提供了一种数据流水编排方法,可以包括:
读取预设的数据流水编排配置文件;
创建用于数据流水编排的容器对象;
根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象;
根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接;
根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,以完成数据流水编排。
进一步地,所述根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象,包括:
根据所述线程配置信息,调用预设的线程管理模块在所述容器对象内创建数据处理线程对象。
进一步地,所述线程配置信息包括数据处理线程类的字符串名称和数据处理线程对象的字符串名称;
所述调用预设的线程管理模块在所述容器对象内创建数据处理线程对象,包括:
调用所述线程管理模块在所述容器对象内创建与所述线程配置信息中的数据处理线程类的字符串名称和数据处理线程对象的字符串名称对应的数据处理线程对象。
进一步地,在根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象之后,还包括:
根据所述配置文件中的线程属性配置信息,调用预设的线程基类中的属性设置函数分别设置各个数据处理线程对象的属性。
进一步地,所述线程属性配置信息包括数据处理线程对象的字符串名称、数据处理线程对象的配置属性中的键的字符串名称以及与该键对应的目标值;
所述调用预设的线程基类中的属性设置函数分别设置各个数据处理线程对象的属性,包括:
调用所述属性设置函数,将与所述数据处理线程对象的字符串名称和所述键的字符串名称对应的键的值设置为所述目标值。
进一步地,所述根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接,包括:
根据所述连接配置信息,调用预设的线程基类中的输入输出端口建立各个数据处理线程对象之间的数据流连接。
进一步地,所述调用所述线程基类中的输入输出端口建立各个数据处理线程对象之间的数据流连接,包括:
建立源线程对象与目的线程对象之间的任务队列连接关系,将所述源线程对象的输出端口的任务队列指针指向所述目的线程对象的输入端口的任务队列对象;所述源线程对象为数据流输出方,所述目的线程对象为数据流输入方;
对所述源线程对象的输出端口的任务类型与所述目的线程对象的输入端口的任务类型进行匹配;
若匹配成功,则确定所述源线程对象的输出端口与所述目的线程对象的输入端口之间的连接有效。
进一步地,所述输入输出配置信息包括所述容器对象的输入索引号、输入数据处理线程对象的字符串名称、所述容器对象的输出索引号、输出数据处理线程对象的字符串名称和输出索引号;
所述根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,包括:
根据所述容器对象的输入索引号和所述输入数据处理线程对象的字符串名称设置所述容器对象的输入端口;
根据所述容器对象的输出索引号、所述输出数据处理线程对象的字符串名称和输出索引号设置所述容器对象的输出端口。
进一步地,在完成数据流水编排之后,还包括:
通过所述容器对象的输入端口向所述容器对象输入数据处理任务;
驱动所述容器对象对所述数据处理任务进行处理,得到与所述数据处理任务对应的任务处理结果;
通过所述容器对象的输出端口输出所述任务处理结果。
进一步地,所述驱动所述容器对象对所述数据处理任务进行处理,包括:
通过源线程对象的输出端口将数据处理任务发送至目的线程对象的输入端口的任务队列;所述源线程对象为数据流输出方,所述目的线程对象为数据流输入方;
通过所述目的线程对象的输入端口将所述数据处理任务发送至所述目的线程对象的数据处理函数进行处理。
本申请实施例的第二方面提供了一种数据流水编排装置,可以包括实现上述任一种数据流水编排方法的各个功能模块。
本申请实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种数据流水编排方法的步骤。
本申请实施例的第四方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种数据流水编排方法的步骤。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述任一种数据流水编排方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例读取预设的数据流水编排配置文件;创建用于数据流水编排的容器对象;根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象;根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接;根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,以完成数据流水编排。通过本申请实施例,可以按照预设的配置文件来进行数据流水编排。对于各种不同的应用场景,仅需对配置文件进行对应的调整即可,能够进行便捷灵活的数据流水编排,可扩展性更强。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例中一种数据流水编排容器的示意图;
图2为进行线程间任务通信的任务队列的示意图;
图3为线程基类的示意图;
图4为线程注册登记的示意图;
图5为本申请实施例中一种数据流水编排方法的一个实施例流程图;
图6为数据处理线程对象之间的数据流连接示意图;
图7为数据流水编排的一个具体实例的示意图;
图8为本申请实施例中一种数据流水编排装置的一个实施例结构图;
图9为本申请实施例中一种终端设备的示意框图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,在本申请实施例中,可以通过预设的容器(Container)来进行数据流水编排,此处将进行数据流水编排的容器记为De::Graph。在现有的计算机技术中,一般将容器作为一种特殊的类(Class),即对各种具体的对象(Object)的抽象化模板。在具体应用中,可以根据实际场景对类进行实例化,生成类的对象,此处将De::Graph实例化生成的容器对象记为Graph。De::Graph可以利用线程管理模块(记为NodeWrapper)这一外部模块来进行数据处理线程(记为Node)的管理。线程管理模块负责管理注册的Node类型,并负责Node对象的动态创建和删除。
在本申请实施例中,可以使用如图2所示的任务队列(记为TaskQueue)来进行线程间任务(记为Task)的通信。任务队列内部使用固定大小的先进先出(First Input FirstOutput,FIFO)队列保存线程间的Task信息,Task信息包括Task类型信息以及Task的指针信息。如图2所示的例子,发送线程A和B在堆空间上动态申请Task对象,通过任务队列对象发送任务Task X和Y,接收线程C依次从任务队列对象中读取Task并处理,Task类型采用数值表示,约定Task指针的类型信息,处理完毕后在堆空间上释放Task对象。如果发送线程发送任务时任务队列的FIFO队列满,那么发送线程会堵塞直到接收线程从FIFO队列中取出Task;如果接收线程接收任务时任务队列的FIFO队列为空,那么接收线程会堵塞等待发送线程发送Task。
在本申请实施例中,可以使用线程输入类(记为PIN)来辅助线程读取任务队列中的输入任务(记为input task),PIN对象中可以包括如下信息:
(1)任务队列对象,用于线程间Task通信。
(2)线程支持的input task类型信息,该类型信息以类型名称的字符串(保证字符串全局唯一)为标记,例如,若PIN支持namespace X的struct A和namespace Y的struct B这两种任务类型(记为task type),那么PIN通过函数SetTypeInfo(0,“X::A”)和SetTypeInfo(1,“Y::B”)设置类型信息,表示该线程支持任务队列的X::A和Y::B的Task对象指针信息,如果task type为0,那么表示X::A类型的对象指针,如果task type为1,则表示Y::B类型的对象指针。
(3)任务队列中的Task删除函数信息,用于PIN对象析构时,释放任务队列对象的Task指针对象。
在本申请实施例中,可以使用线程输出类(记为POUT)来辅助线程发送输出任务(记为output task),每个POUT对象只允许一种任务类型输出,POUT对象中可以包括如下信息:
(1)任务队列指针信息,如果为空,表示该POUT悬空,不允许task输出。
(2)线程支持的output task类型信息,该类型信息以全局类型字符串为唯一标记,例如,若POUT支持namespace X的struct A任务类型,那么POUT通过函数SetTypeInfo(“X::A”)设置类型信息。
在本申请实施例中,可以使用如图3所示的线程基类(记为NodeBase)来抽象线程的公共行为和属性,线程基类中可以包括:
(1)1个PIN对象,用于线程的接收消息读取,线程从PIN中读取input task,并根据类型标识(记为type id)来解析Task指针信息,并调用任务处理函数(记为Proc)进行任务处理。
(2)16个POUT对象,用于线程的输出消息发送,每个POUT仅支持一种类型输出,以供任务处理函数输出output task。
(3)通用的属性配置参数以及设置函数(记为Set)和获取函数的接口(记为Get),属性采用键值(key-value)设置,其中,键(key)为string类型,值(value)支持int,float,string类型,属性用于控制线程的任务处理函数内部处理控制,比如可以调用基类Set(“min.face.pixel”,48)函数设置最小人脸参数,可以通过int min_face=Get(“min.face.pixel”)获取到用户设置的最小人脸参数。
(4)线程的任务处理函数,利用PIN读取input task并处理,处理完毕可以通过POUT发送output task。
(5)线程的启动函数(记为start)和停止函数(记为stop),用于控制线程启动和停止。
Node之间通过任务队列通信,而任务队列中存放的是通用的void*指针,依赖任务队列中的task type指示如何解析void*指针任务。在本申请实施例中,Node的任务处理函数定义task type类型值含义,Node的PIN对象存储task type类型关系。例如,在设计阶段可以定义Node能处理的类型“X::A”且其task type为0,还可以定义Node能处理的类型“Y::B”且其task type为1。
图4所示为Node注册登记的示意图,首先,可以基于线程基类扩展出所需的Node类(记为NodeClass),在线程基类的构造函数中注入PIN/POUT的task类型信息,从而实现用户自己的input tasks的任务处理函数;然后,可以通过注册中心(记为NodeRegister)注册NodeClass的类型信息,注册信息记录NodeClass的字符串名称,NodeClass的创建函数(记为new)和删除函数(记为delete);最后,线程管理模块提供统一的Node对象创建和删除功能,根据NodeClass的注册字符串名称,动态创建/释放NodeClass对象。
请再次参阅图1,在本申请实施例中,De::Graph包括如下模块:
(1)线程创建/销毁模块(记为Node Create/Destroy):该模块通过调用线程管理模块创建或者销毁Node对象。
(2)线程属性设置模块(记为NodeAttrs):Node基类为其派生出的线程提供通用的键值配置,用于指明线程的处理过程中所使用到的各种属性,对于其中的任意一个属性,均有与该属性对应的键值,该模块通过调用Node基类的Set/Get函数接口来进行线程的属性设置。
(3)线程连接模块(记为NodesLink):该模块负责连接任意线程之间的PIN和POUT。
请参阅图5,本申请实施例中一种数据流水编排方法的一个实施例可以包括:
步骤S501、读取预设的数据流水编排配置文件。
所述配置文件可以由用户在文件创建模块中预先进行设置,所述配置文件可以包括如下信息:
(1)线程配置信息,其中包括NodeClass的字符串名称,Node对象的字符串名称。
(2)线程属性配置信息,其中包括Node对象的字符串名称,Node对象的配置属性中的键的字符串名称以及与该键对应的目标值(可以为整形/浮点/字符串常量)。
(3)线程之间的连接配置信息,其中包括连接的源Node对象的字符串名称,源Node对象的POUT索引号,目的Node对象的字符串名称。其中,源Node对象为数据流输出方,目的Node对象为数据流输入方。由于同一Node对象中可能存在多个POUT,为了便于对其进行区分,对于同一Node对象中的任意一个POUT,均可为其设置唯一的标识,即POUT索引号。
(4)容器对象的输入输出配置信息,其中包括Graph的输入索引号以及输入Node对象的字符串名称,Graph的输出索引号以及输出Node对象的字符串名称,输出Node对象的POUT索引号。由于Graph中可能存在多个输入,为了便于对其进行区分,对于Graph中的任意一个输入,均可为其设置唯一的标识,即Graph的输入索引号;类似地,由于Graph中可能存在多个输出,为了便于对其进行区分,对于Graph中的任意一个输出,均可为其设置唯一的标识,即Graph的输出索引号。
上述信息全部为常量类型,将其数据结构设计为json格式(支持标准json序列化/反序列化),这样就可以通过离线json文件读取数据流水编排的配置方式,重构整个数据流水编排流程。用户还可以根据实际情况对所述配置文件进行修改,而不需要重新编译一个新的数据流水编排就能得到所需的数据流水编排。
步骤S502、创建用于数据流水编排的容器对象。
步骤S503、根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象。
具体地,可以调用线程管理模块根据NodeClass的字符串名称和Node对象的字符串名称,动态创建Node对象。在本申请实施例中,假设在所述线程配置信息中,NodeClass的字符串名称为NodeA,Node对象的字符串名称为node-a,则可以调用如下接口创建Node对象:
graph->CreateHostNode(“NodeA”,“node-a”),即调用线程管理模块创建NodeA类的对象node-a。
通过上述过程,可以按照预设的配置文件来创建数据处理线程对象,对于各种不同的应用场景,仅需对配置文件进行对应的调整即可,能够进行便捷灵活的数据处理线程对象创建,可扩展性更强。
进一步地,还可以设置Node对象的属性,即根据所述配置文件中的线程属性配置信息,调用线程基类中的设置函数设置Node对象的属性。在本申请实施例中,假设在所述线程配置信息中,Node对象的字符串名称为node-a,Node对象的配置属性中的键的字符串名称为resize_ratio,与该键对应的目标值为0.5,则可以调用如下接口设置Node对象的属性:
graph->SetNodeAttr(“node-a”,“resize_ratio”,0.5),即设置node-a对象的属性“resize_ratio”值为0.5。
通过上述过程,可以按照预设的配置文件来进行线程属性配置,对于各种不同的应用场景,仅需对配置文件进行对应的调整即可,能够进行便捷灵活的数据处理线程对象属性设置,可扩展性更强。
步骤S504、根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接。
具体地,可以根据所述连接配置信息,调用线程基类中的PIN和POUT建立各个Node对象之间的数据流连接。
首先,建立源Node对象与目的Node对象之间的任务队列连接关系。根据所述连接配置信息中的源Node对象的字符串名称以及源Node对象的POUT索引号可以确定唯一的源Node对象的POUT,根据所述连接配置信息中的目的Node对象的字符串名称可以确定唯一的目的Node对象的PIN。在确定两者之后,可以将源Node对象的POUT的任务队列对象指针指向所述目的Node对象的PIN的任务队列对象。
然后,对所述源Node对象的POUT的任务类型与所述目的Node对象的PIN的任务类型进行匹配。如图6中的示例,目的Node对象Y的PIN定义自己能够处理的接收Task类型以及接收Task类型标识,源Node对象X的POUT[2]定义自己发送的Task类型信息,源Node对象X的POUT[2]对象会查询目的Node对象Y是否支持“X::A”的Task类型信息,如果能匹配到且返回有效的task类型标识(类型为0),那么表示匹配成功,则确定POUT和PIN连接有效,源Node对象X通过POUT[2]在向任务队列中发送任务时候携带发送任务的类型标识0。
通过上述过程,可以按照预设的配置文件来建立各个数据处理线程对象之间的数据流连接,对于各种不同的应用场景,仅需对配置文件进行对应的调整即可,能够进行便捷灵活的数据流连接建立,可扩展性更强。
步骤S505、根据所述配置文件中容器对象的输入输出配置信息设置所述容器对象的输入端口(记为input)和输出端口(记为output)。
在本申请实施例中,假设在所述输入输出配置信息中,Graph的输入索引号为0,输入Node对象的字符串名称为node-a,则可以调用如下接口来设置Graph的input:
graph->SetInputNode(0,“node-a”),即表示node-a对象的PIN为Graph的输入input[0];
假设在所述输入输出配置信息中,Graph的输出索引号为1,输出Node对象的字符串名称为node-e,输出POUT索引号为7,则可以调用如下接口来设置容器对象的output:
graph->SetOutputNode(1,“node-e”,7),即表示node-e对象的POUT[7]为Graph的输出output[1];
通过以上过程,即可以按照预设的配置文件,建立起各个数据处理线程对象之间的数据流连接,实现便捷灵活的数据流水编排,生成最终的Graph以供后续使用。
图7所示即为数据流水编排的一个具体实例,如图所示,分别建立NodeA,B,C,D,E对象,通过Graph的线程连接模块建立各个Node之间的PIN和POUT的数据关联,形成一个数据处理Graph流。
在完成数据流水编排之后,当需要执行这一数据流水编排时,则启动Graph,调用Graph的启动函数start(),通过Graph的input向Graph输入Task,并驱动Graph对该Task进行处理,得到与该Task对应的任务处理结果,通过Graph的output读取并输出该任务处理结果。处理完毕后,调用Graph的停止函数stop(),停止Graph,最后删除Graph。通过这样的方式,即可实现按照预先完成的数据流水编排来执行对各种数据处理任务的处理。
其中,在驱动Graph对该Task进行处理的过程中,当需要在Node对象之间进行任务传输处理时,则具体可以包括:通过源Node对象的POUT将数据处理任务发送至目的Node对象的PIN的任务队列,通过所述目的Node对象的PIN将所述数据处理任务发送至所述目的Node对象的数据处理函数进行处理。通过上述过程,即可实现各个数据处理线程对象之间的任务传输处理,以保证对数据流水编排的执行。
综上所述,通过本申请实施例,可以按照预设的配置文件来进行数据流水编排。对于各种不同的应用场景,仅需对配置文件进行对应的调整即可,能够进行便捷灵活的数据流水编排,可扩展性更强。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的一种数据流水编排方法,图8示出了本申请实施例提供的一种数据流水编排装置的一个实施例结构图。
本实施例中,一种数据流水编排装置可以包括:
配置文件读取模块801,用于读取预设的数据流水编排配置文件;
容器对象创建模块802,用于创建用于数据流水编排的容器对象;
线程对象创建模块803,用于根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象;
数据流连接建立模块804,用于根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接;
输入输出设置模块805,用于根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,以完成数据流水编排。
进一步地,所述线程对象创建模块可以包括:
线程对象创建单元,用于根据所述线程配置信息,调用预设的线程管理模块在所述容器对象内创建数据处理线程对象。
线程对象属性设置单元,用于根据所述配置文件中的线程属性配置信息,调用预设的线程基类中的属性设置函数分别设置各个数据处理线程对象的属性。
进一步地,所述数据流连接建立模块可以包括:
数据流连接建立单元,用于根据所述连接配置信息,调用预设的线程基类中的输入输出端口建立各个数据处理线程对象之间的数据流连接。
进一步地,所述数据流连接建立单元可以包括:
任务队列连接建立子单元,用于建立源线程对象与目的线程对象之间的任务队列连接关系,将所述源线程对象的输出端口的任务队列指针指向所述目的线程对象的输入端口的任务队列对象;所述源线程对象为数据流输出方,所述目的线程对象为数据流输入方;
任务类型匹配子单元,用于对所述源线程对象的输出端口的任务类型与所述目的线程对象的输入端口的任务类型进行匹配;
连接确定子单元,用于若匹配成功,则确定所述源线程对象的输出端口与所述目的线程对象的输入端口之间的连接有效。
进一步地,所述数据流水编排装置还可以包括:
数据处理任务输入模块,用于通过所述容器对象的输入端口向所述容器对象输入数据处理任务;
数据处理任务处理模块,用于驱动所述容器对象对所述数据处理任务进行处理,得到与所述数据处理任务对应的任务处理结果;
任务处理结果输出模块,用于通过所述容器对象的输出端口输出所述任务处理结果。
进一步地,所述数据处理任务处理模块可以包括:
第一处理单元,用于通过源线程对象的输出端口将数据处理任务发送至目的线程对象的输入端口的任务队列;
第二处理单元,用于通过所述目的线程对象的输入端口将所述数据处理任务发送至所述目的线程对象的数据处理函数进行处理。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
图9示出了本申请实施例提供的一种终端设备的示意框图,为了便于说明,仅示出了与本申请实施例相关的部分。
如图9所示,该实施例的终端设备9包括:处理器90、存储器91以及存储在所述存储器91中并可在所述处理器90上运行的计算机程序92。所述处理器90执行所述计算机程序92时实现上述各个数据流水编排方法实施例中的步骤,例如图5所示的步骤S501至步骤S505。或者,所述处理器90执行所述计算机程序92时实现上述各装置实施例中各模块/单元的功能,例如图8所示模块801至模块805的功能。
示例性的,所述计算机程序92可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器91中,并由所述处理器90执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序92在所述终端设备9中的执行过程。
所述终端设备9可以是桌上型计算机、笔记本、掌上电脑、智能手机及智能电视等计算设备。本领域技术人员可以理解,图9仅仅是终端设备9的示例,并不构成对终端设备9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备9还可以包括输入输出设备、网络接入设备、总线等。
所述处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。所述处理器90可以是所述终端设备9的神经中枢和指挥中心,所述处理器90可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
所述存储器91可以是所述终端设备9的内部存储单元,例如终端设备9的硬盘或内存。所述存储器91也可以是所述终端设备9的外部存储设备,例如所述终端设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器91还可以既包括所述终端设备9的内部存储单元也包括外部存储设备。所述存储器91用于存储所述计算机程序以及所述终端设备9所需的其它程序和数据。所述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所述终端设备9还可以包括通信模块,所述通信模块可以提供应用在网络设备上的包括无线局域网(Wireless Local Area Networks,WLAN)(如Wi-Fi网络),蓝牙,Zigbee,移动通信网络,全球导航卫星系统(Global Navigation Satellite System,GNSS),调频(Frequency Modulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等通信的解决方案。所述通信模块可以是集成至少一个通信处理模块的一个或多个器件。该通信模块可以包括天线,该天线可以只有一个阵元,也可以是包括多个阵元的天线阵列。所述通信模块可以通过天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器。所述通信模块还可以从处理器接收待发送的信号,对其进行调频、放大,经天线转为电磁波辐射出去。
所述终端设备9还可以包括电源管理模块,所述电源管理模块可以接收外接电源、电池和/或充电器的输入,为所述处理器、所述存储器和所述通信模块等供电。
所述终端设备9还可以包括显示模块,所述显示模块可用于显示由用户输入的信息或提供给用户的信息。所述显示模块可包括显示面板,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板。进一步的,触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给所述处理器以确定触摸事件的类型,随后所述处理器根据触摸事件的类型在所述显示面板上提供相应的视觉输出。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在所述终端设备上运行时,使得所述终端设备可实现上述各个方法实施例中的步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (13)

1.一种数据流水编排方法,其特征在于,包括:
读取预设的数据流水编排配置文件;
创建用于数据流水编排的容器对象;
根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象;
根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接;
根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,以完成数据流水编排。
2.根据权利要求1所述的数据流水编排方法,其特征在于,所述根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象,包括:
根据所述线程配置信息,调用预设的线程管理模块在所述容器对象内创建数据处理线程对象。
3.根据权利要求2所述的数据流水编排方法,其特征在于,所述线程配置信息包括数据处理线程类的字符串名称和数据处理线程对象的字符串名称;
所述调用预设的线程管理模块在所述容器对象内创建数据处理线程对象,包括:
调用所述线程管理模块在所述容器对象内创建与所述线程配置信息中的数据处理线程类的字符串名称和数据处理线程对象的字符串名称对应的数据处理线程对象。
4.根据权利要求1所述的数据流水编排方法,其特征在于,在根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象之后,还包括:
根据所述配置文件中的线程属性配置信息,调用预设的线程基类中的属性设置函数分别设置各个数据处理线程对象的属性。
5.根据权利要求4所述的数据流水编排方法,其特征在于,所述线程属性配置信息包括数据处理线程对象的字符串名称、数据处理线程对象的配置属性中的键的字符串名称以及与该键对应的目标值;
所述调用预设的线程基类中的属性设置函数分别设置各个数据处理线程对象的属性,包括:
调用所述属性设置函数,将与所述数据处理线程对象的字符串名称和所述键的字符串名称对应的键的值设置为所述目标值。
6.根据权利要求1所述的数据流水编排方法,其特征在于,所述根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接,包括:
根据所述连接配置信息,调用预设的线程基类中的输入输出端口建立各个数据处理线程对象之间的数据流连接。
7.根据权利要求6所述的数据流水编排方法,其特征在于,所述调用所述线程基类中的输入输出端口建立各个数据处理线程对象之间的数据流连接,包括:
建立源线程对象与目的线程对象之间的任务队列连接关系,将所述源线程对象的输出端口的任务队列指针指向所述目的线程对象的输入端口的任务队列对象;所述源线程对象为数据流输出方,所述目的线程对象为数据流输入方;
对所述源线程对象的输出端口的任务类型与所述目的线程对象的输入端口的任务类型进行匹配;
若匹配成功,则确定所述源线程对象的输出端口与所述目的线程对象的输入端口之间的连接有效。
8.根据权利要求1所述的数据流水编排方法,其特征在于,所述输入输出配置信息包括所述容器对象的输入索引号、输入数据处理线程对象的字符串名称、所述容器对象的输出索引号、输出数据处理线程对象的字符串名称和输出索引号;
所述根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,包括:
根据所述容器对象的输入索引号和所述输入数据处理线程对象的字符串名称设置所述容器对象的输入端口;
根据所述容器对象的输出索引号、所述输出数据处理线程对象的字符串名称和输出索引号设置所述容器对象的输出端口。
9.根据权利要求1至8中任一项所述的数据流水编排方法,其特征在于,在完成数据流水编排之后,还包括:
通过所述容器对象的输入端口向所述容器对象输入数据处理任务;
驱动所述容器对象对所述数据处理任务进行处理,得到与所述数据处理任务对应的任务处理结果;
通过所述容器对象的输出端口输出所述任务处理结果。
10.根据权利要求9所述的数据流水编排方法,其特征在于,所述驱动所述容器对象对所述数据处理任务进行处理,包括:
通过源线程对象的输出端口将数据处理任务发送至目的线程对象的输入端口的任务队列;所述源线程对象为数据流输出方,所述目的线程对象为数据流输入方;
通过所述目的线程对象的输入端口将所述数据处理任务发送至所述目的线程对象的数据处理函数进行处理。
11.一种数据流水编排装置,其特征在于,包括:
配置文件读取模块,用于读取预设的数据流水编排配置文件;
容器对象创建模块,用于创建用于数据流水编排的容器对象;
线程对象创建模块,用于根据所述配置文件中的线程配置信息在所述容器对象内创建数据处理线程对象;
数据流连接建立模块,用于根据所述配置文件中的连接配置信息建立各个数据处理线程对象之间的数据流连接;
输入输出设置模块,用于根据所述配置文件中的输入输出配置信息设置所述容器对象的输入端口和输出端口,以完成数据流水编排。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10中任一项所述的数据流水编排方法的步骤。
13.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至10中任一项所述的数据流水编排方法的步骤。
CN202011613077.8A 2020-12-29 2020-12-29 一种数据流水编排方法、装置、可读存储介质及终端设备 Pending CN114691231A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011613077.8A CN114691231A (zh) 2020-12-29 2020-12-29 一种数据流水编排方法、装置、可读存储介质及终端设备
PCT/CN2021/133115 WO2022142902A1 (zh) 2020-12-29 2021-11-25 一种数据流水编排方法、装置、可读存储介质及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011613077.8A CN114691231A (zh) 2020-12-29 2020-12-29 一种数据流水编排方法、装置、可读存储介质及终端设备

Publications (1)

Publication Number Publication Date
CN114691231A true CN114691231A (zh) 2022-07-01

Family

ID=82132202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011613077.8A Pending CN114691231A (zh) 2020-12-29 2020-12-29 一种数据流水编排方法、装置、可读存储介质及终端设备

Country Status (2)

Country Link
CN (1) CN114691231A (zh)
WO (1) WO2022142902A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561075A (zh) * 2023-05-15 2023-08-08 北京百度网讯科技有限公司 动态链接库文件的生成方法、算子的调用方法及装置
CN117408502A (zh) * 2023-12-15 2024-01-16 成都川油瑞飞科技有限责任公司 应用于油气生产系统的数据流编排方法及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
CN104991952A (zh) * 2015-07-17 2015-10-21 南威软件股份有限公司 一种智能数据分发流程引擎及其同步数据的方法
CN110750592A (zh) * 2019-09-06 2020-02-04 中国平安财产保险股份有限公司 数据同步的方法、装置和终端设备
CN111078449A (zh) * 2019-11-29 2020-04-28 深圳大学 信息处理方法、信息处理装置及终端设备
US10684966B1 (en) * 2019-02-21 2020-06-16 Amazon Technologies, Inc. Orchestrating dataflows with inferred data store interactions
CN111666157A (zh) * 2020-04-03 2020-09-15 中国科学院电子学研究所苏州研究院 一种面向地理空间影像数据的快速处理方法及系统
CN111984371A (zh) * 2020-08-18 2020-11-24 济南浪潮高新科技投资发展有限公司 一种流程编排服务调度和发布方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9923949B2 (en) * 2014-03-24 2018-03-20 Baldur A. Steingrimsson All-electronic ecosystems for design and collaboration
CN110780914B (zh) * 2018-07-31 2022-12-27 中国移动通信集团浙江有限公司 服务发布方法及装置
CN111309454B (zh) * 2020-03-16 2024-02-20 普元信息技术股份有限公司 微服务架构下实现服务编排数据上下文共享与管理控制的方法及其系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
CN104991952A (zh) * 2015-07-17 2015-10-21 南威软件股份有限公司 一种智能数据分发流程引擎及其同步数据的方法
US10684966B1 (en) * 2019-02-21 2020-06-16 Amazon Technologies, Inc. Orchestrating dataflows with inferred data store interactions
CN110750592A (zh) * 2019-09-06 2020-02-04 中国平安财产保险股份有限公司 数据同步的方法、装置和终端设备
CN111078449A (zh) * 2019-11-29 2020-04-28 深圳大学 信息处理方法、信息处理装置及终端设备
CN111666157A (zh) * 2020-04-03 2020-09-15 中国科学院电子学研究所苏州研究院 一种面向地理空间影像数据的快速处理方法及系统
CN111984371A (zh) * 2020-08-18 2020-11-24 济南浪潮高新科技投资发展有限公司 一种流程编排服务调度和发布方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561075A (zh) * 2023-05-15 2023-08-08 北京百度网讯科技有限公司 动态链接库文件的生成方法、算子的调用方法及装置
CN116561075B (zh) * 2023-05-15 2024-01-30 北京百度网讯科技有限公司 动态链接库文件的生成方法、算子的调用方法及装置
CN117408502A (zh) * 2023-12-15 2024-01-16 成都川油瑞飞科技有限责任公司 应用于油气生产系统的数据流编排方法及系统
CN117408502B (zh) * 2023-12-15 2024-03-15 成都川油瑞飞科技有限责任公司 应用于油气生产系统的数据流编排方法及系统

Also Published As

Publication number Publication date
WO2022142902A1 (zh) 2022-07-07

Similar Documents

Publication Publication Date Title
CN109324787A (zh) 一种业务软件开发方法、装置及终端设备
CN109995805B (zh) 一种智能机器人的管理方法、终端设备及介质
CN114691231A (zh) 一种数据流水编排方法、装置、可读存储介质及终端设备
CN108038112A (zh) 文件处理方法、移动终端及计算机可读存储介质
CN109639598A (zh) 基于微服务的请求处理方法、服务器、存储介质及装置
CN107506494B (zh) 文件处理方法、移动终端及计算机可读存储介质
CN114237743B (zh) 界面加载方法、装置、电子设备和存储介质
CN109976744B (zh) 一种可视化编程方法、系统及终端设备
CN104199680A (zh) 一种支持调用多种安全设备的处理方法
US11500647B2 (en) Systems and methods for achieving faster boot times using BIOS attribute mitigation
CN113127775B (zh) 一种页面加载方法、装置、设备和存储介质
CN107679222A (zh) 图片处理方法、移动终端及计算机可读存储介质
CN107292614A (zh) 支付类应用程序管理方法、装置及移动终端
CN109241727B (zh) 权限设置方法及装置
CN111143408A (zh) 一种基于业务规则的事件处理方法和装置
CN113296898B (zh) 异步任务处理方法、装置、电子设备和存储介质
CN112905270B (zh) 工作流实现方法、装置、平台、电子设备以及存储介质
CN112380411B (zh) 敏感词处理方法、装置、电子设备、系统及存储介质
CN114691380A (zh) 一种数据流水编排方法、装置、存储介质及终端设备
CN111352357B (zh) 机器人的控制方法、装置及终端设备
CN107688612B (zh) 数据操作方法、装置和计算机设备
CN112905336A (zh) 数据采集方法、装置、设备及存储介质
CN109561146A (zh) 文件下载方法、装置、终端设备
CN107885813A (zh) 图片处理方法、移动终端及计算机可读存储介质
CN113992729B (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