CN116450324A - 任务处理方法、装置、设备及存储介质 - Google Patents
任务处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116450324A CN116450324A CN202310729006.1A CN202310729006A CN116450324A CN 116450324 A CN116450324 A CN 116450324A CN 202310729006 A CN202310729006 A CN 202310729006A CN 116450324 A CN116450324 A CN 116450324A
- Authority
- CN
- China
- Prior art keywords
- task
- queue
- npu
- thread
- public
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 110
- 230000008569 process Effects 0.000 claims abstract description 69
- 238000004891 communication Methods 0.000 claims description 26
- 230000006870 function Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本申请公开一种任务处理方法、装置、设备及存储介质,所述方法包括创建第一进程作为服务端,在第一进程内将与NPU数量相同的线程一一对应的绑定至NPU上,生成与NPU数量相同的任务队列和一公共队列,每个NPU对应一任务队列;创建第二进程或线程作为客户端;客户端向服务端下发任务;服务端监听任务,并判断任务的类型,根据任务的类型将该任务存放至对应的任务队列或公共队列;每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果反馈给客户端。本发明避免了在绑定调度和自由调度模式下对NPU资源的抢占问题。
Description
技术领域
本申请涉及任务调度技术领域,具体地涉及一种基于进程间通信(IPC)的任务处理方法、装置、设备及存储介质。
背景技术
NPU(Neural-network Process Units,网络处理器)是一种嵌入式神经网络处理器,在实际应用中主要有两种调度模式:绑定调度和自动调度。在绑定调度模式中,任务被指派给某个具体的NPU(即任务与某个具体的NPU绑定),只有该NPU可以处理此任务;在自动调度模式中,任意NPU 都可以处理该任务。这两种调度模式均涉及到任务对NPU资源的竞争,即多个任务同时下发给同一个NPU。
为了处理这种竞争关系,通常将NPU作为临界资源,对NPU使用互斥锁进行保护,每次只有一个任务线程获取锁,这种方式较难保证获取锁的任务线程是按照时间先入先出的方式执行,即无法满足任务之间有依赖关系,需要先入先出模式执行的情况。
本背景技术描述的内容仅为了便于了解本领域的相关技术,不视作对现有技术的承认。
发明内容
本发明实施例意图提供一种任务处理方法、装置、设备及存储介质,以解决传统技术中将NPU作为临界资源,对NPU使用互斥锁进行保护时难以保证获取锁的任务线程按照先入先出方式执行,进而无法满足任务之间有依赖关系且需要先入先出模式执行的情况。
在第一方面,本发明实施例提供了一种任务处理方法,所述方法包括以下步骤:
创建第一进程作为服务端,在所述第一进程内将与NPU数量相同的线程一一对应的绑定至NPU上;
在所述第一进程内生成与NPU数量相同的任务队列和一公共队列,每个所述NPU对应一任务队列;
创建第二进程或线程作为客户端;
所述客户端通过进程间的通信方式向所述服务端下发任务;
所述服务端监听任务,并判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列;
每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端。
进一步地,所述第一进程或第二进程利用进程创建函数或线程创建函数来创建。
进一步地,判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列,具体包括:
根据所述任务是否绑定NPU来判断所述任务属于绑定调度任务还是自由调度任务;
若所述任务属于绑定调度任务,则将所述任务存放至与该任务绑定的NPU的任务队列中;
若所述任务属于自由调度任务,则将所述任务存放至公共队列中。
进一步地,每个NPU的线程从该NPU的任务队列或公共队列中获取任务,具体包括:
每个NPU的线程判断该NPU的任务队列是否为空;
若该NPU的任务队列不为空,则该NPU的线程从该NPU的任务队列中获取任务;
若该NPU的任务队列为空,则该NPU的线程判断所述公共队列是否为空,若所述公共队列不为空,则该NPU的线程从所述公共队列中获取任务;若所述公共队列为空,则该NPU的线程等待。
进一步地,所述NPU的线程从该NPU的任务队列中获取任务,具体包括:
获取该任务队列中优先级最高的任务;
当优先级相同时,按照先入先出的方式获取任务。
进一步地,所述任务队列或公共队列中的任务包括未执行任务和正在执行且未完成的任务。
进一步地,所述进程间的通信方式为管道、消息队列、共享内存、信号量或socket。
进一步地,所述方法还包括:判断所述任务队列和所述公共队列中的任务是否执行完;
若否,则重复每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端的步骤;
若是,则关闭服务端。
在第二方面,本发明实施例提供了一种任务处理装置,所述装置包括:
创建与绑定单元,用于创建第一进程作为服务端,在所述第一进程内将与NPU数量相同的线程一一对应的绑定至NPU上;
队列生成单元,用于在所述第一进程内生成与NPU数量相同的任务队列和一公共队列,每个所述NPU对应一任务队列;
创建单元,用于创建第二进程或线程作为客户端;
任务下发单元,用于所述客户端通过进程间的通信方式向所述服务端下发任务;
任务存放单元,用于所述服务端监听任务,并判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列;
任务执行单元,用于每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端。
在第三方面,本发明实施例提供一种电子设备,包括:处理器和存储有计算机程序的存储器,所述处理器被配置为在运行计算机程序时执行上述本发明实施例的任务处理方法。
在第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现上述本发明实施例的任务处理方法。
本发明实施例中使用的任务处理方法中,采用进程间的通信方式,可以支持多个客户端同时向NPU下发任务;客户端下发的任务根据类型存放在与NPU对应的任务队列或公共队列中,能够支持NPU的绑定调度模式和自动调度模式,避免了在两种模式下对NPU资源的抢占问题。
本发明实施例的其他可选特征和技术效果一部分在下文描述,一部分可通过阅读本文而明白。
附图说明
以下,结合附图来详细说明本发明的实施例,所示出的元件不受附图所显示的比例限制,附图中相同或相似的附图标记表示相同或类似的元件,其中:
图1示出了根据本发明实施例的任务处理方法的示例流程图;
图2示出了根据本发明实施例的任务处理方法的工作流程图;
图3示出了根据本发明实施例的任务处理装置的示例性结构图;
图4示出了能实施根据本发明实施例的方法的电子设备的示例性结构示意图。
实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
NPU在实际应用中有两种调度模式:绑定调度和自动调度,为了避免绑定调度和自动调度对NPU资源的竞争,通常将NPU作为临界资源,对NPU使用互斥锁进行保护,每次只有一个任务获取锁。当某个NPU正在工作时,获取锁的任务A只能等待该NPU,在等待过程中可能又有任务B、任务C、…获取锁,从而导致在该NPU完成工作后有多个任务同时向该NPU下发,此时哪个任务由该NPU处理由CPU进行管理,因此有可能导致在后任务先于在先任务(例如任务B先于任务A)由该NPU处理,若任务A、任务B、任务C、…有先后依赖关系或先后执行顺序要求,导致任务无法执行。采用互斥锁的方式来避免绑定调度和自动调度对NPU资源的竞争,难以保证获取锁的任务是按照先入先出的方式来执行的,无法适用于任务之间有先后依赖关系或先后执行顺序要求的情况。
图1和2示出了本发明实施例的任务处理方法流程图,所述任务处理方法包括以下步骤:
步骤S101:创建第一进程作为服务端,在所述第一进程内将与NPU数量相同的线程一一对应的绑定至NPU上;
步骤S102:在所述第一进程内生成与NPU数量相同的任务队列和一公共队列,每个所述NPU对应一任务队列;
步骤S103:创建第二进程或线程作为客户端;
步骤S104:所述客户端通过进程间的通信方式向所述服务端下发任务;
步骤S105:所述服务端监听任务,并判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列;
步骤S106:每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端;
步骤S107:重复执行步骤S106,直到所有任务均被处理完,关闭所述服务端。
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,也是系统进行资源分配和调度的基本单位;线程(Thread)是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。本发明实施例中,第一进程或第二进程可以采用进程创建函数或线程创建函数来创建。进程创建函数可以创建新的进程在操作系统中运行,并为其分配内存空间和资源,常见的进程创建函数为fork()函数和exec()函数。fork()函数可以创建一个新的进程,并将其复制到当前进程的地址空间中,新的进程将与原始进程共享相同的代码和数据,新的进程有自己的堆栈和寄存器;exec()函数可以用来替换当前进程的代码和数据,从而创建一个新的进程,新的进程有自己的代码和数据,新的进程与原始进程共享相同的堆栈和寄存器。除了fork()函数和exec()函数之外,还有clone函数、vfork()函数可以创建更加灵活和高效的进程,并为其分配更多的资源和内存空间。
在系统启动时,先计算当前处理器有多少个NPU,然后在第一进程中开启与NPU数量相同的线程,并将每个线程绑定到固定的NPU上,以减少了线程在不同NPU上切换导致的性能开销。例如,当前处理器有N个NPU,则在第一进程中开启N个线程,线程与NPU一一对应地绑定。
服务端的工作模式为生产者-消费者模式,是一种高效的数据处理模式。生产者为N+1个队列,服务端为每个NPU开启一个线程,该线程作为消费线程,该消费线程从对应的任务队列中获取任务,当任务队列和公共队列均为空时,则等待。
在本发明实施例中,在第一进程内,生成与NPU数量相同的任务队列,同时生成一公共队列,每个NPU对应一任务队列,这样就使与NPU绑定的线程和与该NPU对应的任务队列关联,在进行任务获取时,线程仅获取与之关联的任务队列中的任务或公共队列中的任务,而不会去获取其他任务队列中的任务,避免了取任务加锁问题。
与NPU对应的任务队列用于存放绑定该NPU的任务(即绑定调度任务),公共队列用于存放未绑定NPU的任务(即自由调度任务)。
在本发明实施例中,创建第二进程或线程作为客户端,可以创建多个客户端,每个客户端均是独立的进程或线程,既可以采用进程作为客户端,也可以采用线程作为客户端,一个进程至少包含一个线程。客户端与服务端之间通过进程间的通信方式(IPC)来进行任务下发或结果反馈。
在本发明实施例中,所述步骤S105中判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列,具体包括:
根据所述任务是否绑定NPU来判断所述任务属于绑定调度任务还是自由调度任务;
若所述任务属于绑定调度任务,则将所述任务存放至与该任务绑定的NPU的任务队列中;
若所述任务属于自由调度任务,则将所述任务存放至公共队列中。
某个任务绑定NPU,则该任务的类型为绑定调度任务;某个任务未绑定NPU,则该任务为自由调度任务。在任务存放时,按照先后顺序进行存放,从而在取任务时可以按照先入先出的顺序来执行。
客户端与服务端之间通过进程间的通信方式(IPC)来进行任务下发,可以支持多个客户端同时向NPU发送任务。客户端发送的任务分配到对应的任务队列和公共队列中,因此同时支持NPU的绑定调度模式和自动调度模式,避免了绑定调度模式和自动调度模式下对NPU资源的抢占问题。
在本发明实施例中,所述步骤S106中每个NPU的线程从该NPU的任务队列或公共队列中获取任务,具体包括:
每个NPU的线程判断该NPU的任务队列是否为空;
若该NPU的任务队列不为空,则该NPU的线程从该NPU的任务队列中获取任务;
若该NPU的任务队列为空,则该NPU的线程判断所述公共队列是否为空,若所述公共队列不为空,则该NPU的线程从所述公共队列中获取任务;若所述公共队列为空,则该NPU的线程等待。
即NPU优先取与之关联的任务队列中的任务,再取公共队列中的任务。
每个NPU的线程仅取与该NPU对应的任务队列中的任务或公共队列中的任务,不取其他任务队列中的任务,这样每个线程在取任务时不会相互干扰,避免了取任务加锁问题。同时,可以减少因为锁等待导致的性能下降问题,提高了系统多线程并发性,提高了系统性能。
在本发明实施例中,述NPU的线程从该NPU的任务队列中获取任务,具体包括:
获取该任务队列中优先级最高的任务;当优先级相同时,按照先入先出的方式获取任务。
即NPU的线程按照优先级和先入先出原则来取任务。
本发明实施例中使用的任务处理方法中,采用进程间的通信方式,可以支持多个客户端同时向NPU下发任务;服务端根据客户端下发的任务的类型将其存放在与NPU对应的任务队列或公共队列中,能够支持NPU的绑定调度模式和自动调度模式,避免了在两种模式下对NPU资源的抢占问题。
基于同一构思,图3示出了本发明实施例的任务处理装置200的示例性结构图,所述装置200包括:
创建与绑定单元201,用于创建第一进程作为服务端,在所述第一进程内将与NPU数量相同的线程一一对应的绑定至NPU上;
队列生成单元202,用于在所述第一进程内生成与NPU数量相同的任务队列和一公共队列,每个所述NPU对应一任务队列;
创建单元203,用于创建第二进程或线程作为客户端;
任务下发单元204,用于所述客户端通过进程间的通信方式向所述服务端下发任务;
任务存放单元205,用于所述服务端监听任务,并判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列;
任务执行单元206,用于每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端。
本发明实施例中使用的任务处理装置中,采用进程间的通信方式,可以支持多个客户端同时向NPU下发任务;服务端根据客户端下发的任务的类型将其存放在与NPU对应的任务队列或公共队列中,能够支持NPU的绑定调度模式和自动调度模式,避免了在两种模式下对NPU资源的抢占问题。
在一些实施例中,所述任务处理装置可以结合上述实施例的任务处理方法的方法特征,反之亦然,在此不赘述。
在本发明实施例中,提供一种电子设备,包括:处理器和存储有计算机程序的存储器,所述处理器被配置为在运行计算机程序时执行上述本发明实施例的任务处理方法。
图4示出了一种可以实施本发明实施例的方法或实现本发明实施例的电子设备1000的示意图,在一些实施例中可以包括比图示更多或更少的电子设备。在一些实施例中,可以利用单个或多个电子设备实施。在一些实施例中,可以利用云端或分布式的电子设备实施。
如图4所示,电子设备1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序和/或数据或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序和/或数据而执行各种适当的操作和处理。处理器1001可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器1001可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如,中央处理器(CPU)、图形处理器(GPU)、神经网络处理器(NPU)、数字信号处理器(DSP)等等。在RAM 1003中,还存储有电子设备1000操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
上述处理器与存储器共同用于执行存储在存储器中的程序,所述程序被计算机执行时能够实现上述各实施例描述的方法、步骤或功能。
以下部件连接至I/O接口1005:包括键盘、鼠标、触摸屏等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。图4中仅示意性示出部分组件,并不意味着电子设备1000只包括图4所示组件。
上述实施例阐明的系统、装置、模块或单元,可以由计算机或其关联部件实现。计算机例如可以为移动终端、智能电话、个人计算机、膝上型计算机、车载人机交互设备、个人数字助理、媒体播放器、导航设备、游戏控制台、平板电脑、可穿戴设备、智能电视、物联网系统、智能家居、工业计算机、服务器或者其组合。
尽管未示出,在本发明实施例中,提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序配置成被运行时执行上述本发明实施例的任务处理方法。
在本发明的实施例的存储介质包括永久性和非永久性、可移动和非可移动的可以由任何方法或技术来实现信息存储的物品。存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
在本发明的实施例的方法、程序、系统、装置等,可以在单个或多个连网的计算机中执行或实现,也可以在分布式计算环境中实践。在本说明书实施例中,在这些分布式计算环境中,可以由通过通信网络而被连接的远程处理设备来执行任务。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本领域技术人员可想到,上述实施例阐明的功能模块/单元或控制器以及相关方法步骤的实现,可以用软件、硬件和软/硬件结合的方式实现。
除非明确指出,根据本发明实施例记载的方法、程序的动作或步骤并不必须按照特定的顺序来执行并且仍然可以实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本文中,针对本发明的多个实施例进行了描述,但为简明起见,各实施例的描述并不是详尽的,各个实施例之间相同或相似的特征或部分可能会被省略。在本文中, “一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”意指适用于根据本发明的至少一个实施例或示例中,而非所有实施例。上述术语并不必然意味着指代相同的实施例或示例。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
已参考上述实施例具体示出并描述了本发明的示例性系统及方法,其仅为实施本系统及方法的最佳模式的示例。本领域的技术人员可以理解的是可以在实施本系统及/或方法时对这里描述的系统及方法的实施例做各种改变而不脱离界定在所附权利要求中的本发明的精神及范围。
Claims (10)
1.一种任务处理方法,其特征在于,所述方法包括以下步骤:
创建第一进程作为服务端,在所述第一进程内将与NPU数量相同的线程一一对应的绑定至NPU上;
在所述第一进程内生成与NPU数量相同的任务队列和一公共队列,每个所述NPU对应一任务队列;
创建第二进程或线程作为客户端;
所述客户端通过进程间的通信方式向所述服务端下发任务;
所述服务端监听任务,并判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列;
每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端。
2.根据权利要求1所述的任务处理方法,其特征在于,所述第一进程或第二进程利用进程创建函数或线程创建函数来创建。
3.根据权利要求1所述的任务处理方法,其特征在于,判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列,具体包括:
根据所述任务是否绑定NPU来判断所述任务属于绑定调度任务还是自由调度任务;
若所述任务属于绑定调度任务,则将所述任务存放至与该任务绑定的NPU的任务队列中;
若所述任务属于自由调度任务,则将所述任务存放至公共队列中。
4.根据权利要求1所述的任务处理方法,其特征在于,每个NPU的线程从该NPU的任务队列或公共队列中获取任务,具体包括:
每个NPU的线程判断该NPU的任务队列是否为空;
若该NPU的任务队列不为空,则该NPU的线程从该NPU的任务队列中获取任务;
若该NPU的任务队列为空,则该NPU的线程判断所述公共队列是否为空,若所述公共队列不为空,则该NPU的线程从所述公共队列中获取任务;若所述公共队列为空,则该NPU的线程等待。
5.根据权利要求4所述的任务处理方法,其特征在于,所述NPU的线程从该NPU的任务队列中获取任务,具体包括:
获取该任务队列中优先级最高的任务;
当优先级相同时,按照先入先出的方式获取任务。
6.根据权利要求1所述的任务处理方法,其特征在于,所述进程间的通信方式为管道、消息队列、共享内存、信号量或socket。
7.根据权利要求1~6中任一项所述的任务处理方法,其特征在于,所述方法还包括:判断所述任务队列和所述公共队列中的任务是否执行完;
若否,则重复每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端的步骤;
若是,则关闭服务端。
8.一种任务处理装置,其特征在于,所述装置包括:
创建与绑定单元,用于创建第一进程作为服务端,在所述第一进程内将与NPU数量相同的线程一一对应的绑定至NPU上;
队列生成单元,用于在所述第一进程内生成与NPU数量相同的任务队列和一公共队列,每个所述NPU对应一任务队列;
创建单元,用于创建第二进程或线程作为客户端;
任务下发单元,用于所述客户端通过进程间的通信方式向所述服务端下发任务;
任务存放单元,用于所述服务端监听任务,并判断所述任务的类型,根据所述任务的类型将该任务存放至对应的任务队列或公共队列;
任务执行单元,用于每个NPU的线程从该NPU的任务队列或公共队列中获取任务,执行任务,并将任务执行结果通过进程间的通信方式反馈给所述客户端。
9.一种电子设备,包括:处理器和存储有计算机程序的存储器,其特征在于:所述处理器被配置为在运行计算机程序时执行如权利要求1~7中任一项所述的任务处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述程序被处理器执行时实现如权利要求1~7中任一项所述的任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310729006.1A CN116450324A (zh) | 2023-06-20 | 2023-06-20 | 任务处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310729006.1A CN116450324A (zh) | 2023-06-20 | 2023-06-20 | 任务处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116450324A true CN116450324A (zh) | 2023-07-18 |
Family
ID=87135977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310729006.1A Pending CN116450324A (zh) | 2023-06-20 | 2023-06-20 | 任务处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116450324A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893126A (zh) * | 2016-03-29 | 2016-08-24 | 华为技术有限公司 | 一种任务调度方法及装置 |
CN107301087A (zh) * | 2017-06-28 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种多线程系统的性能提升方法和装置 |
CN107577523A (zh) * | 2017-07-31 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN109522101A (zh) * | 2017-09-20 | 2019-03-26 | 三星电子株式会社 | 用于调度多个操作系统任务的方法、系统和/或装置 |
CN109542642A (zh) * | 2018-11-15 | 2019-03-29 | 网宿科技股份有限公司 | 一种前端任务处理的方法及装置 |
CN111209112A (zh) * | 2019-12-31 | 2020-05-29 | 杭州迪普科技股份有限公司 | 一种异常处理方法及装置 |
US20210064425A1 (en) * | 2018-05-15 | 2021-03-04 | Huawei Technologies Co., Ltd. | Task Processing Method, Processing Apparatus, and Computer System |
CN112905313A (zh) * | 2021-01-21 | 2021-06-04 | 深圳市元征科技股份有限公司 | 任务处理方法、装置及电子设备 |
CN114490112A (zh) * | 2021-12-20 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 消息处理方法、设备及系统 |
CN115237582A (zh) * | 2022-09-22 | 2022-10-25 | 摩尔线程智能科技(北京)有限责任公司 | 处理多个任务的方法、处理设备以及异构计算系统 |
-
2023
- 2023-06-20 CN CN202310729006.1A patent/CN116450324A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893126A (zh) * | 2016-03-29 | 2016-08-24 | 华为技术有限公司 | 一种任务调度方法及装置 |
CN107301087A (zh) * | 2017-06-28 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种多线程系统的性能提升方法和装置 |
CN107577523A (zh) * | 2017-07-31 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN109522101A (zh) * | 2017-09-20 | 2019-03-26 | 三星电子株式会社 | 用于调度多个操作系统任务的方法、系统和/或装置 |
US20210064425A1 (en) * | 2018-05-15 | 2021-03-04 | Huawei Technologies Co., Ltd. | Task Processing Method, Processing Apparatus, and Computer System |
CN109542642A (zh) * | 2018-11-15 | 2019-03-29 | 网宿科技股份有限公司 | 一种前端任务处理的方法及装置 |
CN111209112A (zh) * | 2019-12-31 | 2020-05-29 | 杭州迪普科技股份有限公司 | 一种异常处理方法及装置 |
CN112905313A (zh) * | 2021-01-21 | 2021-06-04 | 深圳市元征科技股份有限公司 | 任务处理方法、装置及电子设备 |
CN114490112A (zh) * | 2021-12-20 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 消息处理方法、设备及系统 |
CN115237582A (zh) * | 2022-09-22 | 2022-10-25 | 摩尔线程智能科技(北京)有限责任公司 | 处理多个任务的方法、处理设备以及异构计算系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535367B (zh) | 任务调度方法及相关装置 | |
US7373640B1 (en) | Technique for dynamically restricting thread concurrency without rewriting thread code | |
US8763012B2 (en) | Scalable, parallel processing of messages while enforcing custom sequencing criteria | |
US8713571B2 (en) | Asynchronous task execution | |
US8166480B2 (en) | Reducing lock contention by adding a time slice to an active thread holding a lock | |
US9448864B2 (en) | Method and apparatus for processing message between processors | |
US10853114B2 (en) | Systems and methods for executing software robot computer programs on virtual machines | |
WO2017070900A1 (zh) | 多核数字信号处理系统中处理任务的方法和装置 | |
US20100153957A1 (en) | System and method for managing thread use in a thread pool | |
US20130346985A1 (en) | Managing use of a field programmable gate array by multiple processes in an operating system | |
US9535756B2 (en) | Latency-hiding context management for concurrent distributed tasks in a distributed system | |
CN108595282A (zh) | 一种高并发消息队列的实现方法 | |
KR20040086214A (ko) | 인핸스드 런타임 호스팅 | |
TW201411387A (zh) | 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用 | |
CN101547212A (zh) | 一种分布式对象的调度方法和系统 | |
US9047121B2 (en) | System and method for scheduling jobs in a multi-core processor | |
US8972997B2 (en) | Work item processing in distributed applications | |
CN110704187A (zh) | 系统资源的调整方法、装置及可读存储介质 | |
CN115408117A (zh) | 协程运行方法、装置、计算机设备和存储介质 | |
US11474868B1 (en) | Sharded polling system | |
CN112395062A (zh) | 任务处理方法、装置、设备及计算机可读存储介质 | |
US10025605B2 (en) | Message handler compiling and scheduling in heterogeneous system architectures | |
CN116450324A (zh) | 任务处理方法、装置、设备及存储介质 | |
US10438154B2 (en) | Guaranteed processing for performing a work item queuing operation using generational queues | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20230718 |
|
RJ01 | Rejection of invention patent application after publication |