CN113795822B - 用于处理工作流的方法、装置、计算机系统及存储介质 - Google Patents

用于处理工作流的方法、装置、计算机系统及存储介质 Download PDF

Info

Publication number
CN113795822B
CN113795822B CN202080032299.2A CN202080032299A CN113795822B CN 113795822 B CN113795822 B CN 113795822B CN 202080032299 A CN202080032299 A CN 202080032299A CN 113795822 B CN113795822 B CN 113795822B
Authority
CN
China
Prior art keywords
task
workflow
processing
state
tasks
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
CN202080032299.2A
Other languages
English (en)
Other versions
CN113795822A (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.)
Tencent America LLC
Original Assignee
Tencent America LLC
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 Tencent America LLC filed Critical Tencent America LLC
Publication of CN113795822A publication Critical patent/CN113795822A/zh
Application granted granted Critical
Publication of CN113795822B publication Critical patent/CN113795822B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开的各方面提供了用于处理工作流的方法、装置、计算机系统及存储介质。其中,一种用于处理工作流的方法包括接收工作流的工作流信息。基于工作流信息生成工作流以处理输入数据。工作流包括第一处理任务、第二处理任务和第一缓冲任务。使第一处理任务进入运行状态,其中在运行状态下第一处理任务处理输入数据的第一子集并将已处理的第一子集作为第一已处理的子集数据输出到第一缓冲任务。基于存储在第一缓冲任务中的第一已处理的子集数据的量等于第一阈值,使第一处理任务转变到暂停状态。存储处于暂停状态的所述第一处理任务的状态信息。随后,使第二处理任务进入运行状态,其中在运行状态下第二处理任务对第一已处理的子集数据进行处理。

Description

用于处理工作流的方法、装置、计算机系统及存储介质
引用并入
本申请要求于2020年9月21日提交的美国专利申请第17/027,569号“用于步进工作流的方法和装置(METHOD AND APPARATUS FOR A STEP-ENABLED WORKFLOW)”的优先权,该美国专利申请要求于2019年9月28日提交的美国临时申请第62/907,626号“用于云计算的状态化步进工作流(Stateful Step-Enabled Workflows for Cloud Computing)”的优先权。这些先前申请的全部公开内容在此通过引用整体并入本文。
技术领域
本申请描述总体上涉及数据处理的实施例,该数据处理包括一个或多个工作流的处理。
背景技术
本文所提供的背景描述旨在整体呈现本申请的背景。在背景技术部分以及本说明书的各个方面中所描述的目前已署名的发明人的工作所进行的程度,并不表明其在本申请提交时作为现有技术,且从未明示或暗示其被承认为本申请的现有技术。
工作流可以用于数据处理,以处理数据处理系统中的数据,如媒体数据。在一些例子中,工作流包括大量的处理任务。当并行运行大量的任务时,数据处理系统需要投入大量的资源。
发明内容
本公开的各方面,提供一种用于处理工作流的装置。所述装置包括处理电路。处理电路被配置为接收所述工作流的工作流信息。处理电路基于所述工作流信息生成所述工作流,以处理输入数据。所述工作流包括多个处理任务和一个第一缓冲任务。所述多个处理任务包括第一处理任务和第二处理任务。处理电路使所述第一处理任务进入运行状态,其中在所述运行状态下,所述第一处理任务处理所述输入数据的第一子集,并将已处理的所述第一子集作为第一已处理的子集数据输出到所述第一缓冲任务。处理电路基于存储在所述第一缓冲任务中的所述第一已处理的子集数据的量等于第一阈值,使所述第一处理任务从所述运行状态转变到暂停状态。存储处于所述暂停状态的所述第一处理任务的状态信息。在所述第一处理任务转变到所述暂停状态之后,处理电路使所述第二处理任务进入运行状态,其中在所述运行状态下,所述第二处理任务对存储在所述第一缓冲任务中的所述第一已处理的子集数据进行处理。
在一个实施例中,所述第二处理任务被配置为将已处理的所述第一已处理的子集数据作为第二已处理的子集数据,输出到处于所述运行状态中的第二缓冲任务。处理电路使所述第二处理任务基于以下之一从所述运行状态转变到已暂停状态:(i)存储在所述第二缓冲任务中的所述第二已处理的子集数据的量等于第二阈值,以及(ii)将存储在所述第一缓冲任务中的所述第一已处理的子集数据的所述量提供给所述第二处理任务。存储处于所述暂停状态的所述第二处理任务的状态信息。
在一个实施例中,所述第一缓冲任务被配置为生成指示存储在所述第一缓冲任务中的所述第一已处理的子集数据的所述量等于所述第一阈值的事件。
在一个实施例中,所述第一缓冲任务是配置有先入先出FIFO缓冲器的FIFO任务。所述FIFO缓冲器具有等于或大于所述第一阈值的FIFO长度。所述FIFO任务被配置为:生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量等于所述第一阈值的所述事件。所述FIFO任务被配置为:生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量被提供给所述第二处理任务的另一事件。
在一个实施例中,所述输入数据的第一子集是所述输入数据的多个子集之一。
在一个实施例中,所述第一处理任务的生命周期包括在所述暂停状态与以下任一状态之间的转变:所述运行状态、错误状态和销毁状态。
在一个实施例中,所述工作流包括多个缓冲任务。所述多个缓冲任务包括所述第一缓冲任务。所述多个处理任务的每个输入来自以下中的一个:所述输入数据和所述多个缓冲任务中的一个或多个。在任何时间点,仅允许所述多个处理任务中的一个处于所述运行状态。
在一个实施例中,所述输入数据包括所述输入数据的第一子集和所述输入数据的第二子集。所述工作流包括多个缓冲任务,所述多个缓冲任务包括所述第一缓冲任务。所述多个处理任务的每个输入来自以下中一个:所述输入数据和所述多个缓冲任务中的一个或多个。通过所述多个处理任务顺序地处理所述输入数据的所述第一子集。在所述多个处理任务处理所述输入数据的所述第一子集之后,处理电路可以由所述多个处理任务顺序地处理所述输入数据的所述第二子集,所述多个处理任务中的除处于所述运行状态的处理任务之外的其余处理任务处于暂停状态。在任何时间点,仅允许所述多个处理任务之一处于所述运行状态。
本公开的各方面,提供一种用于处理工作流的方法,包括:接收所述工作流的工作流信息;基于所述工作流信息生成所述工作流,以处理输入数据,所述工作流包括多个处理任务和一个第一缓冲任务,所述多个处理任务包括第一处理任务和第二处理任务;使所述第一处理任务进入运行状态,其中在所述运行状态下,所述第一处理任务处理所述输入数据的第一子集,并将已处理的所述第一子集作为第一已处理的子集数据输出到所述第一缓冲任务;基于存储在所述第一缓冲任务中的所述第一已处理的子集数据的量等于第一阈值,使所述第一处理任务从所述运行状态转变到暂停状态,存储处于所述暂停状态的所述第一处理任务的状态信息;以及在所述第一处理任务转变到所述暂停状态之后,使所述第二处理任务进入运行状态,其中在所述运行状态下,所述第二处理任务对存储在所述第一缓冲任务中的所述第一已处理的子集数据进行处理。
本公开的各方面,提供一种用于处理多个工作流的装置。所述装置包括处理电路。处理电路被配置为接收所述多个工作流的工作流信息。处理电路基于所述工作流信息生成所述多个工作流,以处理输入数据。所述多个工作流中的至少一个包括多个处理任务,所述多个工作流包括第一工作流和第二工作流。处理电路使所述第一工作流进入运行状态,其中在所述运行状态下,所述第一工作流处理所述输入数据的第一子集,并将已处理的所述第一子集作为第一已处理的子集数据输出到缓冲任务。处理电路基于存储在所述缓冲任务中的所述第一已处理的子集数据的量等于阈值,使所述第一工作流从所述运行状态转变到暂停状态,存储处于所述暂停状态的所述第一工作流的状态信息。在所述第一工作流转变到所述暂停状态之后,处理电路使所述第二工作流进入运行状态,其中在所述运行状态下,所述第二工作流对存储在所述缓冲任务中的所述第一已处理的子集数据进行处理。
在一个实施例中,所述缓冲任务被配置为生成指示存储在所述缓冲任务中的所述第一已处理的子集数据的所述量等于所述阈值的事件。
在一个实施例中,所述缓冲任务是配置有先入先出FIFO缓冲器的FIFO任务,所述FIFO缓冲器具有等于或大于所述阈值的FIFO长度。所述FIFO任务被配置为:生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量等于所述阈值的所述事件。所述FIFO任务被配置为:生成指示将存储在所述FIFO任务中的所述第一已处理的子集数据的所述量提供给所述第二工作流的另一事件。
在一个实施例中,所述输入数据的第一子集是所述输入数据的多个子集之一。
本公开的各个方面还提供了一种用于处理多个工作流的方法。所述方法包括:接收所述多个工作流的工作流信息;基于所述工作流信息生成所述多个工作流,以处理输入数据,所述多个工作流中的至少一个包括多个处理任务,所述多个工作流包括第一工作流和第二工作流;使所述第一工作流进入运行状态,其中在所述运行状态下,所述第一工作流处理所述输入数据的第一子集,并将已处理的所述第一子集作为第一已处理的子集数据输出到缓冲任务;基于存储在所述缓冲任务中的所述第一已处理的子集数据的量等于阈值,使所述第一工作流从所述运行状态转变到暂停状态,存储处于所述暂停状态的所述第一工作流的状态信息;以及在所述第一工作流转变到所述暂停状态之后,使所述第二工作流进入运行状态,其中在所述运行状态下,所述第二工作流对存储在所述缓冲任务中的所述第一已处理的子集数据进行处理。
本公开的各个方面还提供了一种非暂时性计算机可读存储介质,该介质存储指令,当由计算机执行用于视频解码的指令时,使得计算机执行用于处理一个或多个工作流的任何方法。
本公开的各个方面还提供了一种计算机系统,所述计算机系统包括:一个或多个计算机可读非易失性存储介质,被配置为存储计算机程序代码;以及一个或多个计算机处理器,被配置为存取所述计算机程序代码并按照所述计算机程序代码的指令进行操作,以执行用于处理一个或多个工作流的任何方法。
附图说明
根据以下详细描述和附图,所公开的主题的其他特征、性质和各种优点将进一步明确,其中:
图1示出了根据本公开的实施例的示例性数据处理系统;
图2A-2C示出了根据本公开的实施例的工作流的示例;
图2D示出了根据本公开的实施例的工作流的示例;
图3示出了根据本公开的实施例的基于步骤的工作流中的任务的示例;
图4A示出了根据本公开的实施例的处理任务的示例性任务生命周期;
图4B示出了根据本公开的实施例的工作流的示例性任务生命周期;
图5示出了根据本公开的实施例的处理任务的示例性任务生命周期;
图6示出了概述根据本公开的实施例的方法的流程图;
图7示出了概述根据本公开的实施例的方法的流程图;
图8示出了概述根据本公开的实施例的方法的流程图;
图9示出了根据实施例的计算机系统的示意图。
具体实施方式
本公开的各方面涉及数据处理(例如,网络中的媒体处理)。数据处理源(例如,基于网络的媒体处理(NBMP)源)可以描述已请求的数据处理(例如,已请求的媒体处理)并为要处理的数据(例如,媒体数据)提供控制信息。因此,工作流管理器(例如,NBMP工作流管理器)可以建立工作流(例如,媒体处理工作流、NBMP工作流),并且可以通知数据处理源(例如,NBMP源)该工作流已经就绪,并且因此可以开始数据处理。一个或多个数据源(例如,一个或多个媒体源)然后可以开始将数据传输到例如网络以进行处理。
通常,工作流可以包括处理任务或任务(例如,媒体处理任务)。连接图可以通过使用连接表示处理任务之间的输入/输出关系,来表示工作流。因此,工作流可以被认为是处理任务的连接图。每个任务可以执行操作(例如,媒体处理操作),诸如视频解码、视频拼接、视频编码等。工作流管理器可以通过配置和监视每个任务和工作流输出来确保工作流的正确操作。工作流管理器可以被配置为基于例如从数据处理源(例如,NBMP源)接收的工作流描述,选择处理功能(例如,媒体处理功能)并将处理功能(例如,媒体处理功能)实例化为相应的任务。
建立、加载、实例化和监视被配置为运行处理任务的处理实体(例如,媒体处理实体)。可以在数据处理源与工作流管理器之间、工作流管理器与一个或多个处理任务之间定义接口,诸如应用编程接口(API)。也可以定义用于发现一个或多个适当功能的API。一般而言,数据处理系统或平台(例如,NBMP平台)可以是数据格式(例如,媒体格式)和协议不可知的。数据处理系统可以识别和发信号通知数据(例如,媒体数据)、元数据和辅助信息格式,用于在数据源(例如,媒体源)、工作流管理器和任务之间交换的数据。
数据处理框架(例如,NBMP框架)可以在通过数字网络连接的用于数据处理的各种实体之间,定义包括数据格式和API两者的接口。用户可以远程访问和配置用户操作,以进行高效和智能的处理。例如,可以将数据上传到网络,可以实例化处理任务,并且可以进一步配置处理任务。数据处理框架可以实现数据处理管道(例如,媒体处理管道)的动态创建,以及实时或以延迟方式访问已处理的数据和元数据。可以指定在数据处理管道中的数据和元数据格式。数据和元数据格式在数据源、工作流管理器和数据处理实体之间使用。
数据处理框架可以使得客户端(例如,数字媒体的创建者、服务提供商和消费者)能够描述数据处理操作,数据处理操作要由例如网络中的数据处理实体执行。可以通过组成可通过接口(例如,NBMP API)访问的一组数据处理功能来描述工作流。数据处理实体(例如,媒体处理实体(MPE))可以运行处理任务或其它任务,处理任务应用于从一个或多个数据源接收的数据和相关元数据。数据处理实体(例如,MPE)可以提供用于配置、管理和监视处理任务的能力。数据处理任务可以是应用于数据和一个或多个元数据输入、产生数据输出和相关元数据输出的过程,产生的数据输出和相关元数据输出供数据接收器(例如,媒体接收器)或其他数据处理任务(例如,媒体处理任务)使用。数据处理框架可以支持各种传递方法,诸如流式传输、文件传递、基于推送的渐进式下载、混合传递、多路径和异构网络环境。
图1示出了根据本公开的实施例的示例性数据处理系统(例如,NBMP系统、NBMP参考体系结构、NBMP体系结构)(100)。数据处理系统(100)可以包括多个实体,诸如数据源(例如,NBMP源、NBMP源实体)(101)、工作流管理器(例如,NBMP工作流管理器)(103)、功能储存库(105)、数据源或数据源实体(例如,媒体源、媒体源实体)(111)、数据处理实体(例如,MPE)(113)、数据接收器或数据接收器实体(例如,媒体接收器或媒体接收器实体)(115)、第三方实体(131)等。数据处理系统(100)可以包括一个或多个附加的数据源、一个或多个数据接收器和/或数据处理实体。数据处理系统(100)可以跨网络中的一个或多个处理实体来处理数据。诸如各种数据和用于该数据的控制信息(或控制数据)之类的信息可以在数据处理系统(100)中的多个实体之间传送。
为了提供用于讨论目的的上下文,数据处理系统(100)在下面被描述为NBMP系统(100)。该描述可以适当地适于任何数据处理系统。
NBMP源(101)可以描述或以其它方式指示网络中的媒体处理。功能储存库(105)可以包括各种NBMP功能的NBMP功能描述。NBMP源(101)和工作流管理器(103)可以从功能储存库(105)中检索NBMP功能描述或功能。NBMP功能可以指代独立且自包含的媒体处理操作的实施和/或该操作的对应描述。
处理任务或任务可以指由MPE(113)执行的NBMP功能的运行时实例。NBMP工作流或工作流可以由一个或多个已连接任务的图(例如,有向无环图(DAG))来表示。所述一个或多个已连接任务实现已请求的媒体处理。工作流管理器(103)可以提供一个或多个任务并连接一个或多个任务,以基于例如工作流描述文档(WDD),创建、控制、管理和监视工作流。
媒体源(111)可以提供要由工作流处理的媒体内容(例如,媒体数据、补充信息)。补充信息可以包括与媒体数据相关的元数据或辅助信息。媒体源(111)可以向工作流提供输入。媒体接收器(115)可以消耗工作流的输出。MPE(113)可以运行一个或多个媒体处理任务,以处理媒体内容。
NBMP系统(100)中的不同实体(例如,NBMP源(101)、工作流管理器(103)和MPE(113))可以使用API来调用和响应媒体服务请求。API可以包括NBMP工作流API或工作流API、功能发现API和任务API。工作流API可以提供NBMP源(101)与工作流管理器(103)之间的接口。任务API可以提供工作流管理器(103)与媒体处理任务之间的接口。功能发现API可以提供工作流管理器(103)/NBMP源(101)与功能储存库(105)之间的接口。
上述NBMP接口可以用于创建和控制网络中的媒体处理工作流。NBMP系统(100)可以分割成控制平面和媒体平面(或媒体数据平面)。控制平面可以包括工作流API、功能发现API和任务API。
NBMP源(101)可以使用工作流API来创建和控制媒体处理工作流。NBMP源(101)可以使用工作流API与工作流管理器(103)通信,以配置和控制网络中的媒体处理。当NBMP源(101)通过在工作流API的操作中包括工作流资源(WR)而向工作流管理器(103)发送请求时,工作流管理器(103)可以解析WR、所包括的WDD和对应的描述符,并根据已请求的操作采取适当动作。然后,工作流管理器(103)可以用响应来确认该请求。工作流API操作可以包括创建工作流(例如,CreateWorkflow)、更新工作流(例如,UpdateWorkflow)、删除工作流(例如,DeleteWorkflow)、检索工作流(例如,RetrieveWorkflow)等。
功能发现API可以为工作流管理器(103)和/或NBMP源(101)提供用于发现媒体处理功能的方式,所述媒体处理功能可以作为媒体处理工作流的一部分而加载。
工作流管理器(103)可以使用任务API,以在运行时配置和监视一个或多个任务(例如,由MPE(113)运行的任务1和任务2)。例如,在MPE(113)中为任务分配资源之后,任务API可以定义用于由工作流管理器(103)配置媒体处理任务的一个或多个接口。任务API操作可以包括创建任务(例如,CreateTask)、更新任务(例如,UpdateTask)、获取任务(例如,GetTask)、删除任务(例如,DeleteTask)等。
在媒体平面上,可以定义NBMP源(111)与一个或多个任务之间以及任务之间的媒体格式、元数据和补充信息格式。
工作流描述(WD)可以从NBMP源(101)传递到工作流管理器(103)。WD可以描述工作流的诸如输入数据和输出数据、功能和其它要求之类的信息。
工作流管理器(103)可以从NBMP源(101)接收WDD,并且可以构建用于已请求的媒体处理的工作流。在工作流过程中,例如可以从功能储存库(105)中选择媒体处理功能,然后可以将对应的媒体处理任务配置并分发到包含一个或多个MPE(例如,包括MPE(113))的一组MPE。
功能储存库(105)可以提供功能组,该功能组可以由NBMP源(101)和工作流管理器(103)读取。在实施例中,NBMP源(101)使用功能储存库(105)中的一组功能来请求创建工作流。因此,NBMP源(101)被配置为选择工作流的功能。NBMP源(101)可以请求创建如下所述的工作流。NBMP源(101)可以使用用于要创建工作流的媒体处理任务的描述,并且可以指定连接图来定义媒体处理任务的输入和输出的连接。当工作流管理器(103)从NBMP源(101)接收到上述信息时,工作流管理器(103)可以基于相应的功能名称来实例化媒体处理任务,并且可以根据连接图来连接媒体处理任务。
可选地,NBMP源(101)可以使用一组关键字来请求创建工作流,工作流管理器(103)可以通过该组关键字来构建工作流。因此,NBMP源(101)可能不知道要插入工作流中的一组功能。NBMP源(101)可以请求创建如下所述的工作流。NBMP源(101)可以使用供工作流管理器(103)找到适当功能的该组关键字,并且可以使用适当的工作流描述来指定工作流的要求。
当工作流管理器(103)从NBMP源(101)接收到上述信息(例如,该组关键字)时,工作流管理器(103)可以通过使用关键字搜索适当的功能来创建工作流。关键字例如在处理描述符中指定。工作流管理器(103)然后可以使用工作流描述中的其它描述符来提供媒体处理任务并连接媒体处理任务,以创建最终工作流。
工作流管理器(103)的处理模型可以描述如下。
工作流管理器(103)可以如下发现可用的媒体处理功能。NBMP功能储存库(105)可以提供功能发现接口(或API),以允许外部实体查询可实现已请求的处理的媒体处理功能。工作流管理器(103)可以访问提供可搜索的媒体处理功能列表的目录服务。工作流管理器(103)可以使用工作流描述中的媒体处理任务的描述来找到工作流的适当功能。
可以在下文描述对用于工作流的媒体处理任务的选择。当从NBMP源(101)接收到对媒体处理的请求时,工作流管理器(103)可以搜索功能储存库(105)以找到可以实现该工作流的所有可用功能的列表。使用来自NBMP源(101)的工作流描述,工作流管理器(103)可以从功能库(105)中找到功能以实施工作流,该工作流可以取决于来自NBMP源(101)的用于媒体处理的信息。用于媒体处理的信息可以包括输入描述和输出描述、已请求的处理的描述,以及功能目录(105)中的功能的其它描述符中的信息。将源请求映射到要包括在工作流中的适当媒体处理任务可以是网络中NBMP的实施的一部分。为了在任务创建时引用并链接具有输入端口名和输出端口名的输入源,输入端口和输出端口可以用于引用输入流。
对要实例化为任务的适当功能的搜索可以由工作流管理器(103)使用功能发现API来执行。可选地,工作流管理器(103)可以使用功能发现API来检索功能储存库(105)中的某些适当功能的详细信息或所有适当功能的详细信息。然后,工作流管理器(103)可以将来自NBMP源(101)的用于媒体处理的信息与每个功能的不同描述符进行比较。
可以在工作流中配置已选择的媒体处理任务。当识别了要包括在工作流中的功能时,NBMP工作流管理器(103)可以将功能实例化为相应的任务,并配置任务,以便将任务添加到工作流中。NBMP工作流管理器(103)可以从接收自NBMP源(101)的媒体处理信息中提取配置数据,并配置对应任务。可以使用任务API(例如,NBMP任务API)来执行任务的配置。
任务配置和分配可以描述如下。工作流管理器(103)可以使用工作流来执行处理部署并配置媒体处理实体。在示例中,对于计算密集型媒体处理请求,工作流管理器(103)可以建立多个计算实例并在多个计算实例之间分配工作负载。因此,工作流管理器(103)可以根据需要连接并配置多个计算实例。在示例中,工作流管理器(103)将同一任务分配给多个实例,并提供负载平衡器以使用已选取的调度机制在多个实例之间分配工作负载。在可选示例中,工作流管理器(103)将同一任务的不同操作分配给不同实例(例如,并行操作)。在上述两个示例中,工作流管理器(103)可以在实例之间建立工作流路径,并且因此可以成功地实现合适的工作负载。工作流管理器(103)可以配置任务以将已处理的媒体数据/流(或通过拉取机制使它们可用)推送到工作流图中的下一任务。
当工作流管理器(103)从NBMP源(101)接收到WDD时,工作流管理器(103)可以执行对要插入工作流中的媒体处理功能的选择。当要包括在工作流中的任务列表被编译后,工作流管理器(103)然后可以连接任务以准备工作流。
工作流管理器(103)可以生成例如由来自WDD的图(例如,DAG)表示的工作流。图2A示出了根据本公开的实施例的图(例如,DAG)(200A)的示例。DAG(200A)可以包括多个节点(T1)至(T6)和多个链接(或连接)(202)至(208)。在示例中,DAG(200A)表示工作流(200A)。
DAG(200A)的每个节点可以表示工作流(200A)中的媒体处理任务。在DAG(200A)中将第一节点(例如,节点(T1))连接到第二节点(例如,节点(T2))的链接(例如,链接(202))可以表示第一节点(例如,节点(T1))的输出的转移,该输出作为第二节点(例如,节点(T2))的输入。
通常,工作流可以包括任何合适数量的一个或多个输入(或一个或多个工作流输入)和任何合适数量的一个或多个输出(或一个或多个工作流输出)。一个或多个工作流输入可以连接到媒体源(111)、一个或多个其它工作流等,并且一个或多个工作流输出可以连接到媒体接收器(115)、一个或多个其它工作流等。工作流(200A)具有输入(201)以及输出(209)和(210)。在一些实施例中,工作流(200A)可以具有来自中间节点的一个或多个输出。
图4A示出了根据本公开的实施例的媒体处理任务的示例性任务生命周期(400)。任务生命周期(400)可以应用于其它类型的处理任务。媒体处理任务可以在媒体处理任务执行的不同点在不同状态中转变。任务生命周期(400)中的不同状态可以包括实例化状态(401)、空闲状态(402)、运行状态(403)、错误状态(404)、销毁状态(405)等。
实例化状态(401):当工作流管理器(103)例如通过如使用onInstantiation转变表示的基础设施管理器的服务来实例化媒体处理任务时,媒体处理任务处于实例化状态(401)。当媒体处理任务被配置时(例如,如使用onTaskConfiguration转变表示),实例化状态(401)可以转变(或改变)为空闲状态(402)。可选地,如果媒体处理任务终止(例如,如使用onTermination转变表示),则媒体处理任务可以转变成销毁状态(405)。
空闲状态(402):当媒体处理任务处于实例化状态(401)并且工作流管理器(103)可以执行任务配置(例如,如使用onTaskConfiguration转变表示)时,媒体处理任务可以转变成空闲状态(402)。在空闲状态(402)中,媒体处理任务配置有合适的处理。当媒体处理任务开始时(例如,如使用onStart转变表示),媒体处理任务可以转变成运行状态(403)。可选地,在空闲状态(402)中,重新配置媒体处理任务并保持在空闲状态(402)中。在空闲状态(402)中,如果媒体处理任务终止(例如,如使用onTermination转变表示),则媒体处理任务可以转变成销毁状态(405)。在空闲状态(402)中,如果重置媒体处理任务(例如,如使用onReset转变表示),则媒体处理任务可以转变成实例化状态(401)。
运行状态(403):当媒体处理任务处于空闲状态(402)并且开启媒体处理任务(例如,使用onStart转变)时,媒体处理任务可以从空闲状态(402)转变成运行状态(403)。在运行状态(403)中,分配给MPE(113)的媒体处理任务可以处理媒体处理任务从工作流中的先前一个媒体处理任务或者NBMP源(101)接收的数据(例如,来自媒体源(111)的媒体数据)。可选地,在运行状态(403)中,如果工作流管理器(103)可以对媒体处理任务执行重新配置(例如,如使用onTaskConfiguration转变表示),并且如果该重新配置导致对媒体处理任务的当前媒体/元数据流执行处理重新配置,则媒体处理任务可以保持在运行状态(403)中。在运行状态(403)中,如果媒体处理任务停止(例如,如使用onStop转变表示)或完成(例如,如使用onCompletion转变表示的),则媒体处理任务可以转变成空闲状态(402)。在运行状态(403)中,如果媒体处理任务遇到错误(例如,如使用onError转变表示),则媒体处理任务可以转变成错误状态(404)。在运行状态(403)中,如果媒体处理任务终止(例如,如使用onTermination转变表示),则媒体处理任务可以转变成销毁状态(405)。
错误状态(404):当媒体处理任务遇到错误并且不能处理媒体数据或元数据时,媒体处理任务可以处于错误状态(404)。在处理错误时(例如,如使用onErrorHandling转变表示),媒体处理任务可以移回到空闲状态(402)。可选地,当处于错误状态(404)时,可以重置媒体处理任务(例如,如使用onReset转变表示),使得媒体处理任务可以转变成实例化状态(401)。在错误状态(404)中,如果媒体处理任务终止,则媒体处理任务可以转变成销毁状态(405)。
销毁状态(405):当工作流管理器(103)终止媒体处理任务时,媒体处理任务可以处于销毁状态(405)。媒体处理任务可以被丢弃并且不能重新使用。
媒体处理任务的状态可以反映在通用描述符的‘状态’参数中。在一些示例中,除了onError转变之外的上述转变中的每一个都可以由工作流管理器(103)发起的任务操作发生。由于媒体处理任务的内部状态改变,因此可能发生OnError转变。
图4B示出了根据本公开的实施例的工作流的示例性工作流生命周期(410)。工作流可以在工作流的不同执行点在不同状态中转变。工作流生命周期(410)中的不同状态可以包括实例化状态(411)、空闲状态(412)、运行状态(413)、错误状态(414)、销毁状态(415)等。
实例化状态(411):工作流管理器(103)可以例如通过基础设施管理器的服务将工作流置于实例化状态(411)(例如,如使用onInstantiation转变表示)。当配置工作流时(例如,如使用onWorkflowConfig转变表示),工作流可以转变成空闲状态(412)。可选地,如果工作流在处于实例化状态时终止(例如,如使用onTermination转变表示)(411),则工作流可以转变成销毁状态(415)。
空闲状态(412):当工作流处于实例化状态(412)并且工作流管理器(103)执行工作流配置(例如,如使用onWorkflowConfig转变表示)时,工作流可以转变成空闲状态(412)。在空闲状态(412)中,(例如,经由基础设施管理器)设置一个或多个MPE,并且提供和配置在MPE中运行的任务。当工作流开始时(例如,如使用onStart转变表示),工作流可以转变成运行状态(413)。可选地,在空闲状态(412)中,可以重新配置工作流。工作流可以保持在空闲状态(412)中,从而等待媒体数据或元数据到达。在空闲状态(412)中,如果工作流终止(例如,如使用onTermination转变表示),则工作流可以转变成销毁状态(415)。在空闲状态(412)中,如果工作流被重置(例如,如使用onReset转变表示),则工作流可以转变成实例化状态(411)。
运行状态(413):当工作流处于空闲状态(412)并且工作流开始(例如,使用onStart转变)时,工作流可以从空闲状态(412)转变成运行状态(413)。在运行状态(413)中,来自NBMP源(101)的数据可以由工作流中的MPE处理。可选地,在运行状态(413)中,如果工作流管理器(103)对工作流执行重新配置(例如,如使用onWorkflowConfig转变表示)并且如果重新配置导致对当前媒体/元数据流执行处理重新配置,则工作流可以保持在运行状态(413)中。在运行状态(413)中,如果工作流停止(例如,如使用onStop转变表示)或者处理完成(例如,如使用onComplete转变表示),则工作流可以转变成空闲状态(412)。在运行状态(413)中,如果工作流遇到错误(例如,如使用onError转变表示),则工作流可以转变成错误状态(414)。在运行状态(413)中,如果工作流终止(例如,如使用onTermination转变表示),则工作流可以转变成销毁状态(415)。
错误状态(414):当工作流遇到错误并且不能继续工作流处理时,工作流处于错误状态(414)。在处理错误时(例如,如使用onErrorHandling转变表示),工作流可以移回到空闲状态(412)。可选地,当处于错误状态(414)时,可以重置工作流(例如,如使用onReset转变表示),使得工作流可以转变成实例化状态(411)。在错误状态(414)中,如果工作流终止,则工作流可以转变成销毁状态(415)。
销毁状态(415):当工作流管理器(103)终止工作流时,工作流处于销毁状态(415)。可以为要再次使用的工作流实例化工作流。
在一些示例中,除了onError转变之外的上述转变中的每一个都可能由NBMP源(101)发起的工作流操作发生。由于工作流的内部状态改变,因此可能发生OnError转变。
在示例中,在云上处理媒体的概念是由NBMP项目开发的。然而,NBMP设计不提供用于监视、报告和通知的单一方法。在一些示例中,未定义用于报告或通知的消息格式。
在一些示例中,不允许NBMP工作流的部分运行,因此工作流中的所有任务都将实例化以供工作流操作,并且所有任务将同时工作。因此,底层平台将资源(例如,计算资源、存储器资源、带宽)同时分配给工作流中的所有任务。资源的大量分配可能是不可用的,或者可能是可用的但成本很高。
为了提高媒体处理效率、更快且更低成本地部署媒体服务以及能够通过借助公共、私有或混合云服务来提供大规模部署,本公开的各方面提供了允许工作流中的任务一次一个步骤和/或一次一组步骤地操作或运行的方法和装置。当没有足够多资源(例如,存储器资源、计算资源)用于同时运行整个工作流时,上述功能性模式或逐步模式是有利的。本公开中公开的方法和实施例可以用于云计算上或利用一个或多个工作流的任何合适的平台上的,任何合适的工作流实施。
根据本公开的各方面,诸如缓冲功能(例如,如下所述的先进先出功能)之类的步进模式功能可添加到工作流中。步进模式功能可以为多个工作流中的一个或多个工作流中的任务,启用基于步骤的操作或逐步操作。因此,使用多个步骤来处理数据。使用步进模式,工作流可以单独运行任务,并且因此工作流中的任务子集可以同时运行,而其余一个或多个任务不运行。在示例中,工作流包括六个任务。在示例中,任务子集包括一个任务,并且因此一个任务可以在运行状态下处理数据,而其它五个任务不运行。其它五个任务可以处于非运行状态(例如,如下所述的暂停状态)并且不处理数据。在另一示例中,任务子集包括两个任务,并且因此这两个任务可以同时运行,而其它四个任务不运行。
在另一示例中,多个工作流包括第一工作流和第二工作流。当第一工作流正运行以处理数据时,第二工作流处于非运行状态(例如,如下所述的暂停状态)并且不处理数据。
在实施例中,要由工作流中的任务处理的媒体数据可以包括媒体数据的多个子集。根据本公开的各方面,媒体数据可以以多个子集中的一个或多个为单位来处理,并且可以以步进模式(或逐步模式)处理媒体数据。步长可以是多个子集中的一个或多个。在一些示例中,步长由步进模式功能的属性(诸如在缓冲功能生成事件以触发对应任务之前,可以存储在为缓冲功能配置的缓冲器中的最大数据量)确定。
最大步长可以是整个媒体数据,并且在单个步骤中处理媒体数据。在示例中,媒体数据包括100帧,并且包括10个子集。每个子集包括10帧。可以在步长为100帧的单个步骤中处理媒体数据。可选地,可以在步长为10帧的10个步骤中处理媒体数据。
每个任务可以在一个或多个步骤中运行,并且可以在一个步骤中处理多个媒体数据的子集之一。工作流中的任务可以具有不同的步长。由于任务可能不具有相同的步长,因此一个或多个某些任务可以在一个或多个其它步骤可以处理或开始运行之前运行多个步骤。例如,媒体数据包括100帧(或图片)。任务(T1)可以在一个步骤中处理10帧,而任务(T2)在一个步骤中使用20帧。任务(T1)的输出为任务(T2)的输入提供数据。因此,任务(T1)可以在(T2)不运行时运行两个步骤。在任务(T1)运行两个步骤并生成20个已处理的帧之后,任务(T1)可以暂停(不运行),并且然后任务(T2)可以运行以处理来自任务(T1)的20帧。在以上描述中,任务(T1)可以在任务(T1)停止之前运行两个步骤,并且任务(T2)可以在任务(T2)停止之前运行一个步骤。
在任务执行的每个步骤中,可以处理媒体数据(例如,100帧)的一部分(例如,多个子集之一,诸如10帧),并且可以生成具有有限持续时间(或有限长度、有限大小)任务的输出(也称为任务输出)。然后,可以保存或存储任务的状态信息(例如,内部状态和数据),并且可以暂停该任务(例如,将该任务转变到如下所述的暂停状态)。在一些示例中,可以释放为任务分配的资源。然后,例如从暂停状态到先前维持的状态检索下一任务,并且可以执行该下一任务,以处理下一任务的输入处的数据并产生具有有限持续时间的输出。随后,可以暂停该下一任务,可以保存该下一任务的内部状态和数据,并且该过程继续到另一任务。
可以在下面描述工作流的步骤处理(或基于步骤的处理)的益处。工作流可以在资源有限或资源减少的情况下执行,因为工作流中的任务仅一个或几个同时操作(或运行)并且工作流中的其它任务暂停。通过在使用云服务的高流量时间和/或昂贵的白天时间期间暂停工作流,可以降低操作成本。例如,工作流可以在高流量时间停止,诸如在互联网上的大流量期间停止。工作流可以被完全串行化,例如,一次执行一个初始任务以处理整个媒体数据(例如,电影)而工作流中的其它任务未运行,并且移动到下一任务以处理整个媒体数据而工作流中的其它任务未运行。例如,步骤的大小(或在一个步骤中要处理的数据量)可以是整个媒体数据。因此,初始任务(T1)可以在一个步骤中运行或处理整个电影。可以在同一硬件上执行具有各种计算复杂度的任务。更简单的任务的步骤可以更快地执行,而更复杂的任务的步骤的执行可能花费更多的时间。
本公开的各方面提供了基于上述步骤模型的功能和运行任务的块处理模式或步骤模型。分块可以指代在一个步骤中处理的数据单元,诸如10帧。功能或对应任务可以设计成支持分块处理模式,例如以处理一定量的数据。
本公开的各方面描述了缓冲功能(例如,先进先出(FIFO)功能或NBMP FIFO功能)。缓冲器可配置用于缓冲功能,例如,FIFO缓冲器被配置用于FIFO功能。在实施例中,可以将缓冲功能(例如,FIFO功能)定义为具有以下属性。(i)例如,缓冲长度或大小由配置参数定义,该配置参数诸如单个输入和单个输出定义的长度或FIFO队列的FIFO长度。(ii)缓冲功能可以支持事件,诸如如下所述的空事件和满事件。当缓冲器(例如,FIFO队列)为空(例如,存储在缓冲器中的数据被对应任务读取或提供给对应任务)时,可以生成空事件。当缓冲器(例如,FIFO队列)为满时,可以生成满事件。在一些示例中,缓冲功能(例如,FIFO功能)可以支持X%(或%X)事件。X可以是配置参数,诸如大于0且小于或等于100的值。在示例中,X小于100,并且X%事件可以被称为部分满事件。当缓冲器(例如,FIFO队列)为X%满时,可以生成X%事件。当缓冲器为X%满时,可以生成事件(或X%事件)。X的一个或多个值可以设置为配置参数。实施缓冲功能(例如,FIFO功能)的缓冲任务(例如,FIFO任务)可以具有与参考图4A描述的相同任务生命周期,并且为了简洁起见省略了详细描述。
下面可以描述缓冲功能的益处。缓冲功能(例如,FIFO功能)是可以在任何合适的平台中实施的简单功能。该平台提供缓冲器或队列(例如,FIFO队列)并且包括高速缓冲存储器、随机存取存储器、诸如固态和硬盘之类的长期存储器。可以基于缓冲器的空度、满度和部分满度来生成事件(例如,空事件、满事件、部分满事件)。因此,缓冲任务可以向工作流管理器(103)有效地通知缓冲任务的状态。
根据本公开的各方面,可以通过在工作流中添加一个或多个缓冲任务(例如,FIFO任务)来将工作流转换为步进工作流(或基于步骤的工作流、逐步工作流、可步进工作流)。步进工作流可以以步进模式操作。可以在两个任务之间插入缓冲任务。这两个任务可以包括任务A和任务B,其中任务A的输出提供给任务B的输入。
参考图2A至图2B,工作流(200A)可以被称为常规工作流(200A)。在示例中,常规工作流(200A)不是基于步骤的工作流。通过将至少一个缓冲任务插入常规工作流(200A)中,可以将常规工作流(200A)转换为基于步骤的工作流(例如,工作流(200B))。通常,基于步骤的工作流中的任务可以具有第一数量的输入缓冲任务和第二数量的输出缓冲任务,其中第一数量的输入缓冲任务向该任务提供要处理的数据,第二数量的输出缓冲任务存储由该任务处理的数据。第一数量可以是任何合适的非负整数,诸如0、1、2等。第二数量可以是任何合适的非负整数,诸如0、1、2等。在诸如图2B所示的一些示例中,对基于步骤的工作流的每个工作流输入(例如,(201)),不提供缓冲任务。在一些示例中,为基于步骤的工作流的一个或多个工作流输入提供至少一个缓冲任务。在诸如图2B所示的一些示例中,不为来自基于步骤的工作流的每个工作流输出(例如,(209)或(210))提供缓冲任务。在一些示例中,为来自基于步骤的工作流的一个或多个工作流输出提供至少一个缓冲任务。
在图2B所示的示例中,分别为各个链接(202)至(208)提供缓冲任务(例如,FIFO任务)(231)至(237)。例如,任务(T1)连接到工作流输入并且不连接到输入缓冲任务。任务(T1)连接到一个输出缓冲任务(231)。任务(T2)连接到一个输入缓冲任务(231)和两个输出缓冲任务(232)至(233)。任务(T5)连接到两个输入缓冲任务(233)和(235),并且连接到一个输出缓冲任务(237)。
每个链接(例如,链接(202))是工作流(200B)的两个任务(例如,任务(T1)至(T2))之间的连接。链接(例如,(202))可以表示从这两个任务之一(例如,(T1))到这两个任务中的另一任务(例如,(T2))的数据转移。缓冲任务(231)至(237)可以从上述缓冲功能实例化。在示例中,缓冲任务(231)至(237)包括从FIFO功能实例化的FIFO任务。
通常,连接到缓冲任务的任务对(或两个任务)可以包括缓冲任务的“从……连接”任务和“连接到……”任务。参考缓冲任务(231)和由缓冲任务(231)连接的任务对(T1)至(T2),任务(T1)称为“从……连接”任务,而任务(T2)称为缓冲任务(231)的“连接到……”任务。工作流(200B)包括与七个缓冲任务(231)至(237)相对应的七个任务对。
在任务对(包括“从……连接”任务和“连接到……”任务)之间添加缓冲任务可以允许“从……连接”任务运行,生成输出,并在“连接到……”任务不运行时填充为缓冲任务配置的缓冲器。“从……连接”任务可以运行直到缓冲器已满或部分满(例如,X%满),并且“从……连接”任务可以具有足够多供处理的数据,供处理的数据来自连接到“从……连接”任务的一个或多个输入的一个或多个缓冲器。
任务(例如,(T1))可以独立于工作流(200B)中的其它任务(例如,(T2)值(T6))运行的时间量可以由连接到任务的一个或多个输入和一个或多个输出的缓冲任务来定义。连接到一个或多个任务输入的一个或多个缓冲任务可以称为输入缓冲任务(或输入缓冲器),而连接到一个或多个任务输出的一个或多个缓冲任务可以称为一个或多个输出缓冲任务(或一个或多个输出缓冲器)。通常,缓冲器的大小或队列的大小(或如上所述的缓冲长度)和满度水平(诸如由X%描述)可以定义任务可以运行的步骤的最大大小(或长度)(或最大步长)。例如,当缓冲器长度为10帧并且满度水平是80%时,步骤的最大长度或最大步长为8帧。
在示例中,对于工作流(200B)中的任务(例如,(T2)),当任务的一个或多个输入缓冲器(例如,(231))中没有一个为空并且任务的一个或多个输出缓冲器(例如,(232)至(233))中没有一个为满时,任务(例如,(T2))可以独立于工作流(200B)中的其它任务(例如,(T1)和(T3)至(T6))运行。在示例中,当任务的一个或多个输入缓冲器中没有一个为空并且任务的一个或多个输出缓冲器中没有一个为X%满(其中X是小于100的预配置值)时,任务(例如,(T2))可以独立于工作流(200B)中的其它任务(例如,(T1)和(T3)至(T6))运行。
在示例中,步进工作流中的一个或多个任务可以运行以处理数据,而步进工作流中的其余任务不运行。参考图2B,如果省略了缓冲任务(231),则任务(T1)至(T2)可运行,以同时处理数据,而任务(T3)至(T6)未运行且处于非运行状态(例如,暂停状态)。
将常规(非基于步骤的)工作流转换为基于步骤的工作流的优点如下所述。该转变相对简单并且不取决于工作流的拓扑结构或复杂性,因此可以以无监督方式执行。
可以独立地定义每个缓冲功能或缓冲任务的缓冲长度。因此,工作流中的缓冲任务的缓冲器长度可以是不同的。可以不同地选取每个任务的步长。因此,工作流(200B)中的任务(T1)至(T6)的步长可以是不同的。
图3示出了根据本公开的实施例的基于步骤的工作流中的任务(301)的示例。任务(301)可以从对应的功能中实例化。在示例中,要由工作流处理的媒体数据可以包括媒体数据的多个子集。在一个步骤中,任务(301)可以处理媒体数据的多个子集中具有步长(302)的一个子集。在示例中,当任务(301)处理媒体数据的多个子集的所述一个子集时,工作流中的其它任务不运行。在另一示例中,当任务(301)处理媒体数据的多个子集的所述一个子集时,工作流中的一个或多个其它任务同时运行,而工作流中的其余任务不运行。任务(301)可以在另一步骤中处理媒体数据的多个子集中具有该步长(302)的另一子集。
任务(301)可以实施任何合适的媒体处理方法,诸如视频拼接。例如,来自第一摄像头的视频1和来自第二摄像头的视频2可以由任务(301)基于元数据拼接。任务(301)可以输出作为已拼接视频的视频3以及视频4。视频4可以对应于不同操作,诸如编索引。对于包括以步长为10帧的步进模式实施的任务(301)的基于步骤的工作流,在每个步骤中拼接来自视频1的10帧和来自视频2的10帧,以输出视频3的10帧。
如上文参考图4A所述,处理任务或某个任务(例如,媒体处理任务)可以在不同状态中转变。任务生命周期中的不同状态可以包括实例化状态(401)、空闲状态(402)、运行状态(403)、错误状态(404)、销毁状态(405)等。
图5示出了根据本公开的实施例的处理任务或某个任务(例如,媒体处理任务)的示例性任务生命周期(500)。在示例中,任务生命周期(500)是延长的任务生命周期(例如,经NBMP延长的任务生命周期)(500)。根据本公开的各方面,暂停状态(406)可以添加到延长的任务生命周期(500)。与暂停状态(406)相关的新转变以虚线箭头示出。
在暂停状态(406)中,该任务可以停止任何操作,不接受输入,并且不生成输出。此外,在暂停状态(406)中,任务维护(例如,存储)该任务的状态信息(例如,一个或多个内部状态和存储器)。通常,处于暂停状态(406)的任务可以转变到其它状态,诸如运行状态(403)、错误状态(404)和销毁状态(405)。该任务可以(例如,通过onPause转变)将状态从运行状态(403)改变为暂停状态(406)。该任务可以(例如,通过OnContinue转变)将状态从暂停状态(406)改变为运行状态(403)。当在任务处于暂停状态(406)时发生错误时,任务状态可以(例如,通过OnError转变)改变为错误状态(404)。处于暂停状态(406)的任务可以(例如,通过onTermination转变)改变为销毁状态。
将任务生命周期(400)延长为延长的任务生命周期(500)的益处是:添加具有有限转变(由图5中虚线箭头指示的四个转变)的一个附加状态(暂停状态),并且因此不添加显著的复杂性。
图6示出了概述根据本公开的实施例的方法(600)的流程图。方法(600)可以应用于步进工作流的操作,该步进工作流具有任何合适数量的一个或多个工作流输入和任何合适数量的一个或多个工作流输出。步进工作流可以包括任何合适数量的处理任务和连接两个任务的任何合适的链接(或连接)。步进工作流可以包括一个或多个缓冲任务(例如,一个或多个FIFO任务),并且可以在相应的链路处提供一个或多个缓冲任务。步进工作流中的处理任务的步长可以由一个或多个缓冲任务来确定。
在示例中,步进工作流是工作流(200B)。任务(T1)至(T6)中的每一个可以具有任务生命周期(500)、不同状态(401)至(406)以及参考图5描述的对应转变。在示例中,步进工作流(200B)处于空闲状态(412),并且用于缓冲任务(例如,FIFO任务)(231)至(237)的缓冲器(例如,FIFO缓冲器或FIFO队列)为空。在示例中,要处理的输入数据(例如,媒体数据)包括1000帧。步长为10帧。因此,输入数据划分为多个子集,其中每个子集的大小为10帧。
工作流(200B)的逐步(或基于步骤的、步进的)操作可以如下实施。任何合适的数据处理系统(例如,NBMP系统)可以实施工作流(200B)的逐步操作。下文的描述是针对数据处理系统(100)给出的,并且可以适当地适于任何合适的数据处理系统(例如,NBMP系统)。
在(S610)处,例如工作流管理器(103)可以识别具有一个或多个工作流输入的一个或多个初始任务。一个或多个初始任务中的每一个的一个或多个输入可以是一个或多个工作流输入。例如,一个或多个初始任务的所有输入连接到数据源(例如,媒体源)(111)。一个或多个初始任务可以标记为Ti0、Ti1、……、TiN,其中N是非负整数。参考图2B,在工作流(200B)中识别的一个或多个初始任务包括任务(T1),其中Ti0是T1并且N是0。
在(S620)处,对于每个初始任务,初始任务运行,直到相应的输出FIFO任务发出FULL事件并将初始任务移动到“暂停”状态。对于已识别的一个或多个初始任务,Ti0可以开始运行以处理输入数据的子集(例如,10帧),随后是Ti1、……、TiN。对于一个或多个初始任务中的每一个,初始任务可以运行例如一个步骤,直到相应的缓冲任务(例如,FIFO任务)的对应输出缓冲器(例如,FIFO队列)为满。在这里,初始任务是任务(T1)。
工作流管理器(103)可以向任务(T1)发送请求,并将任务(T1)转变成运行状态(403)。
任务(T1)可以例如运行,以处理输入数据(例如,媒体数据)的10帧,并且填充输出缓冲任务(231)例如直到第一阈值。当存储在输出缓冲器中的数据量等于第一阈值时,输出缓冲任务可以生成事件并向工作流管理器(103)发送通知。当输出缓冲任务(231)为X%满时,输出缓冲任务(231)可以发出或生成X%满事件,并将X%满(X%FULL)事件的通知发送到工作流管理器(103)。可以基于缓冲器长度和参数X来确定第一阈值。例如,缓冲器长度是20帧,并且X是50,然后第一阈值是10帧。可以基于一个或多个缓冲任务的阈值来确定处理任务的步长。
如上所述,X%满可以指示输出缓冲任务(231)全满或部分满,其中X小于或等于100。在示例中,当输出缓冲任务(231)全满(例如,X=100)时,输出缓冲任务(231)可以发出FULL事件并向工作流管理器(103)发送通知。在另一示例中,当输出缓冲任务(231)部分满(例如,X小于100)时,输出缓冲任务(231)可以发出部分FULL事件并向工作流管理器(103)发送通知。FULL事件和部分FULL事件可以相同或不同。在示例中,部分FULL事件与FULL事件相同,并且因此当输出缓冲任务(231)为X%满时,生成FULL事件。
工作流管理器(103)可以向任务(T1)发送针对将任务(T1)从运行状态(403)转变成暂停状态(406)的请求。在暂停状态(406)中,维护(例如,存储)任务(T1)的状态信息(例如,内部功能的状态和值)。
可以对一个或多个初始任务中的每一个重复执行(S620)。上述对(T1)的描述可以适当地适于一个或多个其它初始任务。
在(S630)处,识别具有非空FIFO任务作为输入的后续任务。工作流管理器(103)可以识别一个或多个后续任务,其中一个或多个后续任务的所有输入连接到一个或多个非空缓冲任务(例如,FIFO任务)。一个或多个后续任务可以标记为Tj0、Tj1、……、TjM,其中M是非负数。参考图2B,一个或多个非空缓冲任务包括缓冲任务(231),缓冲任务(231)存储由任务(T1)处理的输入数据的子集。在(S630)处识别的一个或多个后续任务包括任务(T2),并且因此Tj0=T2,并且M为0。
在(S640)处,对于每个后续任务,运行后续任务,直到相应的输出FIFO任务发出完整事件,并将后续任务移至“暂停”状态。对于所识别的一个或多个后续任务,Tj0可以开始运行,以进一步处理输入数据的子集,随后是Tj1、……、TjM。对于一个或多个后续任务中的每一个,后续任务可以运行直到对应的输出缓冲任务(例如,相应FIFO任务的FIFO队列)为满。这里,后续任务是(T2)。
工作流管理器(103)可以向任务(T2)发送请求,使任务(T2)转变到运行状态(403)。
例如,任务(T2)可以运行,以进一步处理要由(T1)处理的10帧,并填充一个或多个输出缓冲任务(例如,(232)至(233)),例如直到第二阈值。
当输出缓冲任务中一个(例如,(232)或(233))为X%满时,这个输出缓冲任务可以发出或生成X%满事件,并将X%满事件的通知发送到工作流管理器(103),如上所述。
工作流管理器(103)可以向任务(T2)发送针对使任务(T2)从运行状态(403)转变到暂停状态(406)的请求。在暂停状态(406)中,可以维护任务(T2)的内部信息(例如,内部功能的状态和值)。
可以对一个或多个后续任务中的每一个重复执行(S640)。上述对任务(T2)的描述可以适当地适于一个或多个其它后续任务。
在(S650)处,确定其余任务是具有非空FIFO任务作为输入的后续任务。确定要处理的其余任务是否是后续任务。如上所述,后续任务的所有输入是非空缓冲任务。当确定其余任务是后续任务时,方法(600)返回到(S630),并且因此对新识别的一个或多个后续任务重复执行(S630)和(S640)。当没有其余任务被确定为后续任务时,方法(600)继续执行(S660)。
例如,任务(T3)是新识别的后续任务,并且对任务(T3)重复执行(S640)。随后,重复执行(S650)和(S630),并且因此将任务(T4)至(T5)识别为新的后续任务,并且对于(T4)至(T5)重复执行(S640)。最后,识别(T6),并且对(T6)重复执行(S640)。
通常,对具有连接到一个或多个非空缓冲任务的输入的其余后续任务重复执行(S630)和(S640),直到工作流(200B)中的所有任务例如运行以处理10帧。因此,没有其余任务被确定为后续任务时,过程(600)继续执行(S660)。
在(S660)处,确定输入数据是否仍然待处理。当确定没有输入数据要处理时,处理(600)进行到(S699)并终止。当确定有输入数据要处理时,方法(600)返回到(S610),并且对输入数据的另一子集(例如,另外10帧)重复执行(S610)、(S620)、(S630)、(S640)和(S650)。
可以适当地调整方法(600)。可以修改和/或省略过程(600)中的一个或多个步骤。可以增加附加的一个或多个步骤。可以使用任何合适的实施顺序。在上述示例中,在一个步骤中,当一个任务运行时,工作流(200B)中的其它任务不运行(例如,处于暂停状态(406))。在另一示例中,一个或多个任务可以在一个步骤中同时运行,而工作流中的其它任务未运行(例如,处于暂停状态(406))。工作流(200B)中的任务可以在一个步骤中运行,并且然后转变到暂停状态(406)。随后,另一任务可以在另一步骤中运行。可选地,工作流(200B)中的任务可以在转变到暂停状态(406)之前,在连续步骤中运行。
方法(600)和/或逐步工作流(200B)的益处可以描述如下。对于数据处理系统(例如,NBMP系统)(100)(例如,工作流管理器(103))执行方法(600)而言,该逻辑是简单的。传播模型可以从一个或多个工作流输入开始并执行每个任务的一个步骤,随后是连接到该任务的输出的任务。方法(600)和/或工作流(200B)可以在多个步骤中生成工作流的一个或多个输出。所述多个步骤可以由事件触发,因此工作流管理可以非常有效。
如图5所示,将暂停状态(406)添加到数据处理操作(例如,NBMP操作)。例如,通用描述符具有描述任务状态的状态参数。状态参数可以使用值“paused”或“pause”来描述暂停状态(406)。
为了将任务设置为暂停状态(406),工作流管理器(103)可以使用CreateTask或UpdateTask,其中状态参数被设置为“paused”或“pause”。如果任务正运行(例如,在运行状态(403)中),则任务可以进入到暂停状态(406)。如果任务未运行(例如,在空闲状态(402)中),则任务可以例如从空闲状态(402)转到运行状态(403),并且然后从运行状态(403)转变到暂停状态(406)。
暂停状态(406)可以由云平台管理,并且因此,例如当任务处于暂停状态(406)时,云资源管理器可以存储任务的内部状态和数据。
在示例中,将暂停状态添加到工作流的工作流生命周期。工作流生命周期中的不同状态可以包括实例化状态(411)、空闲状态(412)、运行状态(413)、错误状态(414)和销毁状态(415),如图4B所示。此外,不同状态可以包括暂停状态。在示例中,工作流在暂停状态与运行状态(413)、错误状态(414)和销毁状态(415)之一之间转变。在示例中,当工作流处于暂停状态时,可以存储工作流的状态信息。
如下所述,可以确定缓冲器长度(例如,FIFO长度)。缓冲器长度是缓冲功能的配置参数。在示例中,缓冲器长度是缓冲功能的唯一配置参数。如果缓冲器长度为零,则通过与缓冲功能相对应的缓冲任务连接的两个任务不能以步进模式操作。在示例中,当缓冲器长度为零时,通过FIFO任务连接的两个任务同时操作或以连续模式操作。如果缓冲器长度是无限的,则连接到缓冲任务的任务可以在第一步骤中操作,在第一步骤中完全地处理数据。然后,从缓冲任务连接的另一任务可以在第二步骤中操作。
在各个示例中,缓冲器长度在零与无限之间变化。缓冲器长度的选择可以取决于各种因素,包括每个任务的功能性、每个任务中的数据处理的粒度、生成输出的任务的输入的最小适当尺寸、部署工作流和工作流中的任务的底层系统中的存储器、存储装置和/或缓冲器的可用性等。
基于步骤的工作流的上述设计可以应用于整个工作流,例如,在工作流输入和/或工作流输出处,实施缓冲任务来逐步执行工作流。上述方法的益处在于,尽管工作流的各个任务可能不是步进的,但是工作流可以分步骤进行处理。因此,可以逐步执行工作流。因此,当平台资源不可连续用于在一个步骤中执行整个会话时,一个或多个工作流可以运行,而其余工作流未运行(例如,处于暂停状态)。当工作流是多工作流设置的一部分并且每个工作流可以逐步执行时,不是所有的工作流都同时运行。
图2C示出了根据本公开的实施例的工作流(200C)的示例。工作流(200C)包括多个处理任务(或多个任务)(T4)至(T9)。在示例中,在处理任务(T4)至(T9)中的两者之间没有插入缓冲任务,并且处理任务(T4)至(T9)可以同时运行以处理数据并且并非步进的。可以将一个或多个缓冲任务插入一个或多个工作流输入和/或一个或多个工作流输出中,因此工作流(200C)可以以步进模式或一次一个步骤地运行。步长可以基于缓冲器长度和如X%满度所定义的X来确定。在示例中,在工作流输入(255)处提供缓冲任务(271),并且在工作流输出(263)处提供缓冲任务(272)。在示例中,工作流(200C)运行以处理数据,直到满足以下条件之一:(i)存储在缓冲任务(271)中的数据提供给工作流(200C)(例如,缓冲任务(271)为空),以及(ii)存储在缓冲任务(272)中的数据量等于为缓冲任务(272)设置的阈值。可以基于缓冲器长度和参数X来确定阈值。在示例中,步长与阈值匹配。当工作流包括一个或多个步进任务时,可以适当地调整对工作流(200C)的以上描述。
图2D示出了根据本公开的实施例的多个工作流(280)的示例。多个工作流(280)可以包括具有工作流(200C)和工作流(200D)的工作流的级联。工作流(200C)在图2C中描述。工作流(200D)包括处理任务(T1)至(T3),其中工作流输入(251)向任务(T1)提供输入数据,而工作流输出(255)向工作流(200C)提供输入数据。因此,工作流(200D)的工作流输出(255)是工作流(200C)的工作流输入(255)。
缓冲任务(271)插入工作流(200C)与(200D)之间,因此多个工作流(280)以步进模式运行,其中工作流(200D)运行以处理数据,而工作流(200C)处于非运行状态并且不会运行来处理数据。
当在工作流输入或工作流输出处提供缓冲任务时,工作流可以以步进模式运行。工作流(工作流中的任务)可以运行的步长可以基于阈值来确定,该阈值例如为在为缓冲任务配置的缓冲器中可存储的最大数据量。可以基于缓冲器长度和X%中的参数X来确定该阈值。
根据本公开的各方面,通过使用简单的缓冲功能(或缓冲任务),可以将包括不可步进任务的常规工作流(或非步进工作流)转换为包括一个或多个可步进任务的可步进工作流。缓冲功能或任务可以有效地在所有合适的平台中实施。每个缓冲任务的缓冲器长度的选择可以是灵活的,并且因此可以高灵活性地设计每个任务的步长。事件(例如,FULL事件)驱动的步骤处理可以简化设计并高效地管理工作流。用于通过每个任务执行一个步骤来传播工作流的工作流算法是简单的。工作流的一个或多个输出可以分步骤生成。从任务生命周期(400)到延长的任务生命周期(500)的延长是最小的,因此由于延长而增加的复杂度是最小的。尽管缓冲长度用作缓冲器任务的配置的示例,但是该配置也可以利用其它单元。
根据本公开的各方面,当为工作流输入、工作流输出或在工作流中的两个任务之间提供缓冲任务时,工作流可以以步进模式运行。工作流可以逐步运行,因此当数据输入到工作流时,工作流不会连续运行来处理数据(例如,媒体数据)。相反,工作流可以在第一步骤中处理第一数据子集。在输出已处理的第一数据子集之后,工作流可以在第二步骤中处理第二数据子集。工作流(工作流中的任务)为在每个步骤中处理数据而运行的步长可以基于阈值来确定,该阈值例如为在为缓冲任务配置的缓冲器中可存储的最大数据量。该阈值可以基于缓冲器长度和X%中的参数X来确定。
可以使用任何合适的方法来实现逐步工作流。在示例中,工作流可以包括在工作流中的任务之间提供的一个或多个缓冲任务(例如,FIFO任务),如图2B所示。工作流中的一个或多个任务可以同时运行在运行状态中,而其它任务处于非运行状态(例如,一个或多个暂停状态),因此减少在同时运行所有任务中使用的资源(例如,计算资源、存储器资源)。
根据本公开的各方面,处理电路可以接收工作流的工作流信息。基于工作流信息,生成工作流以处理输入数据。工作流可以包括多个处理任务和一个第一缓冲任务。多个处理任务可以包括第一处理任务和第二处理任务。使第一处理任务进入运行状态(403),其中第一处理任务处理输入数据的第一子集,并将已处理的所述第一子集作为第一已处理的子集数据输出到第一缓冲任务。在示例中,随后,基于存储在第一缓冲任务中的第一已处理的子集数据的量等于第一阈值,使第一处理任务从运行状态(403)转变到暂停状态(406)。存储处于暂停状态(406)的第一处理任务的状态信息。在第一处理任务转变到暂停状态(406)之后,使第二处理任务进入运行状态(403),其中由处于运行状态(403)第二处理任务对存储在第一缓冲任务中的第一已处理的子集数据进行处理。在示例中,输入数据的第一子集是输入数据的多个子集之一。
在实施例中,处于运行状态的第二处理任务可以将已处理的第一已处理的子集数据作为第二已处理的子集数据输出到第二缓冲任务。此外,使第二处理任务基于以下之一从运行状态转变到暂停状态:(i)存储在第二缓冲任务中的第二已处理的子集数据的量等于第二阈值,以及(ii)存储在第一缓冲任务中的第一已处理的子集数据的量被提供给第二处理任务。存储处于暂停状态的第二处理任务的状态信息。
第一缓冲任务可以被配置为生成指示存储在第一缓冲任务中的第一已处理的子集数据的量等于第一阈值的事件。在示例中,第一缓冲任务是配置有FIFO缓冲器的FIFO任务。FIFO长度可以等于或大于第一阈值。FIFO任务可被配置为生成指示存储在FIFO任务中的第一已处理的子集数据的量等于第一阈值的事件(例如,满事件)。FIFO任务可被配置为生成指示存储在FIFO任务中的第一已处理的子集数据的量被提供给第二处理任务的另一事件(例如,空事件)。
在实施例中,工作流包括多个缓冲任务,缓冲任务包括第一缓冲任务。多个处理任务的每个输入来自以下任一状态之间的转变:输入数据和多个缓冲任务中的一个或多个,并且在任何时间点,仅允许多个处理任务中的一个处于运行状态。在示例中,输入数据包括输入数据的第一子集和输入数据的另一子集(也可以称为第二子集)。输入数据的子集可以由多个处理任务顺序地处理。在多个处理任务处理输入数据的第一子集之后,多个处理任务可以顺序地处理输入数据的第二子集,而多个处理任务中的除处于运行状态的处理任务之外的其余处理任务处于暂停状态。
在另一示例中,不在工作流中的任务之间提供缓冲任务。相反,缓冲任务提供给工作流的工作流输入和工作流输出,如图2C至图2D所示。因此,工作流可以逐步运行,并且占用资源的时间(例如,用于运行步骤的时间)相对较短,并且可以为步骤之间具有较高优先级的其它工作流/任务释放资源(例如,计算资源、存储器资源)。
根据本公开的各方面,处理电路可以接收多个工作流的工作流信息。基于工作流信息,可以生成多个工作流以处理输入数据。多个工作流中的至少一个包括多个处理任务。多个工作流可以包括第一工作流和第二工作流。使第一工作流进入运行状态(403),其中由第一工作流处理输入数据的第一子集,并将已处理的第一子集作为第一已处理的子集数据输出到缓冲任务。基于存储在缓冲任务中的第一已处理的子集数据的量等于阈值,使第一工作流从运行状态(403)转变到暂停状态(406)。存储处于暂停状态(406)的第一工作流的状态信息。在将第一工作流转变到暂停状态(406)之后,可以使第二工作流进入运行状态(403),其中由在运行状态(403)中的第二工作流对存储在缓冲任务中的第一已处理的子集数据进行处理。在示例中,输入数据的所述第一子集是输入数据的多个子集之一。以上对第一缓冲任务的描述可以应用于这里的缓冲任务,因此为了简洁起见省略了详细描述。
步长可以例如基于缓冲任务的属性而变化。在示例中,步长等于或大于要处理的整个数据的长度,并且因此一个步骤用于工作流或用于每个任务。可选地,可以将数据分成分块(例如,数据的多个子集)并且执行多个步骤以处理多个分块中的数据。
NBMP FIFO功能可以使用FIFO缓冲器操作。FIFO功能可以在FIFO缓冲器为空、为满或部分满时发出事件。
在实施例中,使用缓冲功能(例如,NBMP FIFO功能)或缓冲任务(例如,FIFO任务),将常规或非步进工作流转换为步进工作流(例如,工作流(200B))。可步进工作流可以使得一次一个步骤执行可步进工作流中的每个任务,而可步进工作流中的其它任务处于‘暂停’状态(406)。当处于暂停状态(406)时,其它任务正休眠。例如,其它任务中的每一个停止操作,不接受输入,并且不生成输出,并且维护处于暂停状态(406)的任务的状态信息(例如,相应的内部信息)。
工作流可以在多阶段过程中通过一次执行一个任务并且逐步地按步骤操作,因此工作流可以按步骤处理数据并产生输出。已处理的数据可以存储在配置用于缓冲任务的缓冲器中,以在下一阶段进一步处理。因此,数据可以按步骤移动通过工作流中的任务,并且工作流的输出可以按步骤生成。
延长的任务生命周期(500)包括能够保存任务的内部状态和数据的暂停状态。当任务处于暂停状态时,保存任务的内部状态和数据。任务的内部状态和数据可以用于下一步骤。
用于管理具有延长的任务生命周期(500)的任务的一组新操作可能能够将每个任务的状态改变为暂停状态或从暂停状态改变为另一状态。
工作流级联中的工作流可以在工作流输入和工作流输出中包含缓冲任务,因此可以按步骤处理工作流。图7示出了概述根据本公开实施例的方法(700)的流程图。在示例中,使用数据处理系统(例如,NBMP系统)(100)来实施方法(700),以处理输入数据,例如媒体数据。在一些实施例中,方法(700)在软件指令中实现,因此当处理电路执行软件指令时,处理电路执行方法(700)。方法始于(S701)并进行到(S710)。
在(S710)处,接收工作流的工作流信息。在示例中,工作流信息由工作流管理器(例如,工作流管理器(103))从数据处理源(例如,NBMP源(101))接收。
在(S720)处,基于工作流信息,生成要处理输入数据的工作流。该工作流包括多个处理任务和第一缓冲任务。多个处理任务可以包括第一处理任务和第二处理任务。该工作流是步进工作流,如图2B所述。第一缓冲任务可以如上所述从相应的缓冲功能实例化。在示例中,输入数据包括具有子集的输入数据的多个子集。在示例中,输入数据的每个子集的大小对应于第一阈值。
在(S730)处,使第一处理任务进入运行状态。其中,输入数据的第一子集由第一处理任务处理,并将经处理的所述第一子集作为第一已处理的子集数据输出到第一缓冲任务。例如,当第一处理任务处于运行状态以处理输入数据的第一子集时,第二处理任务处于非运行状态(例如暂停状态),如上所述。第一缓冲任务可配置为存储第一已处理的子集数据,并将第一已处理的子集数据提供给第二处理任务。
在(S740)处,基于存储在第一缓冲任务中的第一已处理的子集数据的量等于第一阈值,使第一处理任务从运行状态转变为暂停状态。存储处于暂停状态的第一处理任务的状态信息。
在示例中,当存储在第一缓冲任务中的第一已处理的子集数据的量等于第一阈值时,例如由第一缓冲任务生成事件(例如,FULL事件、X%事件),并可向工作流管理器发送通知。换言之,第一缓冲任务被配置为生成指示存储在所述第一缓冲任务中的第一已处理的子集数据的所述量等于第一阈值的事件。随后,工作流管理器可向第一处理任务发送请求,并使第一处理任务从运行状态转变为暂停状态。
在示例中,当缓冲任务(称为输入缓冲任务)向第一处理任务提供输入并且将缓冲任务中存储的数据提供给第一处理任务时,使第一处理任务从运行状态转变到暂停状态。例如,当缓冲任务中存储的数据提供给第一处理任务时,缓冲任务可以产生空事件,并且向工作流管理器发送通知。随后,工作流管理器可以向第一处理任务发送请求,并使第一处理任务从运行状态转变为暂停状态。
在一个实施例中,第一缓冲任务是配置有先入先出FIFO缓冲器的FIFO任务,所述FIFO缓冲器具有等于或大于所述第一阈值的FIFO长度。FIFO任务被配置为:生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量等于所述第一阈值的所述事件;以及生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量被提供给所述第二处理任务的另一事件。
在示例中,当存储在输入缓冲任务中的数据提供给第一处理任务,或者存储在第一缓冲任务中的第一已处理的子集数据的量等于第一阈值时,使第一处理任务从运行状态转变到暂停状态。
在(S750)处,在第一处理任务转变到暂停状态后,使第二处理任务进入运行状态,其中在运行状态下,由第二处理任务对存储在第一缓冲任务中的第一已处理的子集数据进行处理。在示例中,第一处理任务处于暂停状态,而第二个处理任务运行以处理第一已处理的子集数据。因此,第一处理任务和第二处理任务不同时运行,而是顺序运行。
方法(700)可适当调整。可以修改和/或省略方法(700)中的步骤。可以添加其他步骤。可以使用任何合适的实施顺序。
在示例中,处于运行状态的第二处理任务将已处理的第一已处理的子集数据作为第二已处理的子集数据,输出到第二缓冲任务。第二缓冲任务可被配置为存储第二已处理的子集数据,并将第二处理子集数据提供给多个处理任务中的第三处理任务。在(S750)之后,基于以下之一使第二处理任务从运行状态转变到暂停状态:(i)存储在第二缓冲任务中的第二已处理的子集数据的量等于第二阈值,以及(ii)存储在第一缓冲任务中的第一已处理的子集数据量被提供给第二处理任务(例如,为第一缓冲任务配置的缓冲器为空)。存储处于暂停状态的第二处理任务的状态信息。
在一个实施例中,第一处理任务的生命周期包括在所述暂停状态与以下任一状态之间的转变:所述运行状态、错误状态和销毁状态。
在一个实施例中,所述工作流包括多个缓冲任务。所述多个缓冲任务包括所述第一缓冲任务。所述多个处理任务的每个输入来自以下中的一个:所述输入数据和所述多个缓冲任务中的一个或多个。并且在任何时间点,仅允许所述多个处理任务中的一个处于所述运行状态。
在一个实施例中,所述输入数据包括所述输入数据的所述第一子集和所述输入数据的第二子集。工作流包括多个缓冲任务,所述多个缓冲任务包括所述第一缓冲任务。多个处理任务的每个输入来自以下中一个:所述输入数据和所述多个缓冲任务中的一个或多个。在所述多个处理任务处理所述输入数据的所述子集之后,所述多个处理任务顺序地处理所述输入数据的第二子集,所述多个处理任务中的除处于所述运行状态的处理任务之外的其余处理任务处于暂停状态。在任何时间点,仅允许多个处理任务之一处于运行状态。
图8示出了概述根据本公开实施例的方法(800)的流程图。在示例中,使用数据处理系统(例如,NBMP系统)(100)来实施方法(800),以处理输入数据,例如媒体数据。在一些实施例中,方法(800)在软件指令中实现,因此当处理电路执行软件指令时,处理电路执行方法(800)。方法始于(S801)并进行到(S810)。
在(S810)处,接收多个工作流的工作流信息。在示例中,工作流信息由工作流管理器(例如,工作流管理器(103))从数据处理源(例如,NBMP源(101))接收。
在(S820)处,基于工作流信息,生成用于处理输入数据的多个工作流。多个工作流中的至少一个可以包括多个处理任务。所述多个工作流可以包括第一工作流和第二工作流。第一工作流和第二工作流中的至少一个具有输入缓冲任务或输出缓冲任务,如上文中图2C的描述。
在(S830)处,使第一工作流进入运行状态,其中第一工作流处理输入数据的第一子集,并将经处理的所述第一子集作为第一已处理的子集数据输出到缓冲任务。例如,当第一工作流处于运行状态以处理输入数据的子集时,第二工作流处于非运行状态(例如,暂停状态),如上所述。在示例中,缓冲任务可以配置为存储第一已处理的子集数据,并将第一已处理的子集数据提供给第二工作流。缓冲任务可以如上所述从相应的缓冲功能实例化。
在(S840)处,基于存储在缓冲任务中的第一已处理子集数据的量等于阈值,使第一工作流从运行状态转变为暂停状态。存储处于暂停状态的第一工作流的状态信息。
在示例中,缓冲任务被配置为生成指示存储在缓冲任务中的所述第一已处理的子集数据的量等于阈值的事件。当缓冲任务中存储的第一已处理的子集数据的量等于阈值时,例如由缓冲任务生成事件(例如,FULL事件、X%事件),并向工作流管理器发送通知。随后,工作流管理器可向第一工作流发送请求,并使第一工作流从运行状态转变为暂停状态。
在一个实施例中,缓冲任务是配置有先入先出FIFO缓冲器的FIFO任务,所述FIFO缓冲器具有等于或大于所述阈值的FIFO长度。FIFO任务被配置为:生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量等于所述阈值的所述事件;以及生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量被提供给所述第二工作流的另一事件。在示例中,当缓冲任务(称为输入缓冲任务)向第一工作流提供输入,并且将输入缓冲任务中存储的数据提供给第一工作流时,使第一工作流从运行状态转变到暂停状态。例如,当输入缓冲任务中存储的数据提供给第一工作流时,输入缓冲任务生成空事件,并且向工作流管理器发送通知。随后,工作流管理器可向第一工作流发送请求,并使第一工作流从运行状态转变为暂停状态。
在示例中,当输入缓冲任务中存储的数据提供给第一工作流,或者缓冲任务(或输出缓冲任务)中存储的第一已处理的子集数据的量等于阈值时,使第一工作流从运行状态转变到暂停状态。
在(S850)处,在第一工作流转变到暂停状态后,使第二工作流进入运行状态,其中在运行状态下由第二工作流对存储在缓冲任务中的第一已处理的子集数据进行处理。在示例中,第一个工作流处于暂停状态,而第二个工作流运行以处理第一已处理的子集数据。因此,第一个工作流和第二个工作流不会同时运行,而是按顺序运行。
方法(800)可适当调整。可以修改和/或省略方法(800)中的步骤。可以添加其他步骤。可以使用任何合适的实施顺序。上述技术可以通过计算机可读指令实现为计算机软件,并且物理地存储在一个或多个计算机可读介质中。本公开中的方法和实施例可以单独使用或以任何顺序组合使用。此外,每个方法(或实施例)、功能或任务可以通过处理电路(例如,一个或多个处理器或一个或多个集成电路)来实现。在一个示例中,一个或多个处理器执行存储在非暂时性计算机可读介质中的程序。
上述技术可以通过计算机可读指令实现为计算机软件,并且物理地存储在一个或多个计算机可读介质中。例如,图9示出了计算机系统(900),其适于实现所公开主题的某些实施例。
所述计算机软件可通过任何合适的机器代码或计算机语言进行编码,通过汇编、编译、链接等机制创建包括指令的代码,所述指令可由一个或多个计算机中央处理单元(CPU),图形处理单元(GPU)等直接执行或通过译码、微代码等方式执行。
所述指令可以在各种类型的计算机或其组件上执行,包括例如个人计算机、平板电脑、服务器、智能手机、游戏设备、物联网设备等。
图9所示的用于计算机系统(900)的组件本质上是示例性的,并不用于对实现本申请实施例的计算机软件的使用范围或功能进行任何限制。也不应将组件的配置解释为与计算机系统(900)的示例性实施例中所示的任一组件或其组合具有任何依赖性或要求。
计算机系统(900)可以包括某些人机界面输入设备。这种人机界面输入设备可以通过触觉输入(如:键盘输入、滑动、数据手套移动)、音频输入(如:声音、掌声)、视觉输入(如:手势)、嗅觉输入(未示出),对一个或多个人类用户的输入做出响应。所述人机界面设备还可用于捕获某些媒体,气与人类有意识的输入不必直接相关,如音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静止影像相机获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。
人机界面输入设备可包括以下中的一个或多个(仅绘出其中一个):键盘(901)、鼠标(902)、触控板(903)、触摸屏(910)、数据手套(未示出)、操纵杆(905)、麦克风(906)、扫描仪(907)、照相机(908)。
计算机系统(900)还可以包括某些人机界面输出设备。这种人机界面输出设备可以通过例如触觉输出、声音、光和嗅觉/味觉来刺激一个或多个人类用户的感觉。这样的人机界面输出设备可包括触觉输出设备(例如通过触摸屏(910)、数据手套(未示出)或操纵杆(905)的触觉反馈,但也可以有不用作输入设备的触觉反馈设备)、音频输出设备(例如,扬声器(909)、耳机(未示出))、视觉输出设备(例如,包括阴极射线管屏幕、液晶屏幕、等离子屏幕、有机发光二极管屏的屏幕(910),其中每一个都具有或没有触摸屏输入功能、每一个都具有或没有触觉反馈功能——其中一些可通过诸如立体画面输出的手段输出二维视觉输出或三维以上的输出;虚拟现实眼镜(未示出)、全息显示器和放烟箱(未示出))以及打印机(未示出)。
计算机系统(900)还可以包括人可访问的存储设备及其相关介质,如包括具有CD/DVD的高密度只读/可重写式光盘(CD/DVD ROM/RW)(920)或类似介质(921)的光学介质、拇指驱动器(922)、可移动硬盘驱动器或固体状态驱动器(923),诸如磁带和软盘(未示出)的传统磁介质,诸如安全软件保护器(未示出)等的基于ROM/ASIC/PLD的专用设备,等等。
本领域技术人员还应当理解,结合所公开的主题使用的术语“计算机可读介质”不包括传输介质、载波或其它瞬时信号。
计算机系统(900)还可以包括通往一个或多个通信网络的接口。例如,网络可以是无线的、有线的、光学的。网络还可为局域网、广域网、城域网、车载网络和工业网络、实时网络、延迟容忍网络等等。网络还包括以太网、无线局域网、蜂窝网络(GSM、3G、4G、5G、LTE等)等局域网、电视有线或无线广域数字网络(包括有线电视、卫星电视、和地面广播电视)、车载和工业网络(包括CANBus)等等。某些网络通常需要外部网络接口适配器,用于连接到某些通用数据端口或外围总线(949)(例如,计算机系统(900)的USB端口);其它系统通常通过连接到如下所述的系统总线集成到计算机系统(900)的核心(例如,以太网接口集成到PC计算机系统或蜂窝网络接口集成到智能电话计算机系统)。通过使用这些网络中的任何一个,计算机系统(900)可以与其它实体进行通信。所述通信可以是单向的,仅用于接收(例如,无线电视),单向的仅用于发送(例如CAN总线到某些CAN总线设备),或双向的,例如通过局域或广域数字网络到其它计算机系统。上述的每个网络和网络接口可使用某些协议和协议栈。
上述的人机界面设备、人可访问的存储设备以及网络接口可以连接到计算机系统(900)的核心(940)。
核心(940)可包括一个或多个中央处理单元(CPU)(941)、图形处理单元(GPU)(942)、以现场可编程门阵列(FPGA)(943)形式的专用可编程处理单元、用于特定任务的硬件加速器(944)等。这些设备以及只读存储器(ROM)(945)、随机存取存储器(946)、内部大容量存储器(例如内部非用户可存取硬盘驱动器、固态硬盘等)(947)等可通过系统总线(948)进行连接。在某些计算机系统中,可以以一个或多个物理插头的形式访问系统总线(948),以便可通过额外的中央处理单元、图形处理单元等进行扩展。外围装置可直接附接到核心的系统总线(948),或通过外围总线(949)进行连接。外围总线的体系结构包括外部控制器接口PCI、通用串行总线USB等。
CPU(941)、GPU(942)、FPGA(943)和加速器(944)可以执行某些指令,这些指令组合起来可以构成上述计算机代码。该计算机代码可以存储在ROM(945)或RAM(946)中。过渡数据也可以存储在RAM(946)中,而永久数据可以存储在例如内部大容量存储器(947)中。通过使用高速缓冲存储器可实现对任何存储器设备的快速存储和检索,高速缓冲存储器可与一个或多个CPU(941)、GPU(942)、大容量存储器(947)、ROM(945)、RAM(946)等紧密关联。
所述计算机可读介质上可具有计算机代码,用于执行各种计算机实现的操作。介质和计算机代码可以是为本申请的目的而特别设计和构造的,也可以是计算机软件领域的技术人员所熟知和可用的介质和代码。
作为实施例而非限制,具有体系结构(900)的计算机系统,特别是核心(940),可以作为处理器(包括CPU、GPU、FPGA、加速器等)提供执行包含在一个或多个有形的计算机可读介质中的软件的功能。这种计算机可读介质可以是与上述的用户可访问的大容量存储器相关联的介质,以及具有非易失性的核心(940)的特定存储器,例如核心内部大容量存储器(947)或ROM(945)。实现本申请的各种实施例的软件可以存储在这种设备中并且由核心(940)执行。根据特定需要,计算机可读介质可包括一个或一个以上存储设备或芯片。该软件可以使得核心(940)特别是其中的处理器(包括CPU、GPU、FPGA等)执行本文所述的特定过程或特定过程的特定部分,包括定义存储在RAM(946)中的数据结构以及根据软件定义的过程来修改这种数据结构。另外或作为替代,计算机系统可以提供逻辑硬连线或以其它方式包含在电路(例如,加速器(944))中的功能,该电路可以代替软件或与软件一起运行以执行本文所述的特定过程或特定过程的特定部分。在适当的情况下,对软件的引用可以包括逻辑,反之亦然。在适当的情况下,对计算机可读介质的引用可包括存储执行软件的电路(如集成电路(IC)),包含执行逻辑的电路,或两者兼备。本申请包括任何合适的硬件和软件组合。

Claims (13)

1.一种用于处理工作流的方法,其特征在于,所述方法包括:
接收所述工作流的工作流信息;
基于所述工作流信息生成所述工作流,以处理输入数据,所述工作流包括多个处理任务和一个第一缓冲任务,所述多个处理任务包括第一处理任务和第二处理任务;
使所述第一处理任务进入运行状态,其中在所述运行状态下,所述第一处理任务处理所述输入数据的第一子集,并将已处理的所述第一子集作为第一已处理的子集数据输出到所述第一缓冲任务;
基于存储在所述第一缓冲任务中的所述第一已处理的子集数据的量等于第一阈值,使所述第一处理任务从所述运行状态转变到暂停状态,存储处于所述暂停状态的所述第一处理任务的状态信息;以及
在所述第一处理任务转变到所述暂停状态之后,使所述第二处理任务进入运行状态,其中在所述运行状态下,所述第二处理任务对存储在所述第一缓冲任务中的所述第一已处理的子集数据进行处理;
其中所述输入数据还包括第二子集;
所述工作流包括多个缓冲任务,所述多个缓冲任务包括所述第一缓冲任务;
所述多个处理任务的每个输入来自以下中一个:
所述输入数据和所述多个缓冲任务中的一个或多个;
通过所述多个处理任务顺序地处理所述输入数据的所述第一子集;
在所述多个处理任务处理所述输入数据的所述第一子集之后,所述多个处理任务顺序地处理所述输入数据的所述第二子集,所述多个处理任务中的除处于所述运行状态的处理任务之外的其余处理任务处于暂停状态;以及
在任何时间点,仅允许所述多个处理任务之一处于所述运行状态。
2.根据权利要求1所述的方法,其中,
所述第二处理任务被配置为将已处理的所述第一已处理的子集数据作为第二已处理的子集数据,输出到处于所述运行状态中的第二缓冲任务;并且
所述方法进一步包括:
使所述第二处理任务基于以下之一从所述运行状态转变到已暂停状态:(i)存储在所述第二缓冲任务中的所述第二已处理的子集数据的量等于第二阈值,以及(ii)存储在所述第一缓冲任务中的所述第一已处理的子集数据的所述量被提供给所述第二处理任务;存储处于所述暂停状态的所述第二处理任务的状态信息。
3.根据权利要求1所述的方法,其中,
所述第一缓冲任务被配置为生成指示存储在所述第一缓冲任务中的所述第一已处理的子集数据的所述量等于所述第一阈值的事件。
4.根据权利要求3所述的方法,其中,
所述第一缓冲任务是配置有先入先出FIFO缓冲器的FIFO任务,所述FIFO缓冲器具有等于或大于所述第一阈值的FIFO长度;并且
所述FIFO任务被配置为:
生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量等于所述第一阈值的所述事件;以及
生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量被提供给所述第二处理任务的另一事件。
5.根据权利要求1-4中任一项所述的方法,其中,所述输入数据的所述第一子集是所述输入数据的多个子集之一。
6.根据权利要求1-4中任一项所述的方法,所述第一处理任务的生命周期包括在所述暂停状态与以下任一状态之间的转变:所述运行状态、错误状态和销毁状态。
7.一种用于处理多个工作流的方法,其特征在于,所述方法包括:
接收所述多个工作流的工作流信息;
基于所述工作流信息生成所述多个工作流,以处理输入数据,所述多个工作流中的至少一个包括多个处理任务,所述多个工作流包括第一工作流和第二工作流;
使所述第一工作流进入运行状态,其中在所述运行状态下,所述第一工作流处理所述输入数据的第一子集,并将已处理的所述第一子集作为第一已处理的子集数据输出到缓冲任务;
基于存储在所述缓冲任务中的所述第一已处理的子集数据的量等于阈值,使所述第一工作流从所述运行状态转变到暂停状态,存储处于所述暂停状态的所述第一工作流的状态信息;以及
在所述第一工作流转变到所述暂停状态之后,使所述第二工作流进入运行状态,其中在所述运行状态下,所述第二工作流对存储在所述缓冲任务中的所述第一已处理的子集数据进行处理;
所述第一工作流包括多个处理任务,所述多个处理任务的每个输入来自以下中一个:
所述输入数据和所述多个缓冲任务中的一个或多个;
通过所述多个处理任务顺序地处理所述输入数据的所述第一子集;
在所述第一工作流处于运行状态时,所述多个处理任务中的除处于所述运行状态的处理任务之外的其余处理任务处于暂停状态;以及
在任何时间点,所述第一工作流仅允许所述多个处理任务之一处于所述运行状态。
8.根据权利要求7所述的方法,其中,
所述缓冲任务被配置为生成指示存储在所述缓冲任务中的所述第一已处理的子集数据的所述量等于所述阈值的事件。
9.根据权利要求8所述的方法,其中,
所述缓冲任务是配置有先入先出FIFO缓冲器的FIFO任务,所述FIFO缓冲器具有等于或大于所述阈值的FIFO长度;并且
所述FIFO任务被配置为:
生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量等于所述阈值的所述事件;以及
生成指示存储在所述FIFO任务中的所述第一已处理的子集数据的所述量被提供给所述第二工作流的另一事件。
10.根据权利要求7-9中任一项所述的方法,其中,所述输入数据的所述第一子集是所述输入数据的多个子集之一。
11.一种用于处理工作流的装置,其特征在于,所述装置包括处理电路,所述处理电路被配置为:执行如权利要求1-10中任一项所述的方法。
12.一种非易失性计算机可读存储介质,该介质存储有指令,当由计算机执行用于视频解码的指令时,使得计算机执行如权利要求1-10中任一项所述的方法。
13.一种计算机系统,其特征在于,所述计算机系统包括:
一个或多个计算机可读非易失性存储介质,被配置为存储计算机程序代码;以及
一个或多个计算机处理器,被配置为存取所述计算机程序代码并按照所述计算机程序代码的指令进行操作,以执行如权利要求1-10中任一项所述的方法。
CN202080032299.2A 2019-09-28 2020-09-25 用于处理工作流的方法、装置、计算机系统及存储介质 Active CN113795822B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962907626P 2019-09-28 2019-09-28
US62/907,626 2019-09-28
US17/027,569 US20210096904A1 (en) 2019-09-28 2020-09-21 Method and apparatus for a step-enabled workflow
US17/027,569 2020-09-21
PCT/US2020/052687 WO2021062134A1 (en) 2019-09-28 2020-09-25 Method and apparatus for a step-enabled workflow

Publications (2)

Publication Number Publication Date
CN113795822A CN113795822A (zh) 2021-12-14
CN113795822B true CN113795822B (zh) 2024-06-14

Family

ID=75161848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080032299.2A Active CN113795822B (zh) 2019-09-28 2020-09-25 用于处理工作流的方法、装置、计算机系统及存储介质

Country Status (6)

Country Link
US (1) US20210096904A1 (zh)
EP (1) EP4034988A4 (zh)
JP (1) JP7233560B2 (zh)
KR (1) KR102601576B1 (zh)
CN (1) CN113795822B (zh)
WO (1) WO2021062134A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11297121B2 (en) * 2020-04-07 2022-04-05 Tencent America LLC Split rendering using network based media processing workflow
US20220109722A1 (en) * 2020-10-07 2022-04-07 Nokia Technologies Oy Method and apparatus for dynamic workflow task management
US20220291949A1 (en) * 2021-03-09 2022-09-15 Ricoh Company, Ltd. Software service integration in a central software platform
US12069125B2 (en) * 2021-04-19 2024-08-20 Tencent America LLC Method for switching workflow or updating workflow with continuity and no interruption in dataflow
US20230019761A1 (en) * 2021-07-06 2023-01-19 Tencent America LLC Method and apparatus for scheduling workflow on cloud platforms

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104487948A (zh) * 2012-09-07 2015-04-01 甲骨文国际公司 用于与云计算环境一起使用的工作流编排的系统及方法
US9342063B1 (en) * 2013-09-19 2016-05-17 Amazon Technologies, Inc. Determining capacities of work buffers

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5289577A (en) * 1992-06-04 1994-02-22 International Business Machines Incorporated Process-pipeline architecture for image/video processing
JPH0793168A (ja) * 1993-09-21 1995-04-07 Fuji Electric Co Ltd タスク管理方式
JPH11143727A (ja) * 1997-11-05 1999-05-28 Nec Mobile Commun Ltd 入出力管理装置および方法
JP3983394B2 (ja) * 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
US6260082B1 (en) * 1998-12-23 2001-07-10 Bops, Inc. Methods and apparatus for providing data transfer control
JP3840045B2 (ja) 2000-08-04 2006-11-01 株式会社東芝 データ処理方法及びデータ処理装置
WO2006012496A2 (en) 2004-07-23 2006-02-02 Beach Unlimited Llc Trickmodes and speed transitions
US7571246B2 (en) * 2004-07-29 2009-08-04 Microsoft Corporation Media transrating over a bandwidth-limited network
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
JP2007200106A (ja) 2006-01-27 2007-08-09 Canon Inc データ処理装置、制御方法、及びプログラム
JP4519082B2 (ja) 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
US7996782B2 (en) 2007-06-08 2011-08-09 National Instruments Corporation Data transfer indicator icon in a diagram
US8621475B2 (en) 2007-12-06 2013-12-31 International Business Machines Corporation Responsive task scheduling in cooperative multi-tasking environments
JP5393059B2 (ja) 2008-06-04 2014-01-22 キヤノン株式会社 ワークフロー処理装置及びワークフロー処理方法
KR20100068780A (ko) * 2008-12-15 2010-06-24 삼성전자주식회사 스트리밍 서비스에서 프리 디코더 버퍼의 오버플로우 방지 방법 및 장치
RU2491961C2 (ru) * 2009-03-10 2013-09-10 Медприн Редженератив Медикал Текнолоджис Ко., Лтд. Искусственная твердая мозговая оболочка и способ ее производства
US20120209654A1 (en) * 2011-02-11 2012-08-16 Avaya Inc. Mobile activity assistant analysis
US9361323B2 (en) * 2011-10-04 2016-06-07 International Business Machines Corporation Declarative specification of data integration workflows for execution on parallel processing platforms
CN102833310B (zh) 2012-07-03 2015-02-25 中山大学 一种基于虚拟化技术的工作流引擎集群系统
EP3133539A1 (en) * 2015-08-19 2017-02-22 Tata Consultancy Services Limited Method ans system for process automation in computing
US11275590B2 (en) * 2015-08-26 2022-03-15 Huawei Technologies Co., Ltd. Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
JP7003749B2 (ja) 2018-03-09 2022-01-21 富士通株式会社 生成プログラム、生成装置、および、生成方法
US11169837B2 (en) * 2019-08-23 2021-11-09 Red Hat, Inc. Fast thread execution transition

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104487948A (zh) * 2012-09-07 2015-04-01 甲骨文国际公司 用于与云计算环境一起使用的工作流编排的系统及方法
US9342063B1 (en) * 2013-09-19 2016-05-17 Amazon Technologies, Inc. Determining capacities of work buffers

Also Published As

Publication number Publication date
KR20210122849A (ko) 2021-10-12
CN113795822A (zh) 2021-12-14
JP2022524746A (ja) 2022-05-10
KR102601576B1 (ko) 2023-11-14
EP4034988A1 (en) 2022-08-03
JP7233560B2 (ja) 2023-03-06
US20210096904A1 (en) 2021-04-01
WO2021062134A1 (en) 2021-04-01
EP4034988A4 (en) 2023-09-13

Similar Documents

Publication Publication Date Title
CN113795822B (zh) 用于处理工作流的方法、装置、计算机系统及存储介质
CN113767641B (zh) 数据流处理方法、装置和介质
KR102589876B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
KR102668137B1 (ko) 태스크들 및 작업 흐름들의 상태 비저장 병렬 프로세싱 방법 및 장치
CN114128236B (zh) 云服务方法、装置和介质
CN114731343A (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