CN116561133B - 数据处理方法、系统、电子设备、存储介质 - Google Patents
数据处理方法、系统、电子设备、存储介质 Download PDFInfo
- Publication number
- CN116561133B CN116561133B CN202310826649.8A CN202310826649A CN116561133B CN 116561133 B CN116561133 B CN 116561133B CN 202310826649 A CN202310826649 A CN 202310826649A CN 116561133 B CN116561133 B CN 116561133B
- Authority
- CN
- China
- Prior art keywords
- task
- computing
- computing task
- value
- lookup table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 34
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims description 70
- 230000001419 dependent effect Effects 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 12
- 239000000758 substrate Substances 0.000 claims 1
- 238000005457 optimization Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 238000009826 distribution Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- 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)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及芯片领域,提出了一种数据处理方法、系统、电子设备、存储介质及程序产品。所述方法应用于数据处理系统,所述方法包括:根据指针,查询所述任务查找表,确定满足派发条件的至少一个计算任务;将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,所述任务编码器根据接收到的任务编号派发所述至少一个计算任务;在接收到第一计算任务的相关信息时,根据所述指针更新所述任务查找表,所述第一计算任务为所述数据处理系统协助派发的任一计算任务。本公开实施例的数据处理方法既提高计算任务的派发效率,又提高计算任务的执行效率,实现了计算任务的派发方式的优化。
Description
技术领域
本公开涉及芯片领域,尤其涉及一种数据处理方法、系统、电子设备、存储介质及程序产品。
背景技术
在用户操作电子设备时,响应于用户的指示,电子设备的任务编码器可产生多种计算任务。可产生的计算任务包括但不限于:加减乘除、开方乘方、三角函数等科学计算的任务;向量处理(包括向量点积,向量加减法,矩阵运算等)的任务;神经网络运算(包括脉动阵列等)的任务;多线程科学计算的任务;数据复制搬移的任务;数据类型转换的任务等。这些计算任务被派发至电子设备的处理器处执行。
计算任务的派发方式影响处理器对于计算任务的执行效率。因此,如何优化计算任务的派发方式、进而提高计算任务的执行效率,成为本领域的研究热点。
发明内容
有鉴于此,本公开提出了一种数据处理方法、系统、电子设备、存储介质及程序产品,本公开实施例的数据处理方法既提高计算任务的派发效率,又提高计算任务的执行效率,实现了计算任务的派发方式的优化。
根据本公开的一方面,提供了一种数据处理方法,所述方法应用于数据处理系统,所述数据处理系统包括任务查找表,所述任务查找表用于记录所述数据处理系统协助派发的计算任务的状态,所述方法包括:根据指针,查询所述任务查找表,确定满足派发条件的至少一个计算任务;将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,所述任务编码器根据接收到的任务编号派发所述至少一个计算任务;在接收到第一计算任务的相关信息时,根据所述指针更新所述任务查找表,所述相关信息包括所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,所述第一计算任务为所述数据处理系统协助派发的任一计算任务。
在一种可能的实现方式中,满足派发条件的所述至少一个计算任务所在任务组的组编号是优先级最高的组编号,且所述至少一个计算任务已完成资源初始化,且所述至少一个计算任务依赖的其他计算任务均已执行完成,且所述至少一个计算任务未派发。
在一种可能的实现方式中,所述任务查找表包括N个区域,每个区域记录一个计算任务的状态,所述指针包括写指针和读指针,当前写指针的数值为n,当前读指针的数值为m,0≤n≤N-1,0≤m≤N-1,n、m、N-1是正整数;所述写指针对应写指针翻转信号,所述读指针对应读指针翻转信号,在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,第m个区域到第n-1个区域记录的信息有效,在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,第m个区域到第N-1个区域以及第0个区域到第n-1个区域记录的信息有效,所述查询所述任务查找表,确定满足派发条件的至少一个计算任务,包括:在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,查询第m个区域到第n-1个区域,确定满足派发条件的至少一个计算任务;在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,查询第m个区域到第N-1个区域以及第0个区域到第n-1个区域,确定满足派发条件的至少一个计算任务。
在一种可能的实现方式中,所述数据处理系统还包括先入先出的组编号存储器,用于记录所述数据处理系统协助派发的计算任务所在任务组的组编号,所述组编号存储器中存在时间最长的组编号优先级最高,所述方法还包括:在接收到第一计算任务所在任务组的组编号、且该组编号未记录于所述组编号存储器中时,将该组编号写入所述组编号存储器;查询所述任务查找表,确定与所述至少一个计算任务具有相同组编号的其他计算任务均已派发时,将该组编号从所述组编号存储器中移除。
在一种可能的实现方式中,所述计算任务的状态包括指示该计算任务是否被派发的第一状态、指示该计算任务是否完成资源初始化的第二状态、指示该计算任务是否执行完成的第三状态,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号不相同时,表示所述任务查找表已满且记录的信息全部有效;所述在接收到第一计算任务的相关信息时,更新所述任务查找表,包括:接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,判断当前写指针的数值与当前读指针的数值是否相等,以及当前读指针翻转信号和当前写指针翻转信号是否相同;在当前写指针的数值与当前读指针的数值不相等时,或者,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号也相同时,将所述任务编号、所述组编号写入所述任务查找表中当前写指针的数值对应的区域;将该区域存储的第一状态更新为未派发状态,作为所述第一计算任务的第一状态;将该区域存储的第二状态更新为未完成资源初始化状态,作为所述第一计算任务的第二状态;将该区域存储的第三状态更新为未执行完成状态,作为所述第一计算任务的第三状态。
在一种可能的实现方式中,所述数据处理系统还包括依赖关系表,所述依赖关系表包括N行N列的数据,每条数据的数值等于第一数值或者第二数值,第n行用于记录与该第n行对应同一任务编号的计算任务所依赖的其他计算任务是否执行完成,第n列用于记录与该第n列对应同一任务编号的计算任务是否执行完成,0≤n≤N-1,n、N是正整数;在与该第n列对应同一任务编号的计算任务执行完成时,该第n列记录的全部数据为第二数值;在与该第n行对应同一任务编号的计算任务所依赖的其他计算任务全部执行完成时,该第n行记录的全部数据为第二数值。
在一种可能的实现方式中,所述计算任务的状态还包括指示该计算任务依赖的其他计算任务是否均执行完成的第四状态,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,根据所述依赖的其他计算任务对应的列记录的数据,更新与所述第一计算任务的任务编号对应的行记录的数据;更新与所述第一计算任务的任务编号对应的列记录的数据;根据更新后的与所述第一计算任务的任务编号对应的行记录的数据,更新所述任务查找表中当前写指针的数值对应的区域存储的第四状态,作为所述第一计算任务的第四状态;在当前写指针的数值等于N-1时,使写指针的数值清零,并翻转所述写指针翻转信号;在当前写指针的数值小于N-1时,使写指针的数值加一。
在一种可能的实现方式中,所述将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,包括:将所述任务查找表存储的所述至少一个计算任务的第一状态更新为已派发状态。
在一种可能的实现方式中,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的任务执行完成信息时,将所述任务查找表存储的所述第一计算任务的第三状态更新为执行完成状态;更新所述依赖关系表中与所述第一计算任务的任务编号对应的列记录的数据,使该列记录的全部数据为第二数值;根据更新后的所述依赖关系表,更新所述任务查找表中各计算任务的第四状态;在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值等于N-1时,使读指针的数值清零,并翻转所述读指针翻转信号;在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值小于N-1时,使读指针的数值加一。
在一种可能的实现方式中,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的资源初始化完成信息时,将所述任务查找表存储的所述第一计算任务的第二状态更新为资源初始化完成状态。
根据本公开的另一方面,提供了一种数据处理系统,所述数据处理系统包括:任务查找表,所述任务查找表用于记录所述数据处理系统协助派发的计算任务的状态;查询模块,用于根据指针,查询所述任务查找表,确定满足派发条件的至少一个计算任务;输出模块,用于将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,所述任务编码器根据接收到的任务编号派发所述至少一个计算任务;更新模块,用于在接收到第一计算任务的相关信息时,根据所述指针更新所述任务查找表,所述相关信息包括所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,所述第一计算任务为所述数据处理系统协助派发的任一计算任务。
在一种可能的实现方式中,满足派发条件的所述至少一个计算任务所在任务组的组编号是优先级最高的组编号,且所述至少一个计算任务已完成资源初始化,且所述至少一个计算任务依赖的其他计算任务均已执行完成,且所述至少一个计算任务未派发。
在一种可能的实现方式中,所述任务查找表包括N个区域,每个区域记录一个计算任务的状态,所述指针包括写指针和读指针,当前写指针的数值为n,当前读指针的数值为m,0≤n≤N-1,0≤m≤N-1,n、m、N-1是正整数;
所述写指针对应写指针翻转信号,所述读指针对应读指针翻转信号,在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,第m个区域到第n-1个区域记录的信息有效,在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,第m个区域到第N-1个区域以及第0个区域到第n-1个区域记录的信息有效,所述查询所述任务查找表,确定满足派发条件的至少一个计算任务,包括:在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,查询第m个区域到第n-1个区域,确定满足派发条件的至少一个计算任务;在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,查询第m个区域到第N-1个区域以及第0个区域到第n-1个区域,确定满足派发条件的至少一个计算任务。
在一种可能的实现方式中,所述数据处理系统还包括先入先出的组编号存储器,用于记录所述数据处理系统协助派发的计算任务所在任务组的组编号,所述组编号存储器中存在时间最长的组编号优先级最高,所述系统还包括:
写入模块,用于在接收到第一计算任务所在任务组的组编号、且该组编号未记录于所述组编号存储器中时,将该组编号写入所述组编号存储器;
移除模块,用于在查询所述任务查找表,确定与所述至少一个计算任务具有相同组编号的其他计算任务均已派发时,将该组编号从所述组编号存储器中移除。
在一种可能的实现方式中,所述计算任务的状态包括指示该计算任务是否被派发的第一状态、指示该计算任务是否完成资源初始化的第二状态、指示该计算任务是否执行完成的第三状态,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号不相同时,表示所述任务查找表已满且记录的信息全部有效;所述在接收到第一计算任务的相关信息时,更新所述任务查找表,包括:接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,判断当前写指针的数值与当前读指针的数值是否相等,以及当前读指针翻转信号和当前写指针翻转信号是否相同;在当前写指针的数值与当前读指针的数值不相等时,或者,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号也相同时,将所述任务编号、所述组编号写入所述任务查找表中当前写指针的数值对应的区域;将该区域存储的第一状态更新为未派发状态,作为所述第一计算任务的第一状态;将该区域存储的第二状态更新为未完成资源初始化状态,作为所述第一计算任务的第二状态;将该区域存储的第三状态更新为未执行完成状态,作为所述第一计算任务的第三状态。
在一种可能的实现方式中,所述数据处理系统还包括依赖关系表,所述依赖关系表包括N行N列的数据,每条数据的数值等于第一数值或者第二数值,第n行用于记录与该第n行对应同一任务编号的计算任务所依赖的其他计算任务是否执行完成,第n列用于记录与该第n列对应同一任务编号的计算任务是否执行完成,0≤n≤N-1,n、N是正整数;在与该第n列对应同一任务编号的计算任务执行完成时,该第n列记录的全部数据为第二数值;在与该第n行对应同一任务编号的计算任务所依赖的其他计算任务全部执行完成时,该第n行记录的全部数据为第二数值。
在一种可能的实现方式中,所述计算任务的状态还包括指示该计算任务依赖的其他计算任务是否均执行完成的第四状态,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,根据所述依赖的其他计算任务对应的列记录的数据,更新与所述第一计算任务的任务编号对应的行记录的数据;更新与所述第一计算任务的任务编号对应的列记录的数据;根据更新后的与所述第一计算任务的任务编号对应的行记录的数据,更新所述任务查找表中当前写指针的数值对应的区域存储的第四状态,作为所述第一计算任务的第四状态;在当前写指针的数值等于N-1时,使写指针的数值清零,并翻转所述写指针翻转信号;在当前写指针的数值小于N-1时,使写指针的数值加一。
在一种可能的实现方式中,所述将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,包括:将所述任务查找表存储的所述至少一个计算任务的第一状态更新为已派发状态。
在一种可能的实现方式中,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的任务执行完成信息时,将所述任务查找表存储的所述第一计算任务的第三状态更新为执行完成状态;更新所述依赖关系表中与所述第一计算任务的任务编号对应的列记录的数据,使该列记录的全部数据为第二数值;根据更新后的所述依赖关系表,更新所述任务查找表中各计算任务的第四状态;在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值等于N-1时,使读指针的数值清零,并翻转所述读指针翻转信号;在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值小于N-1时,使读指针的数值加一。
在一种可能的实现方式中,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的资源初始化完成信息时,将所述任务查找表存储的所述第一计算任务的第二状态更新为资源初始化完成状态。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开实施例的数据处理方法,根据指针查询任务查找表,确定满足派发条件的至少一个计算任务;将至少一个计算任务的任务编号输出到任务编码器并更新任务查找表,任务编码器根据接收到的任务编号派发至少一个计算任务,使得数据处理系统可协助完成任务的派发,同时派发的任务可以是至少一个,可提高计算任务的派发效率。在接收到第一计算任务的相关信息时,根据指针更新任务查找表,相关信息包括第一计算任务的任务编号、第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,第一计算任务为数据处理系统协助派发的任一计算任务。使得任务查找表所记录的信息可以与计算任务的实际状态相一致,保证派发出的计算任务是可直接执行的任务,提高任务的执行效率。综上所述,本公开实施例的数据处理方法既提高计算任务的派发效率,又提高计算任务的执行效率,实现了计算任务的派发方式的优化。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的数据处理方法的示例性应用场景。
图2示出根据本公开实施例的计算任务、任务组的关联关系的示例。
图3示出根据本公开实施例的数据处理方法的示例性工作流程。
图4示出根据本公开实施例的任务查找表中被查询的区域的示例。
图5示出根据本公开实施例的组编号存储器及其用途的示例。
图6示出根据本公开实施例的依赖关系表的用途的示意图。
图7示出根据本公开实施例的数据处理系统的结构的示意图。
图8示出根据本公开实施例的装置1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开实施例的数据处理方法的示例性应用场景。
如图1所示,本公开实施例的数据处理方法可以由数据处理系统执行,数据处理系统可以集成在处理器1中。用于执行计算任务的处理器可以是处理器2。
任务编码器产生计算任务时,会赋予计算任务一个任务编号。该计算任务可能属于某一个任务组,同一个任务组的任务都执行完成后,下一个任务组的任务才允许派发。因此也同时赋予计算任务一个组编号。该计算任务可能依赖于其他计算任务,意思是该计算任务必须等待其他计算任务执行完毕后,根据其他计算任务的执行结果才能执行。因此该计算任务产生时,其依赖于哪些计算任务、以及被哪些计算任务所依赖,均是已知且确定不变的。
图2示出根据本公开实施例的计算任务、任务组的关联关系的示例。
如图2所示,假设任务编码器一共产生16个计算任务,任务编号分别是0-15。其中,计算任务0-5可以属于一个任务组,该任务组的组编号可以是0;计算任务6-12可以属于一个任务组,该任务组的组编号可以是1;计算任务13-15可以属于一个任务组,该任务组的组编号可以是2。
以任务组0为例,计算任务3-5不依赖其他计算任务,计算任务1依赖于计算任务3和4,计算任务2依赖于计算任务5,计算任务0依赖于计算任务1和2。也就是说,计算任务3和4执行完成后,根据计算任务3和4的执行结果,计算任务1可执行。计算任务5执行完成后,根据计算任务5的执行结果,计算任务2可执行。计算任务1和2执行完成后,根据计算任务1和2的执行结果,计算任务0可执行。任务组0中的计算任务都执行完成后,再执行任务组1中的计算任务。
任务组1和任务组2中的任务的依赖关系与任务组0中任务的依赖关系相类似,在此不再赘述。
如果计算任务还被其他计算任务依赖,则可认为该计算任务的执行结果短时间内还会被使用,可将该计算任务的执行结果写入共享缓存(未示出)中。依赖于该计算任务的其他计算任务需要使用该计算任务的执行结果时,可从共享缓存中读取并使用。如果计算任务未被其他计算任务依赖,则可认为该计算任务的执行结果不再被其他计算任务使用,则可将该计算任务的执行结果写入输出缓存(未示出)或者电子设备的主存(未示出)中。
任务编码器产生计算任务后,如需处理器1的数据处理系统协助派发,可以将该计算任务的任务编号、该计算任务所在任务组的组编号、该计算任务依赖的其他计算任务的任务编号发送给处理器1。
处理器1中,数据处理系统可根据接收到的信息更新任务查找表,任务查找表用于记录数据处理系统协助派发的计算任务的状态。确定该计算任务满足派发条件时,可将该计算任务的任务编号输出到任务编码器并更新任务查找表,任务编码器根据接收到的任务编号可派发该计算任务。
任务查找表还可能被其他方式触发更新,其示例可以参见下文图3的相关描述。
图3示出根据本公开实施例的数据处理方法的示例性工作流程。
如图3所示,在一种可能的实现方式中,所述方法应用于数据处理系统,数据处理系统包括任务查找表,任务查找表用于记录数据处理系统协助派发的计算任务的状态。其中,被记录的状态可包括多种,可指示计算任务是否被派发(下文的第一状态)、计算任务是否完成资源初始化(下文的第二状态)、计算任务是否执行完成(下文的第三状态)、计算任务依赖的其他计算任务是否均执行完成(下文的第四状态)等等。
所述方法包括步骤S31-S33:
步骤S31,根据指针,查询任务查找表,确定满足派发条件的至少一个计算任务。
步骤S31可以由数据处理系统中的条件检测器(未示出)执行。某一计算任务是否满足派发条件,可以根据任务查找表记录的该计算任务的状态来确定。满足派发条件的任务,可以是处理器在算力充足时可直接执行的任务。派发条件的示例可参见下文的相关描述。
在查询任务查找表时,可以使用指针。指针可包括写指针和读指针,其中写指针指示查询的终止位置,读指针指示查询的起始位置。指针在查询任务查找表时实现的更多功能可以参见下文对步骤S31的进一步描述。
步骤S32,将至少一个计算任务的任务编号输出到任务编码器并更新任务查找表,任务编码器根据接收到的任务编号派发至少一个计算任务。
将至少一个计算任务的任务编号输出到任务编码器时,更新任务查找表的方式可以是更新其中记录的、指示计算任务是否被派发的状态。其示例性更新方式可以参见下文对步骤S32的进一步描述。
同时满足派发条件的任务有两个或两个以上时,任务编码器可同时派发该两个或两个以上的计算任务,可提高计算任务的派发效率。
步骤S33,在接收到第一计算任务的相关信息时,根据指针更新任务查找表,相关信息包括第一计算任务的任务编号、第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,第一计算任务为数据处理系统协助派发的任一计算任务。
任务查找表可以在数据处理系统接收到协助派发的任一计算任务的相关信息时更新。
以第一计算任务为数据处理系统协助派发的计算任务为例,数据处理系统接收到的第一计算任务的相关信息,可以包括第一计算任务的任务编号、第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种。
上述第一计算任务的相关信息中,第一计算任务的任务编号、第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号可以是在第一计算任务产生时输入数据处理系统,并且是共同输入数据处理系统。这表示第一计算任务是需数据处理系统协助派发的一个新的计算任务,此时更新任务查找表可使用指针,指针用于确定第一计算任务的状态在任务查找表中的存储位置。此时更新的对象是该存储位置处原本存储的状态。同时还可将第一计算任务的编号、第一计算任务所在任务组的组编号也写入该存储位置。
此后的某一时刻,第一计算任务的资源初始化完成信息(携带有第一计算任务的任务编号)输入到数据处理系统,表示第一计算任务的资源初始化已完成,此时更新的对象是指示第一计算任务是否完成资源初始化的状态,而第一计算任务的状态在任务查找表中的存储位置已确定,因此更新任务查找表使用第一计算任务的任务编号即可,不必使用指针。
此后的某一时刻,第一计算任务的任务执行完成信息(携带有第一计算任务的任务编号)输入到数据处理系统时,表示第一计算任务已执行完成,此时更新的对象是指示第一计算任务是否执行完成的状态,而第一计算任务的状态在任务查找表中的存储位置已确定,此时更新任务查找表使用第一计算任务的任务编号即可,不必使用指针。
指针在更新任务查找表时实现的更多功能可以参见下文对步骤S33的进一步描述。
根据本公开实施例的数据处理方法,根据指针查询任务查找表,确定满足派发条件的至少一个计算任务;将至少一个计算任务的任务编号输出到任务编码器并更新任务查找表,任务编码器根据接收到的任务编号派发至少一个计算任务,使得数据处理系统可协助完成任务的派发,同时派发的任务可以是至少一个,可提高计算任务的派发效率。在接收到第一计算任务的相关信息时,根据指针更新任务查找表,相关信息包括第一计算任务的任务编号、第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,第一计算任务为数据处理系统协助派发的任一计算任务。使得任务查找表所记录的信息可以与计算任务的实际状态相一致,保证派发出的计算任务是可直接执行的任务,提高任务的执行效率。综上所述,本公开实施例的数据处理方法既提高计算任务的派发效率,又提高计算任务的执行效率,实现了计算任务的派发方式的优化。
下面介绍本公开实施例的派发条件的示例。
在一种可能的实现方式中,满足派发条件的至少一个计算任务所在任务组的组编号是优先级最高的组编号,且至少一个计算任务已完成资源初始化,且至少一个计算任务依赖的其他计算任务均已执行完成,且至少一个计算任务未派发。
首先,计算任务的执行需要处理器提供计算资源,资源初始化未完成的计算任务,即使派发到处理器处也不能直接执行。因此,派发条件包括计算任务已完成资源初始化。
其次,参见上文及图2的相关描述,计算任务的执行需要使用到其依赖的其他计算任务的执行结果,依赖的其他计算任务尚未执行完成时,即使派发到处理器处也不能直接执行。因此,派发条件还包括计算任务依赖的其他计算任务均已执行完成。
另外,由于任务查找表中记录的已经被派发的计算任务可能尚未执行完成,此时任务查找表中该计算任务的状态仍然有效。而已经被派发的计算任务无法被再次派发,因此,派发条件还包括计算任务未派发。
最后,由上文描述可知,一个任务组的计算任务全部执行完之后,下一个任务组的计算任务才能执行,因此,同时派发的计算任务应具有相同的组编号,使得同一个任务组的计算任务能够更快执行完毕。同一个任务组的计算任务可能不是同时满足派发条件,因此,可以为任务查找表中记录的计算任务所在的任务组的组编号设置优先级,组编号的优先级的高低,决定组编号对应任务组的计算任务派发的早晚。因此,派发条件还包括计算任务所在任务组的组编号是优先级最高的组编号。
在此情况下,满足上述派发条件的计算任务派发到处理器之后,即可直接执行,从而能实现计算任务的执行效率的提高。
下面介绍查询任务查找表,确定满足派发条件的至少一个计算任务(步骤S31)的示例性方法。
在一种可能的实现方式中,任务查找表包括N个区域,每个区域记录一个计算任务的状态,指针包括写指针和读指针,当前写指针的数值为n,当前读指针的数值为m,0≤n≤N-1,0≤m≤N-1,n、m、N-1是正整数;
写指针对应写指针翻转信号,读指针对应读指针翻转信号,在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,第m个区域到第n-1个区域记录的信息有效,在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,第m个区域到第N-1个区域以及第0个区域到第n-1个区域记录的信息有效,
步骤S31,包括:
在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,查询第m个区域到第n-1个区域,确定满足派发条件的至少一个计算任务;
在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,查询第m个区域到第N-1个区域以及第0个区域到第n-1个区域,确定满足派发条件的至少一个计算任务。
举例来说,任务查找表可包括N个区域,每个区域记录一个计算任务的状态,也即,任务查找表最多可同时记录N个计算任务的状态。计算任务的状态写入任务查找表的顺序,与查询任务查找表的顺序可以相同。
指针可包括写指针和读指针,写指针的数值对应的区域即为下次有新的计算任务需协助派发时,新的计算任务的状态的写入位置,同时也是查询任务查找表时的结束位置。读指针的数值对应的区域即为查询任务查找表时的开始位置。
随着任务查找表的更新,任务查找表中某些区域对应的计算任务可能已经执行完成。这些计算任务的状态已经失效,不必查询。读指针的数值对应的区域,可以是仍有效的计算任务的状态中,最早写入任务查找表的一个计算任务的状态的存储区域,因此是查询任务查找表的开始位置。
图4示出根据本公开实施例的任务查找表中被查询的区域的示例。
如图4所示,假设N=6,N个区域为第0-5个区域。计算任务的状态写入任务查找表的顺序,与查询任务查找表的顺序可以相同,并且都是按照从第0个区域到第5个区域的顺序。
写指针对应写指针翻转信号,读指针对应读指针翻转信号。在计算任务的状态写入到第5个区域之后,写指针的数值变更为0,此时写指针翻转信号可以翻转,例如翻转前可以是“0”,翻转后可以是“1”。同理,在第5个区域的计算任务的状态指示该计算任务已执行完成(即第5个区域的存储的计算任务的状态已经失效)之后,读指针的数值变更为0,此时读指针翻转信号可以翻转,例如翻转前可以是“0”,翻转后可以是“1”。
在任务查找表为空,或者任务查找表中所有区域的计算任务的状态都无效时,写指针和读指针的数值可以相同,且写指针翻转信号和读指针翻转信号可以相同。
可以理解的是,写指针翻转信号和读指针翻转信号所占据的空间可以都为1比特,也可以为其他的比特值,本公开对此不作限制。
参见图4的示例,假设当前写指针的数值为n且n=1,当前读指针的数值为m且m=5,当前读指针翻转号和当前写指针翻转信号不同,则可以确定,第5个区域、第0个区域记录的信息有效。
因此,查询任务查找表,确定满足派发条件的至少一个计算任务,可以是查询第5个区域、第0个区域,确定满足派发条件的至少一个计算任务。
假设当前写指针的数值为n且n=5,当前读指针的数值为m且m=1,当前读指针翻转号和当前写指针翻转信号相同,则可以确定,第1-4个区域记录的信息有效。
因此,查询任务查找表,确定满足派发条件的至少一个计算任务,可以是查询第1-4个区域,确定满足派发条件的至少一个计算任务。
通过这种方式,可以减少查询的数据量,提高查询效率。
下面介绍确定组编号的优先级的示例性方法。
在一种可能的实现方式中,数据处理系统还包括先入先出的组编号存储器,用于记录数据处理系统协助派发的计算任务所在任务组的组编号,组编号存储器中存在时间最长的组编号优先级最高,
所述方法还包括:
步骤S34,在接收到第一计算任务所在任务组的组编号、且该组编号未记录于组编号存储器中时,将该组编号写入组编号存储器;
步骤S35,查询任务查找表,确定与至少一个计算任务具有相同组编号的其他计算任务均已派发时,将该组编号从组编号存储器中移除。
图5示出根据本公开实施例的组编号存储器及其用途的示例。
举例来说,数据处理系统可以设置有先入先出的组编号存储器,用于记录数据处理系统协助派发的计算任务所在任务组的组编号,并为其中存储的组编号进行优先级排序,组编号存储器中存在时间最长的组编号优先级最高。
在数据处理系统接收到第一计算任务的任务编号、第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号时,判断该组编号是否记录于组编号存储器中;如果该组编号未记录于组编号存储器中,表示该组编号尚未参与优先级排序,可以将第一计算任务所在任务组的组编号写入组编号存储器,此时该组编号成为组编号存储器中存在时间最短的组编号,因此优先级最低。如果该组编号已经记录于组编号存储器中,表示该组编号已经参与了优先级排序,不必再写入组编号存储器。
查询任务查找表需使用派发条件,每次查询时,组编号存储器都输出其存储的优先级最高的组编号,作为派发条件中的组编号。查询任务查找表确定的满足派发条件的所有计算任务都会被派发。如果此时还确定了与至少一个计算任务具有相同组编号的其他计算任务均已派发,可认为该组编号对应的任务组的计算任务已经派发完毕,可以开始派发下一个任务组的计算任务。因此,可以将该组编号从组编号存储器中移除。此时该组编号不再参与优先级排序,组编号存储器中的其他组编号的优先级排序自动升高一级。
通过这种方式,使得确定组编号优先级的方式更简单。
其中,组编号存储器可能是可查询的存储器,在此情况下,判断该组编号是否记录于组编号存储器中的步骤,只要查询组编号存储器即可。
如果组编号存储器是不可查询的存储器,则还可以进一步增加组编号查找表,用来记录组编号的优先级。组编号查找表中的组编号的顺序和组编号存储器中存储的组编号的顺序可以相同。在此情况下,判断该组编号是否记录于组编号存储器中的步骤,可以查询组编号查找表。如果查询任务查找表时还确定了与至少一个计算任务具有相同组编号的其他计算任务均已派发,可以将该组编号从组编号存储器和组编号查找表中移除。
通过这种方式,可以提升确定组编号优先级的方式的灵活性。
表1示出根据本公开实施例的任务查找表的一个示例。表1的任务查找表所记录的信息对应的计算任务可以是图2所示的计算任务。
表1
区域编号 | 任务编号 | 组编号 | 第一状态 | 第二状态 | 第三状态 | 第四状态 |
0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 |
2 | 2 | 0 | 0 | 1 | 0 | 0 |
3 | 3 | 0 | 0 | 1 | 0 | 1 |
4 | 10 | 1 | 0 | 1 | 0 | 1 |
5 | 4 | 0 | 0 | 0 | 0 | 1 |
6 | 11 | 1 | 0 | 1 | 0 | 0 |
7 | 9 | 1 | 0 | 1 | 0 | 0 |
8 | 5 | 0 | 0 | 0 | 0 | 0 |
9 | 8 | 1 | 0 | 0 | 0 | 1 |
10 | 7 | 1 | 0 | 0 | 0 | 1 |
11 | 15 | 2 | 0 | 0 | 0 | 0 |
12 | 13 | 2 | 0 | 0 | 0 | 1 |
13 | 6 | 1 | 0 | 0 | 0 | 0 |
14 | 12 | 1 | 0 | 0 | 0 | 1 |
15 | 14 | 2 | 0 | 1 | 0 | 1 |
如表1所示,任务查找表首先可包括区域编号(即自然索引)。每个区域编号对应的区域可记录一个计算任务的任务编号、该计算任务所属的任务组的组编号、指示该计算任务是否被派发的第一状态(例如“0”表示未被派发,“1”表示已被派发)、指示该计算任务是否完成资源初始化的第二状态(例如“0”表示未完成资源初始化,“1”表示已完成资源初始化)、指示该计算任务是否执行完成的第三状态(例如“0”表示未执行完成,“1”表示已执行完成)、指示该计算任务依赖的其他计算任务是否均执行完成的第四状态(例如“0”表示依赖的其他计算任务未执行完成,“1”表示依赖的其他计算任务均已执行完成)。
以区域编号为0的区域为例,该区域记录的状态可以是任务编号为0的计算任务的状态,该计算任务属于组编号为0的任务组,该计算任务的第一状态指示该计算任务未被派发,该计算任务的第二状态指示该计算任务未完成资源初始化,该计算任务的第三状态指示该计算任务未执行完成,该计算任务的第四状态指示该计算任务依赖的其他计算任务未执行完成。
下面结合表1介绍第一计算任务是需数据处理系统协助派发的一个新的计算任务时,任务查找表的更新方式的示例。
在一种可能的实现方式中,计算任务的状态包括指示该计算任务是否被派发的第一状态、指示该计算任务是否完成资源初始化的第二状态、指示该计算任务是否执行完成的第三状态,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号不相同时,表示任务查找表已满且记录的信息全部有效;
步骤S33,包括:
接收到第一计算任务的任务编号、第一计算任务所在任务组的组编号以及第一计算任务依赖的其他计算任务的任务编号时,判断当前写指针的数值与当前读指针的数值是否相等,以及当前读指针翻转信号和当前写指针翻转信号是否相同;
在当前写指针的数值与当前读指针的数值不相等时,或者,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号也相同时,将任务编号、组编号写入任务查找表中当前写指针的数值对应的区域;
将该区域存储的第一状态更新为未派发状态,作为第一计算任务的第一状态;
将该区域存储的第二状态更新为未完成资源初始化状态,作为第一计算任务的第二状态;
将该区域存储的第三状态更新为未执行完成状态,作为第一计算任务的第三状态。
举例来说,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号不相同时,表示任务查找表已满且记录的信息全部有效。此时即便有新的计算任务的相关信息被接收,任务查找表也无法记录该计算任务的状态。因此,第一计算任务是需数据处理系统协助派发的一个新的计算任务时(也即接收到第一计算任务的任务编号、第一计算任务所在任务组的组编号以及第一计算任务依赖的其他计算任务的任务编号时),可先判断任务查找表是否已满。在任务查找表未满时更新任务查找表,在任务查找表已满时先等待,直到任务查找表中的某个或某几个区域存储的信息失效,再将第一计算任务的状态记录在任务查找表中。
判断任务查找表是否已满的方式,可以是判断当前写指针的数值与当前读指针的数值是否相等,以及当前读指针翻转信号和当前写指针翻转信号是否相同。当前写指针的数值与当前读指针的数值不相等时,或者,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号也相同时,表示任务查找表未满。
为进一步提高效率,可以先确定当前写指针的数值与当前读指针的数值是否相等,如果当前写指针的数值与当前读指针的数值不相等,无需确定当前读指针翻转信号和当前写指针翻转信号是否相同。
如任务查找表未满,可将第一计算任务的任务编号、第一计算任务所在任务组的组编号写入任务查找表中当前写指针的数值对应的区域。如果该区域已有任务编号和组编号,则覆盖该区域已有的任务编号和组编号。
此时第一计算任务必然是未派发、未完成资源初始化、未执行完成的任务,因此,可将该区域存储的第一状态更新为未派发状态,作为第一计算任务的第一状态;将该区域存储的第二状态更新为未完成资源初始化状态,作为第一计算任务的第二状态;将该区域存储的第三状态更新为未执行完成状态,作为第一计算任务的第三状态。
通过这种方式,可以任务查找表可实现第一状态、第二状态、第三状态的记录与更新。
不同计算任务之间的依赖关系统计起来较为复杂,如果仍使用任务查找表实现依赖关系统计,可能导致任务查找表过大,降低查询效率。因此,本公开实施例还提出了依赖关系表,用于记录不同计算任务之间的依赖关系,并基于依赖关系表更新任务关系表中的第四状态,以使得任务查找表在具备记录与依赖关系相关的第四状态的同时,保持较小的数据量,以保证较高的查询效率。
下面介绍本公开实施例的依赖关系表的示例。
在一种可能的实现方式中,数据处理系统还包括依赖关系表,依赖关系表包括N行N列的数据,每条数据的数值等于第一数值或者第二数值,第n行用于记录与该第n行对应同一任务编号的计算任务所依赖的其他计算任务是否执行完成,第n列用于记录与该第n列对应同一任务编号的计算任务是否执行完成,0≤n≤N-1,n、N是正整数;
在与该第n列对应同一任务编号的计算任务执行完成时,该第n列记录的全部数据为第二数值;
在与该第n行对应同一任务编号的计算任务所依赖的其他计算任务全部执行完成时,该第n行记录的全部数据为第二数值。
表2示出根据本公开实施例的依赖关系表的一个示例。
表2
任务编号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
3 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
5 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
如表2所示,假设N=8,则任务编号可以是0-7,依赖关系表共包括8×8条数据。每条数据可以占据1比特,第一数值可以是“1”,第二数值可以是“0”。以第2行和第2列为例,第2行用于记录与该第2行对应同一任务编号(即任务编号1)的计算任务所依赖的其他计算任务是否执行完成,第2列用于记录与该第2列对应同一任务编号(即任务编号1)的计算任务是否执行完成。其中,未执行完成可使用第一数值表示,执行完成可使用第二数值表示。
其中,对于第2列来说,在与该第2列对应同一任务编号(即任务编号1)的计算任务未执行完成时,该第2列记录的每条数据的数值,与该条数据所属的行对应的任务编号有关。以第2列记录的第4条数据为例,该第4条数据属于第4行,第4行对应于任务编号3。对应任务编号1的计算任务未执行完成时,第4条数据的数值表示当前时刻对应任务编号3的计算任务是否依赖于对应任务编号1的计算任务。如果对应任务编号3的计算任务依赖于对应任务编号1的计算任务,则第4条数据的数值可以是第一数值“1”。反之,第4条数据的数值可以是第二数值“0”。相应地,在与该第2列对应同一任务编号(即任务编号1)的计算任务执行完成时,该第2列记录的全部数据为第二数值“0”。
对于第2行来说,无论与该第2行对应同一任务编号(即任务编号1)的计算任务是否执行完成,该第2行记录的每条数据的数值,都与该条数据所属的列对应的任务编号有关。以第2行记录的第4条数据为例,该第4条数据属于第4列,第4行对应于任务编号3。第4条数据的数值表示当前时刻对应任务编号1的计算任务是否依赖于对应任务编号3的计算任务。如果对应任务编号1的计算任务依赖于对应任务编号3的计算任务,则第4条数据的数值可以是第一数值“1”。反之,第4条数据的数值可以是第二数值“0”。相应地,在与该第2行对应同一任务编号(即任务编号1)的计算任务所依赖的其他计算任务全部执行完成时,该第2行记录的全部数据为第二数值“0”。
需要注意的是,无论与该第2列对应同一任务编号(即任务编号1)的计算任务是否执行完成,第2列中属于第2行的一条数据的数值都是第二数值“0”,原因在于计算任务不能被自身所依赖。
本领域技术人员应理解,第一数值、第二数值也可以占用更多的比特,本公开实施例对此不作限制。
通过这种方式,避免使用任务查找表记录完成的依赖关系数据,降低任务查找表的数据量。
下面介绍依赖关系表的更新方式,以及基于依赖关系表进一步更新任务查找表的方式。图6示出根据本公开实施例的依赖关系表的用途的示意图。
如图6所示,在一种可能的实现方式中,计算任务的状态还包括指示该计算任务依赖的其他计算任务是否均执行完成的第四状态,步骤S33还包括:
接收到第一计算任务的任务编号、第一计算任务所在任务组的组编号以及第一计算任务依赖的其他计算任务的任务编号时,根据依赖的其他计算任务对应的列记录的数据,更新与第一计算任务的任务编号对应的行记录的数据;
更新与第一计算任务的任务编号对应的列记录的数据;
根据更新后的与第一计算任务的任务编号对应的行记录的数据,更新任务查找表中当前写指针的数值对应的区域存储的第四状态,作为第一计算任务的第四状态;
在当前写指针的数值等于N-1时,使写指针的数值清零,并翻转写指针翻转信号;
在当前写指针的数值小于N-1时,使写指针的数值加一。
举例来说,参见表2的依赖关系表的示例,假设第一计算任务的任务编号是2,则接收到第一计算任务的任务编号、第一计算任务所在任务组的组编号以及第一计算任务依赖的其他计算任务的任务编号时,可以更新依赖关系表中与任务编号2对应的第3行和第3列。
其中,在更新第3行时,每条数据的数值,根据第一计算任务在当前时刻是否依赖于该条数据所属的列的任务编号对应的计算任务确定,在未依赖于该计算任务时,该条数据的数值可等于第二数值“0”。在依赖于该计算任务时,可进一步基于该计算任务对应的列中属于第3行之外的其他行的数据的数值确定第3行的数据的数值。在其他行的数据都为第二数值“0”时,表示该列对应的计算任务已经执行完成,第一计算任务在当前时刻未依赖于该列对应的计算任务,则确定该条数据的数值也为第二数值“0”;在其他行的数据既有第一数值“1”、又有第二数值“0”,或者都为第一数值“1”时,表示该列对应的计算任务未执行完成,此时,如果第一计算任务在当前时刻未依赖于该列对应的计算任务,则确定该条数据的数值也为第二数值“0”;如果第一计算任务在当前时刻依赖于该列对应的计算任务,则确定该条数据的数值为第一数值“1”。
更新与第一计算任务的任务编号对应的列记录的数据,实际上是更新每一行中属于与第一计算任务的任务编号对应的列的一条数据,其更新方式,与更新与第一计算任务的任务编号对应的行记录的数据的方式类似,在此不再赘述。
根据更新后的与第一计算任务的任务编号对应的行记录的数据,可以更新任务查找表中当前写指针的数值对应的区域存储的第四状态,作为第一计算任务的第四状态。示例性地,如果更新后与第一计算任务的任务编号对应的行中的全部数据都为第二数值“0”,则表示当前时刻该第一计算任务未依赖于其他计算任务,表示该第一计算任务不需要等待其他计算任务执行完成之后才能执行,这与依赖的计算任务已执行完成状态的意义实际相同,因此,可以将任务查找表中当前写指针的数值对应的区域存储的第四状态更新为依赖的计算任务已执行完成状态,作为第一计算任务的第四状态。如果更新后与第一计算任务的任务编号对应的行中的全部数据既有第一数值“1”,也有第二数值“0”,则表示当前时刻该第一计算任务还依赖于其他计算任务,需要等待其他计算任务执行完成之后才能执行,因此,可以将任务查找表中当前写指针的数值对应的区域存储的第四状态更新为依赖的计算任务未执行完成状态,作为第一计算任务的第四状态。
接收到第一计算任务的任务编号、第一计算任务所在任务组的组编号以及第一计算任务依赖的其他计算任务的任务编号时,更新第四状态之后,可以更新写指针。在当前写指针的数值等于N-1时,使写指针的数值清零,并翻转写指针翻转信号;在当前写指针的数值小于N-1时,使写指针的数值加一,写指针翻转信号保持不变。
通过这种方式,可以使得任务查找表在具备记录与依赖关系相关的第四状态的同时,保持较小的数据量,以保证较高的查询效率。
下面介绍计算任务派发时对任务查找表的示例性更新方式。
在一种可能的实现方式中,步骤S32中,将至少一个计算任务的任务编号输出到任务编码器并更新任务查找表,包括:
将任务查找表存储的至少一个计算任务的第一状态更新为已派发状态。
举例来说,派发出计算任务时,对任务查找表的更新主要是更新其中存储的、指示计算任务是否已派发的第一状态。示例性地,可以是根据至少一个计算任务的任务编号,在任务查找表中找到与至少一个计算任务对应的至少一个区域,并将找到的区域中的第一状态更新为已派发状态。
通过这种方式,使得有新任务派发时,任务查找表可以及时、准确地完成更新,保证基于任务查找表查找到满足派发条件的计算任务的准确度。
下面介绍计算任务执行完成时任务查找表的示例性更新方式。
在一种可能的实现方式中,步骤S33还包括:
接收到第一计算任务的任务执行完成信息时,将任务查找表存储的第一计算任务的第三状态更新为执行完成状态;
更新依赖关系表中与第一计算任务的任务编号对应的列记录的数据,使该列记录的全部数据为第二数值;
根据更新后的依赖关系表,更新任务查找表中各计算任务的第四状态;
在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值等于N-1时,使读指针的数值清零,并翻转读指针翻转信号;
在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值小于N-1时,使读指针的数值加一。
举例来说,第一计算任务执行完成时,执行第一计算任务的对象(通常是处理器)可反馈第一计算任务的任务执行完成信息(携带有第一计算任务的任务编号)到数据处理系统。在接收到第一计算任务的任务执行完成信息时,数据处理系统也更新任务查找表,主要是更新其中存储的、指示计算任务是否已执行完成的第三状态。示例性地,可以是根据第一计算任务的任务编号,在任务查找表中找到与第一计算任务对应的区域,并将找到的区域中的第三状态更新为已执行完成状态。
计算任务是否执行完成影响计算任务之间的依赖关系,因此,依赖关系表中、与第一计算任务的任务编号对应的列记录的数据也更新,示例性地,可以是该列中的全部数据更新为第二数值“0”。
相应地,根据更新后的依赖关系表,可更新任务查找表中各计算任务的第四状态,示例性地,如果更新后与某一计算任务的任务编号对应的行中的全部数据都为第二数值“0”,可以将任务查找表中该计算任务的任务编号对应的区域存储的第四状态更新为依赖的计算任务已执行完成状态。
在第一计算任务已经执行完成时,第一计算任务在任务查找表中对应的区域存储的信息已经没有再被查询的必要。如果当前读指针的数值指向存储第一计算任务的状态的区域,且当前读指针的数值等于N-1时,可使读指针的数值清零,并翻转读指针翻转信号,之后再查询任务查找表时,将从第0个区域开始查询。如果当前读指针的数值指向存储第一计算任务的状态的区域,且当前读指针的数值小于N-1时,使读指针的数值加一即可,不必翻转读指针翻转信号。
通过这种方式,可以实现计算任务执行完成时对任务查找表的及时、准确更新。
下面介绍计算任务资源初始化完成时任务查找表的示例性更新方式。
在一种可能的实现方式中,步骤S33还包括:
接收到第一计算任务的资源初始化完成信息时,将任务查找表存储的第一计算任务的第二状态更新为资源初始化完成状态。
举例来说,第一计算任务资源初始化完成时,完成资源初始化的对象(可能是缓存、微处理器等)可反馈第一计算任务的资源初始化完成信息(携带有第一计算任务的任务编号)到数据处理系统。在接收到第一计算任务的资源初始化完成信息时,数据处理系统也更新任务查找表,主要是更新其中存储的、指示计算任务是否已完成资源初始化的第二状态。示例性地,可以是根据第一计算任务的任务编号,在任务查找表中找到与第一计算任务对应的区域,并将找到的区域中的第二状态更新为资源初始化完成状态。
也可以在数据处理系统中设置资源初始化查找表,用于记录各计算任务的资源初始化完成信息。在接收到第一计算任务的资源初始化完成信息时,资源初始化查找表先更新,再根据资源初始化查找表更新任务查找表。
通过这种方式,可以实现计算任务资源初始化完成时对任务查找表的及时、准确更新。
本公开还提出了一种数据处理系统,图7示出根据本公开实施例的数据处理系统的结构的示意图。
如图7所示,在一种可能的实现方式中,所述数据处理系统包括:
任务查找表70,所述任务查找表用于记录所述数据处理系统协助派发的计算任务的状态;查询模块71,用于根据指针,查询所述任务查找表,确定满足派发条件的至少一个计算任务;输出模块72,用于将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,所述任务编码器根据接收到的任务编号派发所述至少一个计算任务;
更新模块73,用于在接收到第一计算任务的相关信息时,根据所述指针更新所述任务查找表,所述相关信息包括所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,所述第一计算任务为所述数据处理系统协助派发的任一计算任务。
本领域技术人员应理解,查询模块71、输出模块72、更新模块73均为非实体的软件功能模块。数据处理系统的结构的示例还可参见图3及其相关描述。
在一种可能的实现方式中,满足派发条件的所述至少一个计算任务所在任务组的组编号是优先级最高的组编号,且所述至少一个计算任务已完成资源初始化,且所述至少一个计算任务依赖的其他计算任务均已执行完成,且所述至少一个计算任务未派发。
在一种可能的实现方式中,所述任务查找表包括N个区域,每个区域记录一个计算任务的状态,所述指针包括写指针和读指针,当前写指针的数值为n,当前读指针的数值为m,0≤n≤N-1,0≤m≤N-1,n、m、N-1是正整数;所述写指针对应写指针翻转信号,所述读指针对应读指针翻转信号,在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,第m个区域到第n-1个区域记录的信息有效,在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,第m个区域到第N-1个区域以及第0个区域到第n-1个区域记录的信息有效,所述查询所述任务查找表,确定满足派发条件的至少一个计算任务,包括:在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,查询第m个区域到第n-1个区域,确定满足派发条件的至少一个计算任务;在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,查询第m个区域到第N-1个区域以及第0个区域到第n-1个区域,确定满足派发条件的至少一个计算任务。
在一种可能的实现方式中,所述数据处理系统还包括先入先出的组编号存储器,用于记录所述数据处理系统协助派发的计算任务所在任务组的组编号,所述组编号存储器中存在时间最长的组编号优先级最高,所述系统还包括:写入模块,用于在接收到第一计算任务所在任务组的组编号、且该组编号未记录于所述组编号存储器中时,将该组编号写入所述组编号存储器;移除模块,用于在查询所述任务查找表,确定与所述至少一个计算任务具有相同组编号的其他计算任务均已派发时,将该组编号从所述组编号存储器中移除。
本领域技术人员应理解,写入模块、移除模块均为非实体的软件功能模块。数据处理系统的结构的示例还可参见图5和图6及其相关描述。
在一种可能的实现方式中,所述计算任务的状态包括指示该计算任务是否被派发的第一状态、指示该计算任务是否完成资源初始化的第二状态、指示该计算任务是否执行完成的第三状态,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号不相同时,表示所述任务查找表已满且记录的信息全部有效;所述在接收到第一计算任务的相关信息时,更新所述任务查找表,包括:接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,判断当前写指针的数值与当前读指针的数值是否相等,以及当前读指针翻转信号和当前写指针翻转信号是否相同;在当前写指针的数值与当前读指针的数值不相等时,或者,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号也相同时,将所述任务编号、所述组编号写入所述任务查找表中当前写指针的数值对应的区域;将该区域存储的第一状态更新为未派发状态,作为所述第一计算任务的第一状态;将该区域存储的第二状态更新为未完成资源初始化状态,作为所述第一计算任务的第二状态;将该区域存储的第三状态更新为未执行完成状态,作为所述第一计算任务的第三状态。
在一种可能的实现方式中,所述数据处理系统还包括依赖关系表,所述依赖关系表包括N行N列的数据,每条数据的数值等于第一数值或者第二数值,第n行用于记录与该第n行对应同一任务编号的计算任务所依赖的其他计算任务是否执行完成,第n列用于记录与该第n列对应同一任务编号的计算任务是否执行完成,0≤n≤N-1,n、N是正整数;在与该第n列对应同一任务编号的计算任务执行完成时,该第n列记录的全部数据为第二数值;在与该第n行对应同一任务编号的计算任务所依赖的其他计算任务全部执行完成时,该第n行记录的全部数据为第二数值。
在一种可能的实现方式中,所述计算任务的状态还包括指示该计算任务依赖的其他计算任务是否均执行完成的第四状态,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,根据所述依赖的其他计算任务对应的列记录的数据,更新与所述第一计算任务的任务编号对应的行记录的数据;更新与所述第一计算任务的任务编号对应的列记录的数据;根据更新后的与所述第一计算任务的任务编号对应的行记录的数据,更新所述任务查找表中当前写指针的数值对应的区域存储的第四状态,作为所述第一计算任务的第四状态;在当前写指针的数值等于N-1时,使写指针的数值清零,并翻转所述写指针翻转信号;在当前写指针的数值小于N-1时,使写指针的数值加一。
在一种可能的实现方式中,所述将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,包括:将所述任务查找表存储的所述至少一个计算任务的第一状态更新为已派发状态。
在一种可能的实现方式中,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的任务执行完成信息时,将所述任务查找表存储的所述第一计算任务的第三状态更新为执行完成状态;更新所述依赖关系表中与所述第一计算任务的任务编号对应的列记录的数据,使该列记录的全部数据为第二数值;根据更新后的所述依赖关系表,更新所述任务查找表中各计算任务的第四状态;在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值等于N-1时,使读指针的数值清零,并翻转所述读指针翻转信号;在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值小于N-1时,使读指针的数值加一。
在一种可能的实现方式中,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:接收到所述第一计算任务的资源初始化完成信息时,将所述任务查找表存储的所述第一计算任务的第二状态更新为资源初始化完成状态。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图8示出根据本公开实施例的装置1900的框图。例如,装置1900可以被提供尚未所述的电子设备。参照图8,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出接口1958(I/O接口)。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种数据处理方法,其特征在于,所述方法应用于数据处理系统,所述数据处理系统包括任务查找表,所述任务查找表用于记录所述数据处理系统协助派发的计算任务的状态,所述方法包括:
根据指针,查询所述任务查找表,确定满足派发条件的至少一个计算任务;
将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,所述任务编码器根据接收到的任务编号派发所述至少一个计算任务;
在接收到第一计算任务的相关信息时,根据所述指针更新所述任务查找表,所述相关信息包括所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,所述第一计算任务为所述数据处理系统协助派发的任一计算任务。
2.根据权利要求1所述的方法,其特征在于,
满足派发条件的所述至少一个计算任务所在任务组的组编号是优先级最高的组编号,且所述至少一个计算任务已完成资源初始化,且所述至少一个计算任务依赖的其他计算任务均已执行完成,且所述至少一个计算任务未派发。
3.根据权利要求1所述的方法,其特征在于,所述任务查找表包括N个区域,每个区域记录一个计算任务的状态,所述指针包括写指针和读指针,当前写指针的数值为n,当前读指针的数值为m,0≤n≤N-1,0≤m≤N-1,n、m、N-1是正整数;
所述写指针对应写指针翻转信号,所述读指针对应读指针翻转信号,在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,第m个区域到第n-1个区域记录的信息有效,在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,第m个区域到第N-1个区域以及第0个区域到第n-1个区域记录的信息有效,
所述查询所述任务查找表,确定满足派发条件的至少一个计算任务,包括:
在m<n,且当前读指针翻转信号和当前写指针翻转信号相同时,查询第m个区域到第n-1个区域,确定满足派发条件的至少一个计算任务;
在m>n,且当前读指针翻转信号和当前写指针翻转信号不同时,查询第m个区域到第N-1个区域以及第0个区域到第n-1个区域,确定满足派发条件的至少一个计算任务。
4.根据权利要求2所述的方法,其特征在于,所述数据处理系统还包括先入先出的组编号存储器,用于记录所述数据处理系统协助派发的计算任务所在任务组的组编号,所述组编号存储器中存在时间最长的组编号优先级最高,
所述方法还包括:
在接收到第一计算任务所在任务组的组编号、且该组编号未记录于所述组编号存储器中时,将该组编号写入所述组编号存储器;
查询所述任务查找表,确定与所述至少一个计算任务具有相同组编号的其他计算任务均已派发时,将该组编号从所述组编号存储器中移除。
5.根据权利要求3所述的方法,其特征在于,所述计算任务的状态包括指示该计算任务是否被派发的第一状态、指示该计算任务是否完成资源初始化的第二状态、指示该计算任务是否执行完成的第三状态,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号不相同时,表示所述任务查找表已满且记录的信息全部有效;
所述在接收到第一计算任务的相关信息时,更新所述任务查找表,包括:
接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,判断当前写指针的数值与当前读指针的数值是否相等,以及当前读指针翻转信号和当前写指针翻转信号是否相同;
在当前写指针的数值与当前读指针的数值不相等时,或者,在当前写指针的数值与当前读指针的数值相等、且当前读指针翻转信号和当前写指针翻转信号也相同时,将所述任务编号、所述组编号写入所述任务查找表中当前写指针的数值对应的区域;
将该区域存储的第一状态更新为未派发状态,作为所述第一计算任务的第一状态;
将该区域存储的第二状态更新为未完成资源初始化状态,作为所述第一计算任务的第二状态;将该区域存储的第三状态更新为未执行完成状态,作为所述第一计算任务的第三状态。
6.根据权利要求5所述的方法,其特征在于,所述数据处理系统还包括依赖关系表,所述依赖关系表包括N行N列的数据,每条数据的数值等于第一数值或者第二数值,第n行用于记录与该第n行对应同一任务编号的计算任务所依赖的其他计算任务是否执行完成,第n列用于记录与该第n列对应同一任务编号的计算任务是否执行完成,0≤n≤N-1,n、N是正整数;在与该第n列对应同一任务编号的计算任务执行完成时,该第n列记录的全部数据为第二数值;
在与该第n行对应同一任务编号的计算任务所依赖的其他计算任务全部执行完成时,该第n行记录的全部数据为第二数值。
7.根据权利要求6所述的方法,其特征在于,所述计算任务的状态还包括指示该计算任务依赖的其他计算任务是否均执行完成的第四状态,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:
接收到所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号以及所述第一计算任务依赖的其他计算任务的任务编号时,
根据所述依赖的其他计算任务对应的列记录的数据,更新与所述第一计算任务的任务编号对应的行记录的数据;
更新与所述第一计算任务的任务编号对应的列记录的数据;
根据更新后的与所述第一计算任务的任务编号对应的行记录的数据,更新所述任务查找表中当前写指针的数值对应的区域存储的第四状态,作为所述第一计算任务的第四状态;
在当前写指针的数值等于N-1时,使写指针的数值清零,并翻转所述写指针翻转信号;
在当前写指针的数值小于N-1时,使写指针的数值加一。
8.根据权利要求5所述的方法,其特征在于,所述将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,包括:
将所述任务查找表存储的所述至少一个计算任务的第一状态更新为已派发状态。
9.根据权利要求7所述的方法,其特征在于,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:
接收到所述第一计算任务的任务执行完成信息时,将所述任务查找表存储的所述第一计算任务的第三状态更新为执行完成状态;
更新所述依赖关系表中与所述第一计算任务的任务编号对应的列记录的数据,使该列记录的全部数据为第二数值;
根据更新后的所述依赖关系表,更新所述任务查找表中各计算任务的第四状态;
在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值等于N-1时,使读指针的数值清零,并翻转所述读指针翻转信号;
在当前读指针的数值指向存储所述第一计算任务的状态的区域,且当前读指针的数值小于N-1时,使读指针的数值加一。
10.根据权利要求5所述的方法,其特征在于,所述在接收到第一计算任务的相关信息时,更新所述任务查找表,还包括:
接收到所述第一计算任务的资源初始化完成信息时,将所述任务查找表存储的所述第一计算任务的第二状态更新为资源初始化完成状态。
11.一种数据处理系统,其特征在于,所述数据处理系统包括:
任务查找表,所述任务查找表用于记录所述数据处理系统协助派发的计算任务的状态;
查询模块,用于根据指针,查询所述任务查找表,确定满足派发条件的至少一个计算任务;输出模块,用于将所述至少一个计算任务的任务编号输出到任务编码器并更新所述任务查找表,所述任务编码器根据接收到的任务编号派发所述至少一个计算任务;
更新模块,用于在接收到第一计算任务的相关信息时,根据所述指针更新所述任务查找表,所述相关信息包括所述第一计算任务的任务编号、所述第一计算任务所在任务组的组编号、依赖的其他计算任务的任务编号、资源初始化完成信息、任务执行完成信息中的一种或多种,所述第一计算任务为所述数据处理系统协助派发的任一计算任务。
12.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至10中任意一项所述的方法。
13.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至10中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310826649.8A CN116561133B (zh) | 2023-07-06 | 2023-07-06 | 数据处理方法、系统、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310826649.8A CN116561133B (zh) | 2023-07-06 | 2023-07-06 | 数据处理方法、系统、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116561133A CN116561133A (zh) | 2023-08-08 |
CN116561133B true CN116561133B (zh) | 2023-09-08 |
Family
ID=87486478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310826649.8A Active CN116561133B (zh) | 2023-07-06 | 2023-07-06 | 数据处理方法、系统、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116561133B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792950A (zh) * | 2020-12-02 | 2021-12-14 | 北京京东拓先科技有限公司 | 任务派发方法及装置、计算机可读存储介质、电子设备 |
CN114493354A (zh) * | 2022-02-16 | 2022-05-13 | 平安科技(深圳)有限公司 | 任务处理方法、系统、运行控制装置及可读存储介质 |
CN115936348A (zh) * | 2022-11-18 | 2023-04-07 | 浙江惠瀜网络科技有限公司 | 一种兼容多任务派发的派发方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10275254B2 (en) * | 2017-03-08 | 2019-04-30 | International Business Machines Corporation | Spin loop delay instruction |
-
2023
- 2023-07-06 CN CN202310826649.8A patent/CN116561133B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792950A (zh) * | 2020-12-02 | 2021-12-14 | 北京京东拓先科技有限公司 | 任务派发方法及装置、计算机可读存储介质、电子设备 |
CN114493354A (zh) * | 2022-02-16 | 2022-05-13 | 平安科技(深圳)有限公司 | 任务处理方法、系统、运行控制装置及可读存储介质 |
CN115936348A (zh) * | 2022-11-18 | 2023-04-07 | 浙江惠瀜网络科技有限公司 | 一种兼容多任务派发的派发方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116561133A (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107871301B (zh) | 在gpu中的任务调度 | |
US10754704B2 (en) | Cluster load balancing based on assessment of future loading | |
US20180293077A1 (en) | Operation of a multi-slice processor with an expanded merge fetching queue | |
US10831738B2 (en) | Parallelized in-place radix sorting | |
US10942772B2 (en) | Dispatching jobs for execution in parallel by multiple processors | |
CN102129425A (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
US10209757B2 (en) | Reducing power consumption in a multi-slice computer processor | |
US10572463B2 (en) | Efficient handling of sort payload in a column organized relational database | |
US10585807B2 (en) | Balanced cache for recently frequently used data | |
US20180004527A1 (en) | Operation of a multi-slice processor implementing prioritized dependency chain resolution | |
US10620950B2 (en) | Message parsing in a distributed stream processing system | |
US10318294B2 (en) | Operation of a multi-slice processor implementing dependency accumulation instruction sequencing | |
CN116880908B (zh) | 一种指令处理方法、装置、电子设备及可读存储介质 | |
US9858040B2 (en) | Parallelized in-place radix sorting | |
CN116561133B (zh) | 数据处理方法、系统、电子设备、存储介质 | |
CN109213591B (zh) | 协程运行栈的分配方法和装置 | |
CN111433738A (zh) | 控制器事件队列 | |
US10977034B2 (en) | Instruction completion table with ready-to-complete vector | |
US10122643B2 (en) | Systems and methods for reorganization of messages in queuing systems | |
US20230385723A1 (en) | System and method for bipartite matching | |
US11182167B2 (en) | Method to determine the oldest instruction in an instruction queue of a processor with multiple instruction threads | |
US9971687B2 (en) | Operation of a multi-slice processor with history buffers storing transaction memory state information | |
CN115794327A (zh) | 一种线路分配方法、计算设备及存储介质 | |
CN115414673A (zh) | 排行榜处理方法、装置、存储介质与电子设备 | |
CN112486400A (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 |