CN110543351B - 数据处理方法以及计算机设备 - Google Patents
数据处理方法以及计算机设备 Download PDFInfo
- Publication number
- CN110543351B CN110543351B CN201810571788.XA CN201810571788A CN110543351B CN 110543351 B CN110543351 B CN 110543351B CN 201810571788 A CN201810571788 A CN 201810571788A CN 110543351 B CN110543351 B CN 110543351B
- Authority
- CN
- China
- Prior art keywords
- task
- buffer
- target
- memory
- target task
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 239000000872 buffer Substances 0.000 claims abstract description 1631
- 230000015654 memory Effects 0.000 claims abstract description 855
- 238000000034 method Methods 0.000 claims abstract description 117
- 230000001419 dependent effect Effects 0.000 claims description 124
- 230000036316 preload Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 description 43
- 238000010586 diagram Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 13
- 230000007306 turnover Effects 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- 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
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种数据处理方法。本申请实施例方法包括:计算机设备生成目标任务,目标任务包括Buffer申请任务或者Buffer释放任务,目标任务为第一任务的后继任务,且为第二任务的前继任务,第一任务和第二任务为存在顺序依赖关系的待执行任务,其中,当目标任务为Buffer申请任务时,第二任务执行时使用Buffer申请任务所对应的Buffer,当目标任务为Buffer释放任务时,第一任务执行时使用Buffer释放任务所对应的Buffer;当目标任务的前继任务已完成后且目标任务的后继任务执行前,所述计算机设备根据目标任务获取目标任务对应的Buffer表项,Buffer表项为包含目标任务对应的Buffer的内存大小、Buffer的内存位置以及Buffer的内存地址的表项,并执行目标任务以申请或者释放目标任务所对应的Buffer。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据处理方法以及计算机设备。
背景技术
存储系统是指计算机中由存放程序和数据的各种存储设备、控制部件以及管理信息调度的硬件和软件所组成的系统,在应用程序运行过程中,会不断涉及到内存分配和释放。
目前,随着人工智能以及大视频等数据密集型的发展,以图形处理为代表的异构计算获得广泛的应用和关注,而在异构计算的过程中涉及到内存的分配和释放,目前异构任务数据交换方式主要是基于设备内存进行数据交换的方式以及通过计算机设备中的缓存管理模块对设备内存的交换数据进行管理,具体的过程为:计算机设备通过应用例程模块申请缓存寄存器Buffer请求,然后Buffer管理模块会同步为该Buffer申请对应的设备内存,然后计算机设备通过应用例程模块再发起依赖于该Buffer的依赖任务,然后计算机设备通过任务调度器再根据该依赖任务调用计算机设备中相应的模块,以使得该相应的模块执行该依赖任务,应用例程模块同步等待该依赖任务执行完成之后,应用例程模块向Buffer管理模块发送释放该Buffer的请求,然后Buffer管理器模块根据该请求释放该Buffer对应的设备内存。
但是,基于设备内存进行数据交换以及计算机设备通过Buffer管理模块对设备内存中的交换数据进行管理的数据交换方式,Buffer在被依赖任务发起前提前申请,那么在计算机设备通过应用例程模块发起该被依赖任务至该被依赖任务执行的过程中,该计算机设备通过Buffer管理模块申请的Buffer处于闲置状态;并且,Buffer的释放只能是在应用例程模块同步等待被依赖任务执行完成之后,从被依赖任务完成至计算机设备中的应用例程模块同步返回之间,该计算机设备通过Buffer管理模块申请的Buffer处于闲置状态,因此,导致了申请的Buffer对应的设备内存的周转效率较低。
发明内容
本申请实施例提供了一种数据处理方法以及计算机设备,用于提高Buffer对应的设备内存的周转效率。
本申请实施例第一方面提供了一种数据处理方法,包括:
当计算机设备在运行过程中,会调用计算机设备的应用程序编程接口,然后根据计算机设备调用该应用程序编程接口产生的参数来生成目标任务,其中,该目标任务可以包括Buffer申请任务或者Buffer释放任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务与该第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为Buffer申请任务时,该第二任务执行时可以使用该Buffer申请任务所对应的Buffer,当该目标任务为Buffer释放任务时,该第一任务执行时可以使用该Buffer释放任务所对应的Buffer;然后,当该目标任务的前继任务已完成且该目标任务的后继任务执行前,该计算机设备可以根据该目标任务获取该目标任务所对应的Buffer表项,其中,该Buffer表项包含有该目标任务所对应的Buffer的内存大小、该Buffer的内存位置以及该Buffer的内存地址的表项,然后,该计算机设备可以执行该目标任务实现申请或者释放该目标任务所对应的Buffer。
本实施例中,计算机设备在对Buffer申请或者Buffer释放之前,计算机设备可以确定目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,计算机设备才会执行该目标任务,所以计算机设备对该Buffer申请可以真正延后至目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,以及计算机设备对该Buffer的释放可以提前至该目标任务的前继任务完成后立即执行,从而提高了Buffer对应的设备内存的周转效率。
一种可能的实现方式中,该目标任务可以包含有该目标任务所对应的Buffer的内存身份标识(identity,ID);该计算机设备根据该目标任务获取该目标任务对应的Buffer表项可以包括:该计算机设备根据该内存ID获取该目标任务所对应的Buffer表项。在该可能的实现方式中,提供了一种具体的该计算机设备获取该目标任务所对应的Buffer表项的具体获取方式,在实际应用当中,提升了方案的可实现性和实用性。
另一种可能的实现方式中,该目标任务可以为Buffer申请任务;该计算机设备执行该目标任务以申请或者释放该目标任务的Buffer可以包括:首先,该计算机设备可以从该Buffer表项当中确定该Buffer的内存大小以及该Buffer的内存位置;然后,计算机设备可以根据该Buffer的内存大小和该Buffer的内存位置为该Buffer确定对应的设备内存;计算机设备可以根据该设备内存更新该Buffer表项中的Buffer的内存地址。在该可能的实现方式中,提供了一种具体的计算机设备执行Buffer申请任务的具体执行方式,在实际应用中,提高了方案的可执行性。
另一种可能的实现方式中,该目标任务可以为Buffer释放任务;该计算机设备执行该目标任务以申请或者释放该目标任务的Buffer可以包括:首先,该计算机设备可以从Buffer表项中确定该目标任务所对应的Buffer的内存地址,然后,该计算机设备可以释放该Buffer的内存地址对应的设备内存,再将该Buffer表项删除。在该可能的实现方式中,提供了一种具体的该计算机设备执行Buffer释放任务的具体执行方式,在实际应用中,提升了方案的可操作性和完整性。
另一种可能的实现方式中,该目标任务可以包含有依赖任务组ID;该计算机设备根据该目标任务获取该目标任务所对应的Buffer表项可以包括:该计算机设备根据该依赖任务组ID获取该目标任务所对应的Buffer表项。在该可能的实现方式中,提供了另一种计算机设备获取该目标任务所对应的Buffer表项的获取方式,在实际应用中,提升了方案的可实现性,增加了方案的多样性。
另一种可能的实现方式中,该目标任务可以为Buffer申请任务;该计算机设备执行该目标任务以申请或者释放该目标任务所对应的Buffer可以包括:首先,该计算机设备可以判断该Buffer表项中的该目标任务对应的Buffer的内存位置是否位于局部内存;如果该Buffer的内存位置位于局部内存,那么该计算机设备可以根据预设的策略确定目标局部内存;然后该计算机设备可以根据目标局部内存更新该Buffer表项中的该Buffer的内存地址以及该Buffer的内存位置;如果该Buffer的内存位置不位于局部内存,那么该计算机设备可以将该Buffer的内存位置设置为全局内存,然后计算机设备可以根据该全局内存更新该Buffer表项中的该Buffer的内存地址以及该Buffer的内存位置。在该可能的实现方式中,提供了另一种计算机设备执行Buffer申请任务的执行方式,在实际应用中,增加了方案的多样性和实用性。
另一种可能的实现方式中,该目标任务可以为Buffer释放任务;该计算机设备执行该目标任务以申请或者释放该目标任务所对应的Buffer可以包括:首先,该计算机设备可以确定该Buffer表项中该目标任务对应的Buffer的内存地址;然后该计算机设备可以释放该Buffer的内存地址对应的设备内存,再将该Buffer表项中的Buffer的内存地址设置为空地址。在该可能的实现方式中,提供了另一种计算机设备执行Buffer释放任务的执行方式,在实际应用过程中,提升了方案的多样性和实用性。
另一种可能的实现方式中,该目标任务可以为Buffer申请任务;在该计算机设备根据该目标任务获取该目标任务所对应的Buffer表项,并执行该目标任务以申请或者释放该目标任务所对应的Buffer之后,该方法还可以包括:首先,该计算机设备可以确定存在预加载数据,然后该计算机设备可以生成拷贝该预加载数据的任务,再执行该拷贝该预加载数据的任务。在该可能的实现方式中,计算机设备执行完成该Buffer申请任务之后,还可以通过确定存在预加载数据,再将预加载数据拷贝至目标位置中,因此,在实际应用过程中,提升了方案的完善度以及可操作性。
另一种可能的实现方式中,该目标任务可以为Buffer释放任务;在该计算机设备根据该目标任务获取该目标任务所对应的Buffer表项,并执行该目标任务以申请或者释放该目标任务所对应的Buffer之后,该方法还可以包括:首先,该计算机设备可以确定存在预存数据,然后,该计算机设备可以生成拷贝该预存数据的任务,再执行该拷贝预存数据的任务。在该可能的实现方式中,该计算机设备执行Buffer释放任务之前,可以确定存在预存数据,然后将预存数据拷贝至目标位置,因此,在实际应用过程中,提升了方案的完整性和实用性。
另一种可能的实现方式中,如果该目标任务为内存拷贝任务,该目标任务中携带有该内存拷贝任务对应的数据拷贝的源地址为合法的内存ID和/或该内存拷贝任务对应的数据拷贝的目的地址为合法的内存ID,那么该方法还可以包括:首先,该计算机设备可以根据该内存ID获取该内存ID对应的Buffer表项,然后,该计算机设备可以将该目标任务中携带的内存ID更换为该Buffer表项中的该Buffer的内存地址,再执行该内存拷贝任务。在该可能的实现方式中,当该目标任务为内存拷贝任务,且该内存拷贝任务中携带有合法的内存ID,提供了一种具体的计算机设备执行该内存拷贝任务的具体执行方式,在实际应用过程中,提升了方案的可实现性和完整性。
另一种可能的实现方式中,如果该目标任务为异构计算任务,并且该目标任务的输入参数中包含有合法的内存ID;该方法可以包括:首先,该计算机设备可以根据该内存ID获取该内存ID对应的Buffer表项;然后,该计算机设备可以将该输入参数中的内存ID更换为该Buffer表项中的该Buffer的内存地址;然后计算机设备可以判断该内存ID对应的Buffer内存位置是否位于局部内存,如果该内存ID对应的Buffer内存位置位于局部内存,那么计算机设备可以根据该局部内存执行该异构计算任务。在该可能的实现方式中,当该目标任务为异构计算任务时,且该异构计算任务中包含有合法的内存ID,提供了一种具体的计算机设备执行该异构计算任务的执行过程,并且,该计算机设备通过任务调度器可以根据局部内存来执行该异构计算任务,由于局部内存的访存性能要优于全局内存,因此计算机设备执行异构计算任务读写访问数据的效率更高,通过本申请的数据处理方法,充分利用了局部内存的访问性能较高的性能,满足了多样化的设备内存应用场景,在实际应用过程中,提升了方案的可实现性以及实用性。
另一种可能的实现方式中,如果该目标任务为异构计算任务,并且该目标任务中包含有依赖任务组ID;该方法还可以包括:首先,该计算机设备可以获取该依赖任务组ID对应的Buffer表项;然后,该计算机设备可以确定该Buffer表项中的Buffer内存位置位于局部内存;计算机设备将该Buffer表项中的Buffer内存地址设置为该异构计算任务的隐式参数,然后再根据该局部内存执行该异构计算任务。在该可能的实现方式中,当该目标任务为异构计算任务,且该异构计算任务携带有依赖任务组ID时,提供了另一种具体的计算机设备执行异构计算任务的执行过程,该计算机设备通过任务调度器可以根据局部内存来执行该异构计算任务,由于局部内存的访存性能要优于全局内存,因此计算机设备执行异构计算任务读写访问数据的效率更高,通过本申请的数据处理方法,充分利用了局部内存的访问性能较高的性能,满足了多样化的设备内存应用场景,在实际应用的过程中,提升了方案的多样性和实用性。
另一种可能的实现方式中,在该计算机设备根据该目标任务获取该目标任务对应的Buffer表项,并执行该目标任务以申请或者释放该目标任务所对应的Buffer之后,该方法还可以包括:该计算机设备可以解除依赖于该目标任务的任务与该目标任务的依赖关系。在该可能的实现方式中,计算机设备执行完成该目标任务之后,可以解除被依赖任务与目标任务的依赖关系,在实际应用中,提供了一种具体的计算机设备如何确定目标任务的前继任务与后继任务的执行情况的方式,提升了方案的可实现性。
另一种可能的实现方式中,该目标任务可以为Buffer申请任务;该计算机设备生成该目标任务可以包括:首先,该计算机设备可以为该目标任务所对应的Buffer申请Buffer表项以及该Buffer表项对应的内存ID;然后,该计算机设备可以根据该应用程序编程接口参数填写该Buffer表项,其中,该应用程序编程接口参数为该计算机设备调用该计算机设备的应用程序编程接口产生的参数,其中,该Buffer表项中的Buffer内存地址为空地址;然后,该计算机设备可以根据该Buffer表项生成Buffer申请任务,其中,该Buffer申请任务包含有该Buffer表项对应的内存ID。在该可能的实现方式中,提供了一种具体的计算机设备生成目标任务的具体方式,在实际应用当中,提升了方案的可实现性。
另一种可能的实现方式中,该目标任务可以为Buffer申请任务;该计算机设备生成该目标任务可以包括:首先,该计算机设备可以根据应用程序编程接口参数填写依赖任务组ID对应的Buffer表项,该应用程序编程接口参数为该计算机设备调用该计算机设备的应用程序编程接口产生的参数,其中,该Buffer表项中Buffer的内存地址为空地址;然后,该计算机设备可以根据该Buffer表项生成Buffer申请任务,该Buffer申请任务包含有依赖任务组ID。在该可能的实现方式中,提供了另一种具体的计算机设备生成目标任务的具体方式,在实际应用当中,提升了方案的多样性和实用性。
另一种可能的实现方式中,该目标任务可以为Buffer释放任务;该Buffer释放任务包含有该Buffer释放任务对应的Buffer的内存ID。在该可能的实现方式中,该Buffer释放任务携带有该Buffer释放任务对应的Buffer的内存ID,用于后续计算机设备根据该内存ID来执行该Buffer释放任务,在实际应用过程中,提升了方案的可实现性。
另一种可能的实现方式中,该目标任务可以为Buffer释放任务;该Buffer释放任务包含有该Buffer释放任务对应的Buffer的依赖任务组ID。在该可能的实现方式中,该Buffer释放任务携带有该Buffer释放任务对应的Buffer的依赖任务组ID,用于后续计算机设备根据该依赖任务组ID来执行该Buffer释放任务,在实际应用过程中,提升了方案的多样性和可实现性。
另一种可能的实现方式中,该目标任务为Buffer申请任务;该计算机设备生成该目标任务可以包括:首先,该计算机设备可以确定该异构计算任务中携带有该目标任务所对应的Buffer的相关信息,其中,该异构计算任务为该计算机设备生成的任务,该异构计算任务为异构计算任务的前继任务已完成,且该异构计算任务的后继任务待执行的任务,该Buffer的相关信息包括该异构计算任务所对应的Buffer的内存大小、该Buffer的内存地址以及该Buffer的内存位置;然后,该计算机设备可以根据该Buffer的相关信息填写该异构计算任务所对应的Buffer表项,再根据该Buffer表项生成Buffer申请任务。在该可能的实现方式中,该计算机设备可以根据异构计算任务中携带的信息来生成Buffer申请任务,提供了另一种计算机设备生成Buffer申请任务的生成方式,在实际应用过程中,提升了方案的多样性。
另一种可能的实现方式中,该目标任务可以为Buffer释放任务;该计算机设备生成该目标任务可以包括:首先,该计算机设备可以确定该异构计算任务中携带有该目标任务所对应的Buffer的相关信息,该异构计算任务为该计算机设备生成的任务,该异构计算任务为异构计算任务的前继任务已完成,且该异构计算任务的后继任务待执行的任务,该Buffer的相关信息可以包括异构计算任务所对应的Buffer的内存大小、该Buffer的内存地址以及该Buffer的内存位置;然后,该计算机设备可以获取该目标任务所对应的Buffer表项,再根据该Buffer表项生成Buffer释放任务。在该可能的实现方式中,提供了另一种计算机设备生成Buffer释放任务的生成方式,在实际应用中,提升了方案的多样性。
另一种可能的实现方式中,该异构计算任务该可以包含有预加载数据的相关信息,该预加载数据的相关信息可以包括预加载数据的源地址、预加载数据数据长度以及预加载数据在该Buffer中的偏移地址;在该计算机设备根据该目标任务获取该目标任务对应的Buffer表项,并执行该目标任务以申请或者释放该目标任务所对应的Buffer之后,该方法还可以包括:计算机设备可以根据该预加载数据的相关信息生成拷贝该预加载数据的任务,然后再执行该拷贝该预加载数据的任务。在该可能的实现方式中,提供了另一种计算机设备确定预加载数据以及执行拷贝预加载数据至目标位置的方法,在实际应用中,提升了方案的多样性。
另一种可能的实现方式中,该异构计算任务还可以包含有预存数据的相关信息,该预存数据的相关信息可以包括该预存数据的保存地址、预存数据长度以及该预存数据在Buffer中的偏移地址;在该计算机设备根据该目标任务获取该目标任务对应的Buffer表项,并执行该目标任务以申请或者释放该目标任务所对应的Buffer之后,该方法还可以包括:首先,该计算机设备可以根据该预存数据的相关信息生成拷贝该预存数据的任务;然后,该计算机设备执行拷贝该预存数据的任务。在该可能的实现方式中,提供了另一种计算机设备确定预存数据以及执行拷贝预存数据至目标位置的方法,在实际应用中,提升了方案的多样性和实用性。
另一种可能的实现方式中,该计算机设备确定异构计算任务中携带有该目标任务所对应的Buffer的相关信息之前,该方法还可以包括:该计算机设备可以根据应用程序编程接口参数填写该异构计算任务所对应的Buffer表项,其中,该应用程序编程接口参数为该计算机设备调用该计算机设备的应用程序编程接口时产生的参数;然后,该计算机设备可以根据该Buffer表项生成该异构计算任务,其中,该异构计算任务包含有该异构计算任务所对应的Buffer的相关信息。在该可能的实现方式中,提供了一种具体的计算机设备生成异构计算任务的具体生成方式,在实际应用的过程中,提升了方案的可实现性和完整性。
本申请实施例第二方面提供了一种计算机设备,该计算机设备具有实现上述第一方面计算机设备行为的功能,该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能对应的模块。
本申请实施例中第三方面提供了一种计算机设备,该计算机设备包括:处理器、存储器、输入输出设备以及总线;该处理器、存储器、输入输出设备分别与该总线相连,该存储器中存储有计算机指令;该处理器在执行该存储器中的计算机指令时,该存储器中存储有计算机指令;该处理器在执行该存储器中的计算机指令时,用于实现如第一方面任意一种实现方式。
本申请实施例第四方面提供了一种芯片系统,该芯片系统包括处理器,用于支持网络设备实现上述第一方面中所涉及的功能,例如,例如发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存网络设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
本申请实施例第五方面提供了一种包括指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得该计算机执行如第一方面中任一种的实现方式。
本申请实施例第六方面提供了一种计算机可读存储介质,其特征在于,包括指令,当该指令在计算机上运行时,使得计算机执行如第一方面中任一种实现方式。
附图说明
图1-A为本申请实施例中的一种应用场景系统框架示意图;
图1-B为本申请实施例中数据处理方法一种应用场景示意图;
图2为本申请实施例中数据处理方法的一种实施例示意图;
图3为本申请实施例中数据处理方法的另一种实施例示意图;
图4为本申请实施例中数据处理方法的另一种实施例示意图;
图5为本申请实施例中数据处理方法的另一种实施例示意图;
图6为本申请实施例中数据处理方法的另一种实施例示意图;
图7为本申请实施例中数据处理方法的另一种应用场景示意图;
图8为本申请实施例中数据处理方法的另一种应用场景示意图;
图9为本申请实施例中数据处理方法的另一种实施例示意图;
图10为本申请实施例中计算机设备的一种结构示意图;
图11为本申请实施例中计算机设备的另一种结构示意图。
具体实施方式
本申请实施例提供了一种数据处理方法以及计算机设备,用于提高Buffer对应的设备内存的周转效率。
请参阅图1-A,图1-A为本申请实施例提供的一个应用场景系统框架示意图,其中,在图1-A为本申请实施例中计算机设备的一种系统架构,其中计算机设备可以为异构计算系统架构,也可以为同构计算系统架构,具体本申请不做限定。下面仅以图1-A的异构计算系统架构为例进行介绍,其中,该计算机设备包括主机Host系统和从机系统,该主机系统和从机系统之间通过总线Bus连接,该总线Bus用于连接主机系统和从机系统,支持主机系统和从机系统直接进行数据访问等功能。其中,该Host系统中包括中央处理器(centralprocessing unit,CPU)、主机内存、直接内存访问(direct memory access,DMA)等硬件模块以及异构计算运算时模块和应用例程模块等软件模块。其中,该CPU用于执行异构计算运行时模块以及应用例程模块的程序;该主机内存用于存储CPU中执行的程序代码等;DMA用于在该异构计算系统中进行数据交换时对数据拷贝;该从机系统包括设备计算单元以及内存装置,其中,内存单元分包括设备局部内存和设备全局内存。该计算单元用于执行异构计算任务;该设备局部内存为该局部内存对应的计算单元读写访问的内存区域;该设备全局内存为该从机系统中所有计算单元都可以读写访问的内存区域。该异构计算运行时模块用于提供对设备异构计算以及相关功能的软件编程控制接口,比如主机内存与设备全局内存之间的数拷贝、异构任务的发起等。应用例程模块用于调用异构计算运行时模块的应用程序编程接口进行异构编程,以实现特定领域的计算需求。
在异构计算系统架构中,目前是基于设备全局内存进行异构任务数据交换,由于现有当中采用Buffer同步申请以及Buffer异步使用的机制,导致了Buffer对应的设备内存周转效率低下的问题,对此本申请提供了一种数据处理方法,用于提高Buffer对应的设备内存的周转效率。
其中,该计算机设备中的异构计算运行时模块与计算机设备中的应用例程模块相连接,该计算机设备中的异构计算运行时模块包括多个子模块,具体请参阅图1-B,图1-B为异构计算运行时模块中包括任务生成装置、任务缓存池、任务调度器、数据拷贝发射器、异构计算发射器、Buffer管理器以及Buffer资源池。
其中,任务生成装置用于通过应用例程模块调用返回的应用程序编程接口参数来生成相应的任务,然后将生成的任务放入任务缓存池中。任务缓存池用于接收并缓存任务生成装置根据应用例程模块输入的应用程序编程接口参数生成的任务,可以包括数据拷贝任务、异构计算任务、Buffer申请任务或者Buffer释放任务等,每个任务包含有对其他任务的依赖信息。
任务调度器用于从任务缓存池选择已解除与其他任务的依赖关系的任务,并调度提交给相应的模块执行该任务等功能。该数据拷贝发射器用于接收任务调度器派发的数据拷贝任务,并通过相应的硬件驱动提交给DMA进行数据的搬移。该异构计算发射器用于接收任务调度器派发的异构计算任务,并通过该异构计算发射器调用相应的计算单元执行该异构计算任务。
Buffer管理器用于接收任务调度器派发的Buffer申请任务或者Buffer释放任务,其中,该Buffer申请任务或者Buffer释放任务的前继任务已完成,且其后继任务待执行,该前继任务与该后继任务在逻辑上存在顺序依赖关系,实现对用于数据交换的Buffer的申请或者释放,并更新Buffer资源池;该Buffer资源池用于存储每个Buffer的相关信息,以供任务调度器查询每个Buffer的相关信息。通过任务调度器向Buffer管理器派发Buffer申请任务或者Buffer释放任务,而且是在任务调度器确定该Buffer申请任务或者该Buffer释放任务的前继任务已完成且后继任务待执行的情况下,任务调度器才会向Buffer管理器派发该Buffer申请任务或者Buffer释放任务,从而提高Buffer对应的设备内存的周转效率。
下面对本申请实施例中的“关键词”进行解释说明,方便读者理解:
前继任务:对于某一任务或者某些任务,只有在该任务执行完成后,该某一任务或者某些任务才能执行,两者在逻辑上存在顺序依赖关系,该任务为该某一任务的前继任务;比如,前继任务为拷贝数据任务,该某一任务为异构计算任务,且该异构计算任务执行时需要用户该拷贝数据任务拷贝至目标地址的数据,所以该拷贝数据任务为该异构计算任务的前继任务。再举例说明,某一任务为Buffer释放任务,异构计算任务的执行需要使用该Buffer释放任务所对应的Buffer,那么可知该异构计算任务为该Buffer释放任务的前继任务。
后继任务:假设第一任务,只有在该第二任务执行完成后,该第一任务才能执行,两者在逻辑上存在顺序依赖关系,则该第一任务为该第二任务的后继任务。例如:第一任务为Buffer释放任务,第一任务为异构计算任务,该异构计算任务执行时依赖于该Buffer释放任务所对应的Buffer,所以可知,该只有该异构计算任务执行完成后,该Buffer释放任务才能执行,所以该异构计算任务为该Buffer释放任务的后继任务。
顺序依赖关系:指任务与任务之间在执行过程中存在逻辑上的先后执行顺序的关系,比如,异构计算任务执行时依赖于Buffer申请的内存,那么该Buffer申请任务与该异构计算任务存在顺序依赖关系。
目标任务:该任务为其前继任务已完成,且该任务的后继任务执行前的任务,该前继任务与该后继任务存在顺序依赖关系;比如,该目标任务为Buffer申请任务,该目标任务的后继任务为异构计算任务,该目标任务的前继任务为内存拷贝任务,该异构计算任务的执行需要使用该Buffer对应的内存,该Buffer申请任务需要在执行该内存拷贝任务之后才能执行,因此该内存拷贝任务为该Buffer申请任务的前继任务,所以该异构计算任务要执行时,必须要在该Buffer已经申请好后才能执行。
Buffer资源池:用于存储每个Buffer的相关信息的数据表,Buffer的相关信息包括Buffer的内存大小、该Buffer的内存地址以及该Buffer的内存位置等。
依赖任务组:应用例程模块指定的逻辑上存在顺序依赖关系的若干个任务。
下面从计算机设备的角度来对本申请实施例中数据处理方法进行介绍,请参阅图2,本申请实施例中数据处理方法的一个实施例包括:
201、计算机设备生成目标任务。
当计算机设备通过应用例程模块运行代码的过程中,会调用计算机设备的应用程序编程接口,然后通过该应用例程模块向该计算机设备中的该应用程序编程接口输入相应的参数,那么该计算机设备可以根据该参数生成目标任务,其中,该目标任务可以包括Buffer申请任务或者Buffer释放任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务和第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为Buffer申请任务的时候,该第二任务执行时使用该Buffer申请任务所对应的Buffer,当该目标任务为该Buffer释放任务时,该第一任务执行时使用该Buffer释放任务所对应的Buffer。
需要说明的是,该计算机设备生成目标任务可以是计算机设备根据计算机设备中的应用例程模块调用计算机设备的应用程序编程接口时输入的参数来生成目标任务,也可以是计算机设备获取到已生成的异构计算任务,且该异构计算任务的前继任务已完成,其后继任务待执行,那么计算机设备可以根据该异构计算任务中携带的Buffer的相关信息来生成目标任务,本申请对此不做限定。
202、当该目标任务的前继任务已完成且该目标任务的后继任务执行前,该计算机设备根据该目标任务获取该目标任务所对应的Buffer表项。
计算机设备在生成该目标任务之后,当该目标任务的前继任务已完成,并且该目标任务的后继任务执行前,该计算机设备可以根据该目标任务来获取该目标任务所对应的Buffer表项。具体的,该计算机设备可以根据该目标任务中携带的Buffer的内存ID从计算机设备中的Buffer资源池中获取该内存ID的Buffer表项,也可以是该计算机设备根据该目标任务中携带的依赖任务组ID从计算机设备中的Buffer资源池中获取该依赖任务组ID的Buffer表项,还可以是计算机设备根据异构计算任务从该计算机设备的Buffer资源池中获取该异构计算任务所对应的Buffer表项,具体本申请对此不做限定。
203、计算机设备执行该目标任务以申请或者释放该目标任务所对应的Buffer。
计算机设备获取到该Buffer表项之后,可以执行该目标任务,从而实现申请或者释放该目标任务所对应的Buffer。具体可以是当该目标任务为Buffer申请任务时,该计算机设备可以根据该Buffer表项确定Buffer的内存大小以及内存位置,然后根据该内存大小以及内存位置为该Buffer申请对应的设备内存,然后将该设备内存的内存地址填写到该Buffer表项中;当Buffer释放任务时,该计算机设备可以根据该Buffer表项确定该Buffer的设备内存,然后将该Buffer对应的设备内存释放,在该计算机设备将该Buffer所对应的设备内存释放完成后,该计算机设备可以将该Buffer表项删除,而当该目标任务为依赖任务组中的一个任务时,则计算机设备可以将该Buffer表项中的内存地址设置为空地址,具体可以根据Buffer资源池的结构所决定后续执行目标任务的过程。
本申请实施例中,计算机设备生成目标任务,其中,该目标任务包括Buffer申请任务或者Buffer释放任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务和第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为该Buffer申请任务的时候,该第二任务执行时使用该Buffer申请任务所对应的Buffer,当该目标任务为该Buffer释放任务时,该第一任务执行时使用该Buffer释放任务所对应的Buffer,当该目标任务的前继任务已完成后且该目标任务的后继任务执行前,该计算机设备可以根据该目标任务获取该目标任务对应的Buffer表项,其中,该Buffer表项为包含该目标任务对应的Buffer的内存大小、该Buffer的内存位置以及该Buffer的内存地址的表项,然后该计算机设备执行该目标任务以申请或者释放该目标任务所对应的Buffer。因此,计算机设备在对Buffer申请或者Buffer释放之前,计算机设备可以确定目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,计算机设备才会执行该目标任务,所以计算机设备对该Buffer申请可以真正延后至目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,以及计算机设备对该Buffer的释放可以提前至该目标任务的前继任务完成后立即执行,从而提高了Buffer对应的设备内存的周转效率。
下面结合图1-B中该计算机设备中的异构运行时模块中的每个模块来具体介绍本申请实施例的数据处理方法,将计算机设备执行的具体过程细致到具体的模块的执行过程。
本申请实施例中,在Buffer的申请过程中,该计算机设备中的Buffer管理器在确定所需要申请的Buffer的内存位置位于局部内存时,该Buffer管理器可以根据预设的策略确定目标局部内存,具体可以是Buffer管理器可以直接对应的局部内存作为该Buffer的内存地址,也可以是Buffer管理器根据该局部内存对应的计算单元的负载情况或者局部内存的空闲情况来确定目标局部内存,具体此处不做限定。在后续的实施例中,仅以该Buffer管理器根据计算单元的负载情况以及局部内存的空闲情况来确定目标局部内存为例进行说明。
在本申请实施例中,计算机设备中的任务调度器获取到异构计算任务之后,当该任务调度器根据该异构计算任务确定该异构计算任务对应的Buffer的内存位置不位于局部内存时,此时任务调度器可以从全局内存对应的计算单元中选取一个目标计算单元来执行该异构计算任务,具体可以是任务调度器根据计算单元的负载量情况选取一个负载量最小的计算单元来执行该异构计算任务,任务调度器还可以根据其他策略选择目标计算单元,具体此处不做限定,在后续实施例中,仅以任务调度器选取负载量最小的计算单元来执行该异构计算任务为例进行说明。
本申请实施例中,计算机设备中的Buffer资源池中Buffer表项可以是以Buffer为维度的数据表,计算机设备中的应用例程模块调用计算机设备中的任务生成装置中的应用程序接口,然后将相应的应用程序编程接口参数输入该任务生成装置,比如当应用例程模块调用任务生成装置发起申请Buffer任务,此时该应用例程模块会将该申请Buffer任务的参数输入到任务生成装置中,然后任务生成装置可以在Buffer资源池中申请Buffer表项,然后根据应用程序接口参数填写该Buffer表项,并创建Buffer申请任务,并且该Buffer申请任务中携带有该Buffer的内存ID,然后任务生成装置将创建的Buffer申请任务放入计算机设备中的任务缓存池当中,并返回内存ID至应用例程模块;或者任务生成装置在Buffer资源池中创建Buffer释放任务,并将该Buffer释放任务放入该任务缓存池中,该Buffer释放任务包含有该对应Buffer的内存ID;因此,后续Buffer管理器可以根据该Buffer申请任务信息中的内存ID来对执行该Buffer申请任务或者该Buffer释放任务。另外,Buffer资源池中的Buffer表项可以是以依赖任务组为维度的数据表,任务生成装置在Buffer资源池中申请Buffer表项,然后根据应用例程模块调用任务生成装置时输入的应用程序接口参数填写该Buffer表项,并创建Buffer申请任务,该Buffer申请任务中携带有依赖任务组ID,任务生成装置将创建的Buffer申请任务放入任务缓存池当中;或者任务生成装置在Buffer资源池中创建Buffer释放任务,并将该Buffer释放任务加入该任务缓存池中,该Buffer释放任务包含有该依赖任务组ID;因此,后续Buffer管理器可以根据该Buffer申请任务中的依赖任务组ID来执行该Buffer申请任务或者该Buffer释放任务。
在本申请实施例中,顺序依赖关系可以是以多种方式体现,例如,第一种方式:在计算机设备中的任务生成装置生成目标任务时,在该目标任务当中携带有任务与任务的依赖关系,与现有技术当中任务与任务之间的依赖关系一致的原理;第二种方式:计算机设备中的任务生成装置生成目标任务,该目标任务中携带有相应的标识,通过标识的类型来确定与哪个任务有关,例如,异构计算任务中携带标识1,而Buffer申请任务携带标识2,此时,在该计算机设备预设机制为携带标识1的任务与携带标识2的任务存在逻辑上先后执行顺序。对此本申请不做限定,在后续的实施例中,仅以该第一种方式为例进行说明。
本申请实施例中,计算机设备通过Buffer管理器可以根据计算机设备中的任务调度器发送的目标任务对应的Buffer的内存ID从计算机设备中的Buffer资源池中获取对应的Buffer表项,并根据该目标任务以及该Buffer表项来执行目标任务,其中,该目标任务为Buffer申请任务或者Buffer释放任务,下面通过图3进行详细描述:
请参阅图3,在图3的实施例中,计算机设备通过Buffer管理器根据该内存ID从计算机设备中的Buffer资源池中获取对应的Buffer表项,然后该Buffer管理器根据该目标任务的任务类型以及该Buffer表项来执行目标任务,本申请实施例中数据处理方法的另一个实施例包括:
301、计算机设备通过任务调度器从计算机设备中的任务缓存池获取目标任务。
计算机设备中的应用例程模块在运行过程中,会调用计算机设备中的异构计算运行时模块中的任务生成装置的应用程序接口,然后将相应的应用程序编程接口参数输入到任务生成装置中,然后任务生成装置根据应用程序编程接口参数生成任务,然后将生成的任务放入计算机设备中的任务缓存池中。在本实施例中,该目标任务为Buffer申请任务或者为Buffer释放任务;当该目标任务的前继任务已完成,且该目标任务的后继任务执行前后,该任务调度器会从任务缓存池中获取该目标任务,其中,该前继任务与该后继任务在逻辑上存在顺序依赖关系,其中,该目标任务中携带有该目标任务对应的Buffer的内存ID。
比如,当该目标任务为Buffer申请任务,计算机设备中的任务生成装置前期的创建该Buffer申请任务的过程为:计算机设备通过应用例程模块调用任务生成装置的应用程序编程接口发起Buffer申请任务,然后将相应的Buffer申请任务的相关参数输入到该应用程序编程接口中,然后任务生成装置可以在计算机设备中的Buffer资源池中申请Buffer表项以及该Buffer对应的内存ID,任务生成装置根据该相关参数填写该Buffer表项,将该Buffer表项中的内存地址设置为空地址,再根据该Buffer表项申请Buffer申请任务,并且该Buffer申请任务携带有内存ID,将该Buffer申请任务放入计算机设备中的任务缓存池中,然后任务生成装置的应用程序编程接口返回内存ID至该应用例程模块;当该目标任务为Buffer释放任务时,该任务生成装置创建Buffer释放任务的过程具体为:任务生成装置根据该应用例程模块输入的相关参数创建Buffer释放任务,并且该Buffer释放任务携带该Buffer的内存ID,然后将该Buffer释放任务放入任务缓存池中。
本实施例中,该目标任务携带有该目标任务对应的Buffer的内存ID,请参阅表1,表1为以Buffer为维度的Buffer资源池,其中,Buffer1、Buffer2、和Buffer3代表三个Buffer表项,每个表项中包含有内存ID、内存大小、内存位置以及内存地址等信息。比如该目标任务为Buffer申请任务,其内存ID为101,该目标任务对应的Buffer表项为内存ID为101对应的表项,该目标任务对应的Buffer内存大小为500,内存位置为局部1,内存地址为0x1001。
表1
302、计算机设备通过任务调度器确定该目标任务的任务类型。
任务调度器获取到该目标任务之后,计算机设备通过任务调度器可以根据该目标任务中的字段来确定该目标任务的任务类型。比如,当第一任务为Buffer申请任务时,该目标任务会携带对应的字段来指示该Buffer申请任务。
303、若该目标任务的任务类型为Buffer申请任务或者Buffer释放任务,计算机设备通过任务调度器向计算机设备中的Buffer管理器发送目标任务。
任务调度器确定了该目标任务的任务类型为Buffer申请任务或者Buffer释放任务之后,任务调度器可以向计算机设备中的Buffer管理器发送目标任务,该目标任务中携带有该目标任务对应的Buffer的内存ID。
304、计算机设备通过Buffer管理器根据该目标任务携带的Buffer的内存ID从计算机设备中的Buffer资源池中获取该内存ID对应的Buffer表项。
计算机设备可以通过Buffer管理器可以从该目标任务中携带的该内存ID从计算机设备中的Buffer资源池中获取对应的Buffer表项。比如,如表1中,假设该内存ID为101,那么Buffer管理器就可以获取该内存ID对应的Buffer表项,如表2为内存ID对应的Buffer表项。
表2
内存ID | 内存大小 | 内存位置 | 内存地址 |
101 | 500 | 局部1 | 0x10001 |
比如,该内存ID为201,那么计算机设备通过Buffer管理器就可以获取该内存ID对应的Buffer表项,表3为内存ID为201对应的Buffer表项。
表3
内存ID | 内存大小 | 内存位置 | 内存地址 |
201 | 30 | 局部2 | null |
305、计算机设备通过Buffer管理器确定该目标任务的任务类型,若该目标任务的任务类型为Buffer申请任务,则执行步骤306;若该目标任务的任务类型为Buffer释放任务,则执行步骤310。
计算机设备Buffer管理器可以通过该目标任务来确定该目标任务的任务类型,当该目标任务的任务类型为Buffer申请任务时,那么执行步骤306;当该目标任务的任务类型为Buffer释放任务时,那么执行步骤310。
306、计算机设备通过Buffer管理器确定Buffer内存位置中的空闲内存大小大于该Buffer内存大小。
当目标任务为Buffer申请任务时,计算机设备中的Buffer管理器会从步骤304中获取到Buffer表项中查询该Buffer的内存位置,然后该Buffer管理器可以判断该内存位置中的空闲内存大小是否大于该Buffer表项中的Buffer内存大小,若大于,那么Buffer管理器可以确定该Buffer内存位置中存在足够的空闲内存。比如,在步骤304中Buffer管理器获取到的Buffer表项为表3,那么从表3中可知,该Buffer申请任务所申请的Buffer的内存位置为局部内存2,内存大小为30,那么该Buffer管理器就会判断局部内存2当中的空闲内存大小是否大于30,如果大于,那么Buffer管理器确定局部内存2中有足够的内存。
需要说明的是,当该Buffer管理器通过判断确定该Buffer的内存位置中空闲内存不足,那么Buffer管理器可以等待至该内存位置中有空闲内存再确定为该Buffer表项分配内存,也可以是该Buffer管理器可以使用全局内存来代替该局部内存,然后为该Buffer表项分配全局内存,具体此处不做限定;当全局内存也出现内存不足时,此时Buffer管理器可以等待至全局内存空闲时再给Buffer分配内存,具体此处不做限定。
本实施例中,计算机设备通过异构计算运行时模块在进行异步数据交换Buffer管理时,该异构计算运行时模块能够掌握Buffer与该异构计算任务的依赖关系,因此,计算机设备通过任务调度器可以对该异构计算任务进行Buffer的亲和性调度,该任务调度器能够支持设备局部内存的Buffer分配管理,并且提升了异构计算任务执行时的访存性能,满足了不同的应用场景需求,由于全局内存的访存性能差于局部内存,所以当要求访存性能较高的异构计算任务进行数据交换时可以通过申请设备局部内存来执行该异构计算任务,比如,计算机设备通过应用例程模块通过判断确定数据是在异构计算任务执行过程中拷贝频率或者使用频率最高的数据,那么此时应用例程模块可以申请局部内存的Buffer,从而在后续将该数据拷贝至该Buffer对应的局部内存中,所以在执行异构计算任务时读写访问该数据的效率更高,充分利用了局部内存访问性能较高的性能,从而满足不同应用场景需求。
307、计算机设备通过Buffer管理器更新该Buffer表项中的Buffer内存地址。
Buffer管理器确定了该Buffer内存位置中的空闲内存之后,该Buffer管理器会对Buffer表项中的内存地址进行更新。比如,Buffer管理器根据内存ID从Buffer资源池中获取的Buffer表项为表3,Buffer管理器通过确定空闲内存之后,会将该空闲内存对应的内存地址填写到表3中内存地址的空格中,即将表3中内存地址为空地址的状态更新为空闲内存对应的内存地址。
308、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第一通知消息。
Buffer管理器对该Buffer表项中的Buffer内存地址进行更新之后,Buffer管理器会向该任务调度器发送第一通知消息,该第一通知消息用于指示该Buffer管理器执行完成该目标任务。
309、计算机设备通过任务调度器解除计算机设备的任务缓存池中依赖该Buffer申请任务的任务与该Buffer申请任务的依赖关系。
任务调度器接收到该第一通知消息之后,该任务调度器会解除该任务缓存池中与依赖该Buffer申请任务的任务与该Buffer申请任务的依赖关系,用于后续任务调度器调度解除依赖关系的任务。
310、计算机设备通过Buffer管理器释放该Buffer表项中的Buffer内存地址对应的设备内存。
当该目标任务为Buffer释放任务时,在步骤304中获取到的Buffer表项,该Buffer管理器会将该Buffer表项中对应的Buffer内存地址对应的设备内存释放。比如,表2中的Buffer内存地址为0x10001,那么Buffer管理器就可以将0x10001对应的设备内存释放。
311、计算机设备通过Buffer管理器从计算机设备中的Buffer资源池中删除该Buffer表项。
Buffer管理器释放了Buffer内存地址对应的设备内存之后,该Buffer管理器会从Buffer资源池中删除该Buffer表项。比如,Buffer管理器确定内存ID对应的Buffer表项为表2,那么释放了该Buffer内存地址对应的设备内存之后,该Buffer管理器可以将表2从Buffer资源池中删除。
312、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送的第二通知消息。
Buffer管理器删除该Buffer表项之后,该Buffer管理器可以向任务调度器发送第二通知消息,该第二通知消息用于指示该Buffer管理器执行完成该Buffer释放任务。
313、计算机设备通过任务调度器解除计算机设备中的任务缓存池中依赖该Buffer释放任务的任务与该Buffer释放任务的依赖关系。
计算机设备通过任务调度器接收到该第二通知消息之后,该任务调度器可以解除任务缓存池中依赖该Buffer释放任务的任务与该Buffer释放任务的依赖关系。
本申请实施例中,计算机设备通过Buffer管理器接收计算机设备中的任务调度器发送的目标任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务和第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为该Buffer申请任务的时候,该第二任务执行时使用该Buffer申请任务所对应的Buffer,当该目标任务为该Buffer释放任务时,该第一任务执行时使用该Buffer释放任务所对应的Buffer,当该目标任务的前继任务已完成后且该目标任务的后继任务执行前,该计算机设备可以通过Buffer管理器根据目标任务在计算机设备中的Buffer资源池当中获取该任务对应的Buffer表项,其中,该计算机设备中的该Buffer资源池存储有每个Buffer的Buffer表项,然后计算机设备通过Buffer管理器可以根据该Buffer表项执行该目标任务以申请或者释放该目标任务所对应的Buffer。因此,计算机设备在对Buffer申请或者Buffer释放之前,计算机设备可以确定目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,计算机设备才会执行该目标任务,所以计算机设备对该Buffer申请可以真正延后至目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,以及计算机设备对该Buffer的释放可以提前至该目标任务的前继任务完成后立即执行,从而提高了Buffer对应的设备内存的周转效率。
本申请实施例中,计算机设备通过Buffer管理器可以根据计算机设备中的任务调度器发送的目标任务中携带的依赖任务组ID从计算机设备中的Buffer资源池中获取对应的Buffer表项,并根据该Buffer表项来执行目标任务以申请或者释放该目标任务所对应的Buffer,其中,该目标任务为Buffer申请任务或者Buffer释放任务,该目标任务为该依赖任务组中的任务,下面通过图4进行详细描述:
请参阅图4,在图4的实施例中,计算机设备通过Buffer管理器根据该依赖任务组ID从Buffer资源池中获取对应的Buffer表项,然后该Buffer管理器根据该Buffer表项来执行目标任务以申请或者释放该目标任务所对应的Buffer,本申请实施例中数据处理方法的另一个实施例包括:
401、计算机设备通过任务调度器从计算机设备中的任务缓存池中获取目标任务。
402、计算机设备通过任务调度器确定该目标任务的任务类型。
403、若该目标任务的任务类型为Buffer申请任务或者Buffer释放任务,计算机设备通过任务调度器向计算机设备中的Buffer管理器发送目标任务。
步骤401至步骤403与前述图3中步骤301至步骤303类似,具体此处不再赘述。
需要说明的是,在本实施例中,计算机设备通过任务生成装置创建Buffer申请任务的具体过程为:任务生成装置根据应用例程模块调用该任务生成装置的应用程序接口时输入的应用程序编程接口参数填写依赖任务组ID对应的Buffer表项,并将该Buffer表项中的内存地址设置为空地址,然后任务生成装置根据该Buffer表项创建Buffer申请任务,且该Buffer申请任务携带依赖任务组ID,然后将该任务放入计算机设备中的任务缓存池;另外,任务生成装置创建Buffer释放任务的过程具体为:任务生成装置根据应用程序编程接口参数创建Buffer释放任务,该Buffer释放任务携带有依赖任务组ID,然后将该任务放入计算机设备中的任务缓存池中。
404、计算机设备通过Buffer管理器根据该目标任务中携带的依赖任务组ID获取获取该目标任务对应的Buffer表项。
Buffer管理器接收到任务调度器发送的目标任务之后,该Buffer管理器可以根据该目标任务中携带的依赖任务组ID从计算机设备中的Buffer资源池获取该目标任务对应的Buffer表项,其中,该计算机设备中的Buffer资源池中存储有每个Buffer的相关信息,该Buffer表项为包含该目标任务对应的Buffer的相关信息的表项,其中,该Buffer表项中可以包括该目标任务对应的Buffer内存大小、内存地址以及内存位置等,本申请对此不做限定。在本实施中,该Buffer资源池是以依赖任务组为维度的数据表,比如,如表4所示的数据表,在表4中,依赖任务组1对应的Buffer表项中显示该依赖任务组1对应的Buffer的内存大小为500、内存位置为局部1以及内存地址为0x10001。
表4
比如,该目标任务中携带的依赖任务组ID对应的表项为表4中依赖任务组3对应的Buffer表项,那么计算机设备可以通过Buffer管理器从该计算机设备中的Buffer资源池中获取该依赖任务组3对应的Buffer表项,即如表5为该Buffer管理器根据目标任务中携带的依赖任务组ID获取到的Buffer表项。
表5
内存大小 | 内存位置 | 内存地址 |
30 | 局部2 | null |
405、计算机设备通过Buffer管理器确定该目标任务的任务类型,若该目标任务的任务类型为Buffer申请任务,则执行步骤406;若该目标任务的任务类型为Buffer释放任务,则执行步骤415。
Buffer管理器获取到该目标任务之后,可以确定目标任务的任务类型,若该目标任务的任务类型为Buffer申请任务,那么执行步骤406;若该目标任务的任务类型为Buffer释放任务,那么执行步骤415。
需要说明的时,Buffer管理器确定该目标任务的任务类型可以是该Buffer管理器根据该目标任务中的字段来确定该目标任务的任务类型,也可以是Buffer管理器通过其他方式来确定该目标任务的任务类型,具体此处不做限定。
406、计算机设备通过Buffer管理器判断Buffer内存位置是否为局部内存,若是,则执行步骤407;若否,则执行步骤411。
当Buffer管理器确定该目标任务的任务类型为Buffer申请任务时,该Buffer管理器可以判断该目标任务对应的Buffer内存位置是否为局部内存,若该目标任务对应的Buffer内存位置为局部内存,那么执行步骤407;若该目标任务对应的Buffer内存位置不为局部内存,那么执行步骤411。比如,该目标任务对应的Buffer表项为表5,在表5中该Buffer的内存位置为局部内存2,所以该Buffer管理器可以确定该Buffer的内存位置为局部内存。
需要说明的是,在以依赖任务组为维度的Buffer资源池中,当一个依赖任务组中的任务所依赖的Buffer有多个时,那么该Buffer表项中的Buffer的相关信息是变化的,比如,依赖任务组中包括A任务、B任务、C任务以及D任务,其中,A任务与B任务存在依赖关系,C任务与D任务存在依赖关系,A任务与B任务共用Buffer D1,C任务与D任务共用Buffer D2,那么当执行A任务和B任务时,此时该依赖任务组对应的Buffer表项中有Buffer D1的相关信息,当执行完成该A任务和B任务时,此时Buffer管理器会将该Buffer D1释放,即将该Buffer表项中的该Buffer D1的相关信息删除,然后该Buffer管理器会根据任务调度器发送的任务信息对应申请Buffer D2,此时该Buffer表项中就存在Buffer D2的相关信息,那么相应的模块就可以执行C任务和D任务。
本实施例中,计算机设备通过异构计算运行时模块在进行异步数据交换Buffer管理时,异构计算运行时模块能够掌握Buffer与该异构计算任务的依赖关系,因此,计算机设备通过任务调度器可以对该异构计算任务进行Buffer的亲和性调度,该任务调度器能够支持设备局部内存的Buffer分配管理,并且提升了异构计算任务执行时的访存性能,满足了不同的应用场景需求,由于全局内存的访存性能差于局部内存,所以当要求访存性能较高的异构计算任务进行数据交换时可以通过申请设备局部内存来执行该异构计算任务,比如,计算机设备通过应用例程模块通过判断确定数据是在异构计算任务执行过程中拷贝频率或者使用频率最高的数据,那么此时应用例程可以申请局部内存的Buffer,从而在后续将该数据拷贝至该Buffer对应的局部内存中,所以在执行异构计算任务时读写访问该数据的效率更高,充分利用了局部内存访问性能较高的性能;本申请的数据处理方法能够支持数据交换的Buffer在设备内存任何层级内存申请对应的内存,因此能够满足多样化的设备内存场景,从而满足不同应用场景需求。
407、计算机设备通过Buffer管理器确定目标局部内存。
Buffer管理器确定该目标任务对应的Buffer内存位置为局部内存之后,该Buffer管理器可以根据该计算单元负载情况以及局部内存的空闲情况来确定目标局部内存。
需要说明的是,当Buffer管理器通过判断确定该局部内存的空闲情况为内存不足时,此时Buffer管理器可以等待至该局部内存足够时再为该Buffer申请对应的内存,也可以是该Buffer管理器将全局内存来作为目标内存,然后为该Buffer申请全局内存对应的设备内存,本申请对此不做限定。
408、计算机设备通过Buffer管理器更新Buffer内存地址以及Buffer内存位置。
Buffer管理器确定了目标局部内存之后,该Buffer管理器可以根据该目标局部内存更新该Buffer表项中Buffer内存地址以及Buffer内存位置。比如,在步骤404中,Buffer管理器确定该目标任务对应的Buffer表项为表5,那么Buffer管理器会根据确定目标局部内存来更新表5中的内存地址和内存位置。
409、计算机设备通过Buffer管理器向任务调度器发送第一通知消息。
410、计算机设备通过任务调度器解除依赖于该Buffer申请任务的任务与该Buffer申请任务的依赖关系。
步骤409至步骤410与前述图3中的步骤308至步骤309类似,具体此处不再赘述。
411、计算机设备通过Buffer管理器将全局内存设置为目标内存位置。
该Buffer管理器通过判断确定该Buffer的内存位置不为局部内存之后,那么Buffer管理器可以将全局内存设置为该目标任务对应的Buffer的目标内存位置。比如,Buffer管理器根据该任务信息从Buffer资源池获取对应的Buffer表项,通过该Buffer表项中确定该Buffer的内存位置为全局内存。
412、计算机设备通过Buffer管理器更新该Buffer内存地址以及Buffer内存位置。
Buffer管理器确定目标任务对应的Buffer位于全局内存,那么Buffer管理器可以根据该全局内存更新该Buffer表项中的Buffer内存地址以及Buffer内存位置;比如,Buffer管理器确定了对应的全局内存,那么该Buffer管理器可以将该全局内存对应的内存地址以及该全局内存的内存位置填写至该Buffer的Buffer表项。
413、计算机设备通过Buffer管理器向任务调度器发送第二通知消息。
414、计算机设备通过任务调度器解除依赖于该Buffer申请任务的任务与该Buffer申请任务的依赖关系。
步骤413至步骤414与前述图3中的步骤308至步骤309类似,具体此处不再赘述。
415、计算机设备通过Buffer管理器确定该Buffer表项中的Buffer内存地址。
当该Buffer管理器确定该目标任务的任务类型为Buffer释放任务时,该Buffer管理器可以确定该Buffer表项中与的Buffer内存地址;比如,目标任务携带的依赖任务组ID对应的Buffer表项为表1中依赖任务组1对应的Buffer表项,即如表7所示的Buffer表项,该内存地址为0x10001。
表7
内存大小 | 内存位置 | 内存地址 |
500 | 局部1 | 0x10001 |
416、计算机设备通过Buffer管理器释放该Buffer内存地址对应的设备内存。
Buffer管理器确定了该Buffer内存地址之后,该Buffer管理器可以释放该Buffer内存地址对应的设备内存。比如,在步骤415中,该Buffer管理器确定该Buffer内存地址为0x10001,那么该Buffer管理器可以释放0x10001对应的设备内存。
417、计算机设备通过Buffer管理器将该Buffer内存地址设置为空地址。
Buffer管理器释放了该Buffer内存地址对应的设备内存后,可以将该Buffer表项中的Buffer内存地址设置为空地址。比如,在表7中,将0x10001设置为为null,即如表8所示:
表8
内存大小 | 内存位置 | 内存地址 |
500 | 局部1 | null |
需要说明的是,当该依赖任务组的所有任务都执行完成时,此时该Buffer管理器在释放对应的Buffer时可以将Buffer资源池中的该依赖任务组对应的Buffer表项删除。
418、计算机设备通过Buffer管理器向该任务调度器发送第三通知消息。
419、计算机设备通过任务调度器解除依赖于该Buffer释放任务的任务与该Buffer释放任务的依赖关系。
步骤418至步骤419与前述图3中的步骤312至步骤313类似,具体此处不再赘述。
本申请实施例中,计算机设备通过Buffer管理器接收计算机设备中的任务调度器发送的目标任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务和第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为该Buffer申请任务的时候,该第二任务执行时使用该Buffer申请任务所对应的Buffer,当该目标任务为该Buffer释放任务时,该第一任务执行时使用该Buffer释放任务所对应的Buffer,当该目标任务的前继任务已完成后且该目标任务的后继任务执行前,该计算机设备可以通过Buffer管理器根据目标任务在计算机设备中的Buffer资源池当中获取该任务对应的Buffer表项,其中,该计算机设备中的该Buffer资源池存储有每个Buffer的Buffer表项,然后计算机设备通过Buffer管理器可以根据该Buffer表项执行该目标任务以申请或者释放该目标任务所对应的Buffer。因此,因此,计算机设备在对Buffer申请或者Buffer释放之前,计算机设备可以确定目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,计算机设备才会执行该目标任务,所以计算机设备对该Buffer申请可以真正延后至目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,以及计算机设备对该Buffer的释放可以提前至该目标任务的前继任务完成后立即执行,从而提高了Buffer对应的设备内存的周转效率。
本申请实施例中,计算机设备通过任务调度器可以根据目标任务中携带的内存ID以及该目标任务的任务类型调用计算机设备中相应的模块执行目标任务,下面通过图5进行详细描述:
请参阅图5,在图5的实施例中,计算机设备通过任务调度器根据该目标任务的携带的内存ID以及该目标任务的任务类型调用计算机设备中相应的模块执行该目标任务,本申请实施例中数据处理方法的另一个实施例包括:
501、计算机设备通过任务调度器从计算机设备中的任务缓存池中获取目标任务。
计算机设备通过应用例程模块运行代码的运行过程中,应用例程模块会调用计算机设备中的异构计算运行时模块的任务生成装置的应用程序编程接口,然后将相应的应用程序编程接口参数输入到任务生成装置中,然后任务生成装置根据应用程序编程接口参数来生成任务,然后将生成的任务放入计算机设备中的任务缓存池中。计算机设备通过任务调度器可以从计算机设备中的任务缓存池中获取目标任务,该目标任务为其前继任务已完成,且该目标任务的后继任务待执行的任务,该前继任务与该后继任务在逻辑上存在顺序依赖关系,该目标任务中携带有该目标任务对应的Buffer内存ID。
502、计算机设备通过任务调度器确定目标任务的任务类型,若该目标任务的任务类型为内存拷贝任务,则执行步骤503;若该目标任务的任务类型为异构计算任务,则执行步骤512;若该目标任务的任务类型为Buffer申请任务或者Buffer释放任务,则执行步骤524。
计算机设备通过任务调度器可以根据目标任务的任务类型,若该目标任务的任务类型为内存拷贝任务,那么执行步骤503;若该目标任务的任务类型为异构计算任务,那么执行步骤512;若目标任务的任务类型为Buffer申请任务或者Buffer释放任务,那么执行步骤524。具体可以是任务调动器根据该目标任务中的字段来确定该目标任务的任务类型。
503、计算机设备通过任务调度器判断该数据拷贝源地址是否为合法的内存ID和/或该数据拷贝的目的地址是否为合法的内存ID,若该源地址为合法的内存ID和/或该目的地址为合法的内存ID,则执行步骤504;若该源地址以及该目的地址都不为合法的内存ID,则执行步骤509。
计算机设备通过任务调度器可以判断该内存拷贝任务对应的数据拷贝源地址是否为合法的内存ID和/或该数据拷贝的目的地址是否为合法的内存ID,如果该源地址为合法的内存ID和/或该目的地址为合法的内存ID,则执行步骤504;如果该源地址以及该目的地址都不为合法的内存ID,则执行步骤509。比如,该内存拷贝数据的源地址为101,如果在Buffer资源池中存在内存ID为101对应的Buffer,则说明该内存101为合法的内存ID,那么即是将内存地址为0x10001对应的设备内存中的数据拷贝至目的地址;比如该内存拷贝数据的目的地址为101,那么即是将源地址的数据拷贝至0x10001对应的设备内存中。
需要说明的是,合法的内存ID为计算机设备通过Buffer管理器已申请的Buffer的内存ID,如果在该内存拷贝任务的数据拷贝源地址或目标地址包含已申请的Buffer的内存ID,那么可以确定该内存ID为合法的内存ID。
504、计算机设备通过任务调度器根据内存ID在计算机设备中的Buffer资源池中获取对应的Buffer内存地址。
任务调度器确定该目标任务的任务类型为内存拷贝任务之后,任务调度器可以根据该目标任务中携带的内存ID在Buffer资源池中获取对应的Buffer内存地址;比如,该内存ID为101,那么如表1所示,该内存ID对应的Buffer表项为表2,该Buffer内存地址为0x10001。
505、计算机设备通过任务调度器将目标任务中携带的内存ID更换为该Buffer内存地址。
任务调度器可以将目标任务中携带的内存ID更换为该Buffer的内存地址,比如,数据拷贝任务的源地址为101,那么任务调度器可以将该源地址更换为0x10001。
506、计算机设备通过任务调度器通过计算机设备中的数据搬移发射器向计算机设备中的DMA发送该目标任务。
计算机设备通过任务调度器可以通过该数据搬移发射器向DMA发送该目标任务,该目标任务携带有该Buffer的内存地址。比如,该任务调度器将该目标任务中的内存ID更换为0x10001之后,那么该任务调度器可以将该目标任务发送至DMA,那么DMA接收到该目标任务之后,会根据该目标任务中携带的内存地址执行该目标任务,将目标数据拷贝至目标地址。
507、计算机设备通过DMA向该计算机设备中的任务调度器发送第一通知消息。
在该DMA执行完成该目标任务之后,该DMA可以向任务调度器发送第一通知消息,该第一通知消息用于指示该DMA执行完成该目标任务。
508、计算机设备通过任务调度器解除被依赖任务与该目标任务的依赖关系。
任务调度器接收到该第一通知消息之后,该任务调度器可以解除任务缓存池中依赖于该目标任务的任务与该目标任务的依赖关系。
509、计算机设备通过任务调度器向计算机设备中的DMA发送目标任务。
当该任务调度器确定该数据拷贝的源地址以及该数据拷贝的目的地址为具体的内存地址时,任务调度器可以通过数据搬移发射器向DMA发送目标任务,直接让该DMA执行目标任务;比如,该内存拷贝任务中数据拷贝的源地址以及该数据拷贝的目的地址不为Buffer资源池中已申请的Buffer对应的内存ID,那么任务调度直接调度让DMA执行该数据的拷贝。
510、计算机设备通过DMA向计算机设备中的任务调度器发送第二通知消息。
511、计算机设备通过任务调度器解除被依赖任务与该内存拷贝任务的依赖关系。
步骤510至步骤511与步骤507至步骤508类似,具体此处不做赘述。
512、计算机设备通过任务调度器判断该异构计算任务的输入参数中是否存在合法的内存ID,若是,则执行步骤513;若否,则执行步骤522。
当该任务调度器确定该目标任务的任务类型为异构计算任务,那么任务调度器可以判断该异构计算任务的输入参数中是否存在合法的内存ID,如果该异构计算任务的输入参数中存在合法的内存ID,那么执行步骤513;如果该异构计算任务的输入参数中不存在合法的内存ID,那么执行步骤522。比如,Buffer管理器已申请的Buffer内存ID为101,那么如果异构计算任务的输入参数存在101,那么任务调度器可以确定该异构计算任务的输入参数存在合法的内存ID。
513、计算机设备通过任务调度器根据内存ID在Buffer资源池当中获取对应的Buffer内存地址。
任务调度器可以根据该内存ID在Buffer资源池中获取该内存ID对应的Buffer表项,然后任务调度器可以从Buffer表项确定该Buffer的内存地址;比如内存ID为101,那么该内存ID对应的Buffer表项为表2,那么可知该Buffer的内存地址为0x10001。
514、计算机设备通过任务调度器将该异构计算任务的输入参数中的内存ID更换为该Buffer内存地址。
任务调度器确定该异构计算任务的输入参数中存在合法的内存ID之后,该任务调度器可以将该异构计算任务的输入参数中的内存ID更换为该Buffer内存地址;比如,该任务调度器确定该内存ID为101,那么该对应的Buffer内存地址为0x10001,那么该任务调度器可以将异构计算任务的输入参数的内存ID更换为该Buffer内存地址。
515、计算机设备通过任务调度器判断该内存ID对应的Buffer内存位置是否为局部内存,若是,则执行步骤516;若否,则执行步骤519。
任务调度器可以判断该内存ID对应的Buffer内存位置是否为局部内存,如果该内存ID对应的Buffer内存位置为局部内存,那么执行步骤516;如果该内存ID对应的Buffer内存位置不为局部内存,那么执行步骤519。比如,该内存ID为101,那么从表2中可以确定该Buffer的内存位置为局部内存1;如果该内存ID为102,那么从表1中可以确定该Buffer的内存位置为全局内存。
516、计算机设备通过任务调度器向该计算机设备中的Buffer局部内存对应的计算单元发送目标任务。
任务调度器确定该内存ID对应的Buffer内存位置为局部内存之后,该任务调度器可以向该Buffer局部内存对应的计算单元发送该目标任务。比如,该内存ID为101,该Buffer内存位置为局部内存1,Buffer内存地址为0x10001,那么Buffer局部内存对应的计算单元即为0x10001对应的计算单元,任务调度器可以向0x10001对应的计算单元发送该目标任务。
计算机设备通过任务调度器能够支持设备局部内存的Buffer分配管理,由于全局内存的访存性能差于局部内存,所以当要求访存性能较高的异构计算任务进行数据交换时可以通过申请设备局部内存来执行该异构计算任务,比如,计算机设备通过应用例程模块判断确定数据是在异构计算任务执行过程中拷贝频率或者使用频率最高的数据,那么此时应用例程模块为该异构计算任务申请局部内存的Buffer,从而在后续将该数据拷贝至该Buffer对应的局部内存中,所以在执行异构计算任务时读写访问该数据的效率更高,充分利用了局部内存访问性能较高的性能;本申请的数据处理方法能够支持数据交换的Buffer在设备内存任何层级内存申请对应的内存,因此能够满足多样化的设备内存场景,从而满足不同应用场景需求。
517、该计算机设备通过Buffer局部内存对应的计算单元向该计算机设备中的任务调度器发送第三通知消息。
该Buffer局部内存对应的计算单元执行完成该目标任务之后,该Buffer局部内存对应的计算单元可以向任务调度器发送第三通知消息,该第三通知消息用于指示该Buffer局部内存对应的计算单元执行完成该目标任务。
518、计算机设备通过任务调度器解除被依赖任务对该目标任务的依赖关系。
任务调度器接收到第三通知消息之后,任务调度器可以解除被依赖任务对该目标任务的依赖关系。
519、计算机设备通过任务调度器向负载最小的计算单元发送目标任务。
当任务调度器确定该内存ID对应的Buffer内存位置不为局部内存时,该任务调度器可以向负载量最小的计算单元发送该目标任务,比如,该内存ID为102,那么该内存ID对应的该Buffer内存位置为全局内存,所以任务调度器可以向负载量最小的计算单元发送该目标任务。
520、计算机设备通过负载量最小的计算单元向计算机设备中的任务调度器发送第四通知消息。
负载量最小的计算单元接收到该目标任务之后,该负载量最小的计算单元可以执行该目标任务,当该负载量最小的计算单元执行完成该目标任务时,该计算单元可以向该任务调度器发送该第四通知消息,该第四通知消息用于通知该任务调度器该目标任务执行完成。
521、计算机设备通过任务调度器解除被依赖任务对该目标任务的依赖关系。
步骤521与步骤518类似,具体此处不再赘述。
522、计算机设备通过任务调度器向计算机设备中的负载量最小的计算单元发送目标任务。
当任务调度器确定该异构计算任务的输入参数中不存在合法的内存ID,说明该异构计算任务不依赖Buffer资源池中已申请的Buffer,那么任务调度器可以向负载量最小的计算单元发送目标任务。
523、计算机设备通过负载量最小的计算单元向计算机设备中的任务调度器发送第五通知消息。
524、计算机设备通过任务调度器解除被依赖任务对该目标任务的依赖关系。
步骤523和步骤524与步骤517和步骤518类似,具体此处不再赘述。
525、计算机设备通过任务调度器向计算机设备中的Buffer管理器发送目标任务。
当该任务调度器确定该目标任务的任务类型为Buffer申请任务或者Buffer释放任务时,该任务调度器可以向Buffer管理器发送该目标任务。
526、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第六通知消息。
Buffer管理器接收到该目标任务之后,Buffer管理器可以执行该目标任务,Buffer执行该目标任务的具体过程请参见前述图3中Buffer管理器执行Buffer申请任务或者Buffer释放任务的过程,当Buffer管理器执行完成该目标任务时,该Buffer管理器可以向任务调度器发送第六通知消息,该第六通知消息用于通知该任务调度器执行完成该目标任务。
527、计算机设备通过任务调度器解除被依赖任务对该目标任务的依赖关系。
步骤527与步骤518类似,具体此处不再赘述。
本申请实施例中,计算机设备通过任务调度器从计算机设备中的任务缓存池中获取目标任务,该目标任务为其前继任务已完成,且该目标任务的后继任务待执行的任务,该前继任务任务与该后继任务在逻辑上存在顺序依赖关系;然后,计算机设备通过任务调度器确定该目标任务的任务类型,任务调度器可以根据该目标任务的任务类型以及该目标任务调用计算机设备中的相应的模块执行该目标任务。因此,该任务调度器从任务缓存池中获取的目标任务,该目标任务为其前继任务已完成,且该目标任务的后继任务待执行的任务,该前继任务任务与该后继任务在逻辑上存在顺序依赖关系;当该目标任务为Buffer申请任务或者Buffer释放任务时,那么对于Buffer的申请,可以真正延后至该Buffer申请任务的前继任务执行完成后,计算机设备通过任务调度器再调用计算机设备中的Buffer管理器来执行该Buffer申请任务;对于Buffer的释放,可以提前至该Buffer释放任务的前继任务完成时计算机设备通过任务调度器向计算机设备中的Buffer管理器立即派发该Buffer释放任务,从而提高了Buffer对应的设备内存的周转效率。
本申请实施例中,计算机设备通过任务调度器可以根据该目标任务携带的依赖任务组ID以及该目标任务的任务类型调用计算机设备中的相应的模块执行该目标任务,下面通过图6进行详细描述:
请参阅图6,在图6的实施例中,计算机设备通过任务调度器根据该目标任务中携带的依赖任务组ID以及该目标任务的任务类型调用计算机设备中的相应的模块执行该目标任务,本申请实施例中数据处理方法的另一个实施例包括:
601、计算机设备通过任务调度器从计算机设备中的任务缓存池中获取目标任务。
计算机设备通过应用例程模块运行代码的运行过程中,应用例程模块会调用计算机设备中的异构计算运行时模块的任务生成装置的应用程序编程接口,然后将相应的应用程序编程接口参数输入到任务生成装置中,然后任务生成装置根据应用程序编程接口参数来生成任务,然后将生成的任务放入计算机设备中的任务缓存池中。计算机设备通过任务调度器可以从计算机设备中的任务缓存池中获取目标任务,该目标任务为其前继任务已完成,且该目标任务的后继任务待执行的任务,该前继任务与该后继任务在逻辑上存在顺序依赖关系,该目标任务中携带有依赖任务组ID。
602、计算机设备通过任务调度器确定该目标任务的任务类型。
步骤602与前述图5的步骤502类似,具体此处不再赘述。
603、若该目标任务的任务类型为内存拷贝任务,则计算机设备通过任务调度器向计算机设备中的DMA发送目标任务。
计算机设备通过任务调度器确定该目标任务的任务类型为内存拷贝任务,那么计算机可以通过任务调度器向计算机设备中的DMA发送该目标任务,那么DMA就可以执行该内存拷贝任务。
604、计算机设备通过DMA向计算机设备中的任务调度器发送第一通知消息。
605、计算机设备通过任务调度器解除被依赖任务对该目标任务的依赖关系。
步骤604和步骤605与前述图5中的步骤510和步骤511类似,具体此处不再赘述。
606、若该目标任务的任务类型为Buffer释放任务,则计算机设备通过任务调度器判断是否存在预存数据,若是,则执行步骤607;若否,则执行步骤612。
当该任务调度器确定该目标任务的任务类型为Buffer释放任务时,该任务调度器可以判断是否存在预存数据,如果存在,那么执行步骤607;如果不存在,那么执行步骤612。需要说明的是,该预存数据可以是后续在执行异构计算任务之后或者数据拷贝任务之后所需读写访问的数据,因此,在Buffer释放之前,该任务调度器可以确定该预存数据,然后将该预存数据拷贝至目标内存。
607、计算机设备通过任务调度器向计算机设备中的DMA发送拷贝该预存数据的任务。
计算机设备通过任务调度器确定存在预存数据之后,计算机设备可以通过任务生成装置生成拷贝预存数据的任务,然后任务调度器可以通过数据搬移发射器向DMA发送拷贝该预存数据的任务,其中,该拷贝预存数据的任务携带有该预存数据的保存地址、保存数据长度以及保存数据在该Buffer释放任务对应的Buffer中的偏移量。如图7所示,图7为预存prestore数据在Buffer中的Buffer偏移量、prestore数据长度以及prestore数据目标地址。
608、计算机设备通过DMA向计算机设备中的任务调度器发送第二通知消息。
DMA将该预存数据拷贝至预存数据的目标地址之后,该DMA可以向任务调度器发送该第二通知消息,该第二通知消息用于指示该DMA执行完成该拷贝该预存数据的任务。
609、计算机设备通过任务调度器发送计算机设备中的Buffer管理器发送目标任务。
任务调度器接收到该第二通知消息之后,由于此时任务调度器可以确定该Buffer释放任务对应的Buffer中的预存数据已经拷贝至预存数据的目标地址,所以该任务调度器可以向Buffer管理器发送目标任务,那么Buffer管理器就可以将该Buffer对应的设备内存及时释放,具体Buffer管理器对Buffer释放过程详细请参阅前述图4中的Buffer释放过程,这里不再赘述,通过Buffer管理器及时将Buffer对应的设备内存释放,从而提高Buffer对应的设备内存的周转效率。
610、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第三通知消息。
611、计算机设备通过任务调度器解除被依赖任务对该目标任务的依赖关系。
步骤610至步骤611与前述图4中的步骤418至步骤419类似,具体此处不再赘述。
612、计算机设备通过任务调度器向计算机设备中的Buffer管理器发送该目标任务。
当该任务调度器通过判断确定不存在预存数据,那么任务调度器可以向Buffer管理器发送该目标任务,那么Buffer管理器接收到该Buffer释放任务信息后,会按照前述图4中释放Buffer的过程执行该Buffer释放任务。
613、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第四通知消息。
614、计算机设备通过任务调度器解除被依赖任务与该目标任务的依赖关系。
步骤613至步骤614与前述图4中的步骤418至步骤419类似,具体此处不再赘述。
615、若目标任务的任务类型为Buffer申请任务,计算机设备通过任务调度器向计算机设备中的Buffer管理器向目标任务。
当任务调度器确定该目标任务的任务类型为Buffer申请任务时,该任务调度器可以向Buffer管理器发送该目标任务,然后该Buffer管理器可以按照前述图4中Buffer申请的过程对该Buffer进行申请。
616、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第五通知消息。
当该Buffer管理器按照前述图4的Buffer申请的过程对该Buffer进行申请完成后,该Buffer管理器可以向任务调度器发送第五通知消息,该第五通知消息用于通知该任务调度器该Buffer已经申请完成。
617、计算机设备通过任务调度器判断是否存在预加载数据,若是,则执行步骤618;若否,则执行步骤619。
任务调度器接收到第五通知消息之后,可以确定该Buffer已经申请成功,那么任务调度器可以判断是否存在预加载数据,如果存在,那么执行步骤618;如果不存在,那么执行步骤619。比如,当在后续依赖该Buffer的异构计算任务需要读写该Buffer对应的设备内存中的数据,该数据需要先预加载至该Buffer对应的设备内存中,那么该任务调度器可以通过判断确定存在该预加载数据,为后续对应的计算单元执行该异构计算任务做好数据拷贝。
618、计算机设备通过任务调度器向计算机设备中的Buffer管理器发送拷贝预加载数据任务。
任务调度器确定存在预加载数据,那么此时任务调度器可以向Buffer管理器发送拷贝该预加载数据的任务,如图8所示,该拷贝预加载数据任务中包含该预加载preload数据的源地址、预加载preload数据长度、该预加载preload数据在Buffer中的偏移量等信息。
619、计算机设备通过任务调度器解除被依赖任务对该目标任务的依赖关系。
当任务调度器通过判断确定不存在预加载数据时,任务调度器可以解除该依赖该Buffer申请任务的任务与该Buffer申请任务的依赖关系。
620、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第六通知消息。
当该DMA执行完成该拷贝预加载数据任务之后,该Buffer管理器可以向任务调度器发送第六通知消息,该第六通知消息用于通知该任务调度器执行该拷贝预加载数据任务完成。
621、计算机设备通过任务调度器解除被依赖任务与目标任务的依赖关系。
任务调度器接收到第六通知消息之后,可以确定该预加载数据拷贝任务完成,那么任务调度器可以解除该依赖该Buffer申请任务的任务与该Buffer申请任务的依赖关系。
622、若该目标任务的任务类型为异构计算任务,计算机设备通过任务调度器根据该目标任务携带的依赖任务组ID在计算机设备中的Buffer资源池中获取对应的Buffer表项。
当该目标任务的任务类型为异构计算任务时,任务调度器可以根据该目标任务中携带的依赖任务组ID从Buffer资源池中获取对应的表项。比如,如表4所示,比如该目标任务中携带的依赖任务组ID为依赖任务组1对应的ID,那么可以确定该依赖任务组1对应的Buffer表项为表7;或者比如当该目标任务中携带的依赖任务组ID为依赖任务组2对应的ID,那么可以确定该依赖任务组2对应的Buffer表项为表9所示:
表9
内存大小 | 内存位置 | 内存地址 |
1000 | 全局 | 0x2014a |
623、计算机设备通过任务调度器判断该目标任务对应的Buffer内存位置是否为局部内存,若是,则执行步骤624;若否,则执行步骤627。
任务调度器可以判断该目标任务对应的Buffer内存位置是否为局部内存,如果该Buffer内存位置为局部内存,那么执行步骤624;如果该Buffer内存位置不为局部内存,那么执行步骤627。比如,在任务调度器确定该依赖任务组ID对应的Buffer表项为表7,那么可知,该Buffer对应的内存位置为局部内存1,所以任务调度器可以确定该Buffer内存位置为局部内存。
624、计算机设备通过任务调度器向该计算机设备中的Buffer局部内存对应的计算单元发送目标任务。
任务调度器确定该Buffer对应的内存位置为局部内存,那么任务调度器可以向该Buffer局部内存对应的计算单元发送该目标任务,然后,该计算单元接收到该目标任务之后,该计算单元可以从该目标任务中获取对应的Buffer内存地址,然后该计算单元将该Buffer内存地址设置为该目标任务的一个隐式参数,计算单元设置完该异构计算任务的输入参数之后,就可以启动执行该异构计算任务。
具体的,该计算单元将该Buffer内存地址设置为该目标任务的一个隐式参数,该隐式参数可以存储于预设的寄存器地址中或者预设的设备内存地址中,计算单元通过读取该预设的寄存器地址或者该预设的设备内存地址来确定Buffer内存地址。
本实施例中,任务调度器能够支持设备局部内存的Buffer分配管理,由于全局内存的访存性能差于局部内存,所以当要求访存性能较高的异构计算任务进行数据交换时可以通过申请设备局部内存来执行该异构计算任务,充分利用了局部内存访问性能较高的性能;本申请的数据处理方法能够支持数据交换的Buffer在设备内存任何层级内存申请对应的内存,因此能够满足多样化的设备内存场景,从而满足不同应用场景需求。
625、计算机设备通过Buffer局部内存对应计算单元向计算机设备中的任务调度器发送第七通知消息。
626、计算机设备通过任务调度器解除被依赖任务与该目标任务的依赖关系。
步骤625至步骤626与前述图5中步骤517至步骤518类似,具体请参照图5中步骤517至步骤518,具体此处不再赘述。
627、计算机设备通过任务调度器向计算机设备中负载量最小的计算单元发送目标任务。
当该目标任务对应的Buffer内存位置不为局部内存,那么任务调度器可以从全局内存对应的计算单元中确定当前负载量最小的计算单元,然后向该负载量最小的计算单元发送该目标任务,然后该负载量最小的计算单元会从该目标任务中获取对应的Buffer内存地址,然后将该Buffer内存地址设置为该异构计算任务的一个隐式参数,然后可以执行该异构计算任务。
628、计算机设备通过负载量最小的计算单元向计算机设备中的任务调度器发送第八通知消息。
629、计算机设备通过任务调度器解除被依赖任务与该目标任务的依赖关系。
步骤628至步骤629与前述图5中步骤520至步骤521类似,具体此处不再赘述。
本申请实施例中,计算机设备通过任务调度器从计算机设备中的任务缓存池中获取目标任务,该目标任务为其前继任务已完成,且该目标任务的后继任务待执行的任务,该前继任务任务与该后继任务在逻辑上存在顺序依赖关系;然后,计算机设备通过任务调度器确定该目标任务的任务类型,任务调度器可以根据该目标任务的任务类型以及该目标任务调用相应的模块执行该目标任务。因此,该任务调度器从任务缓存池中获取的目标任务,该目标任务为其前继任务已完成,且该目标任务的后继任务待执行的任务,该前继任务任务与该后继任务在逻辑上存在顺序依赖关系;当该目标任务的任务类型为Buffer申请任务或者Buffer释放任务时,那么对于Buffer的申请,可以真正延后至该Buffer申请任务的前继任务执行完成后,计算机设备通过任务调度器再调用计算机设备中的Buffer管理器来执行该Buffer申请任务;对于Buffer的释放,可以提前至该Buffer释放任务的前继任务完成时计算机设备通过任务调度器向计算机设备中的Buffer管理器立即派发该Buffer释放任务,从而提高了Buffer对应的设备内存的周转效率。
本申请实施例中,当目标任务的任务类型只有异构计算任务时,此时计算机设备通过任务生成装置只会创建异构计算任务,且该异构计算任务可以携带有Buffer的相关信息,还可以携带有预存数据和/或预加载数据的相关信息。那么计算机设备可以通过任务调度器器根据异构计算任务携带的信息调用计算机设备中相应的模块执行相应的任务,下面通过图9的实施例进行详细说明。
请参阅图9,在图9的实施例中,计算机设备通过任务调度器根据异构计算任务中携带的异构计算任务的ID来调用计算机设备中相应的模块来执行任务,本申请实施例数据处理方法的另一个实施例包括:
901、计算机设备通过任务调度器从计算机设备中任务缓存池中获取异构计算任务。
计算机设备通过应用例程模块运行代码的运行过程中,应用例程模块会调用计算机设备中的异构计算运行时模块的任务生成装置的应用程序编程接口,然后将相应的应用程序编程接口参数输入到任务生成装置中,然后任务生成装置根据应用程序编程接口参数来生成异构计算任务。其中,在任务类型只有异构计算任务时,该计算机设备中的Buffer资源池可以是以异构计算任务为维度的数据表,例如可以如表10所示的Buffer资源池。任务生成装置可以是根据应用程序编程接口参数来填写异构计算任务的Buffer表项,然后再创建该异构计算任务,该异构计算任务可以携带Buffer的相关信息,还可以携带预加载数据的相关信息与预存数据的相关信息,其中,该Buffer的相关信息可以包括Buffer的内存大小以及Buffer的内存位置等,该预加载数据的相关信息可以包括预加载数据的源地址、预加载数据长度以及预加载数据在Buffer中的偏移地址等,该预存数据的相关信息可以包括预存数据保存地址、预存数据长度以及预存数据在Buffer中的偏移地址等。比如,如表10中异构计算任务3对应的Buffer,其内存大小为30,内存位置为局部2,内存地址为null空地址。需要说明的是,当该异构计算任务的执行不需要依赖于Buffer时,那么此时任务生成装置则不需要从计算机设备中的Buffer资源池申请该异构计算任务对应的Buffer表项,只需要创建该异构计算任务,然后调用相应的计算单元执行该异构计算任务即可。任务调度器从计算机设备中的任务缓存池中获取异构计算任务,该异构计算任务为前继任务已完成且其后继任务待执行的任务,该前继任务与该后继任务存在逻辑上顺序依赖关系。
表10
902、计算机设备通过任务调度器判断是否需要申请Buffer,若是,则执行步骤905;若否,则执行步骤903。
任务调度器获取到该异构计算任务时,判断是否需要申请Buffer,若不需要,那么执行步骤905,若需要,那么执行步骤903。具体可以是任务调度器根据该异构计算任务的ID确定是否有对应的Buffer表项,且该Buffer表项的内存地址为空地址。
903、计算机设备通过任务调度器向计算机设备中的负载量最小的计算单元发送异构计算任务。
任务调度器确定不需要申请Buffer之后,任务调度器可以直接调度用负载量最小的计算单元执行该异构计算任务。因此,在任务类型只有异构计算任务时,任务调度器无需判断任务类型,直接调用相应的计算单元执行该异构计算任务,所以在这种应用场景中,任务调度器执行该异构计算任务数据交换的过程更为简易,处理过程开销更小。
904、计算机设备通过负载量最小的计算单元发送第一通知消息至计算机设备中的任务调度器。
该负载量最小的计算单元执行完成该异构计算任务之后,可以向任务调度器发送第一通知消息,以通知任务调度器执行完成该异构计算任务。
905、计算机设备通过任务调度器向计算机设备中的Buffer管理器发送Buffer申请任务。
任务调度器确定需要申请Buffer之后,计算机设备中的任务生成装置会根据异构计算任务携带的Buffer的相关信息生成Buffer申请任务,且该Buffer申请任务携带有该异构计算任务的ID,然后向计算机设备中的Buffer管理器发送该Buffer申请任务。
906、计算机设备通过Buffer管理器执行该Buffer申请任务。
Buffer管理器接收到该Buffer申请任务之后,该Buffer管理器可以执行该Buffer申请任务。具体的Buffer申请任务过程与前述图4中Buffer的申请过程类似,区别只在于在本实施例中,是通过异构计算任务的ID来获取到对应的Buffer表项,其余流程与图4中Buffer管理器申请Buffer流程类似,具体此处不再赘述。
907、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第二通知消息。
Buffer管理器执行完成该Buffer申请任务之后,Buffer管理器可以向任务调度器发送第二通知消息,以通知该任务调度器该Buffer申请任务执行完成。
908、计算机设备通过任务调度器判断是否存在预加载数据,若是,则执行步骤911;若否,则执行步骤909。
任务调度器获取到异构计算任务之后,根据该异构计算任务携带的预加载数据的相关信息判断是否存在预加载数据,如果存在,那么执行步骤911,如果不存在,那么执行步骤909。其中,异构计算任务携带的预加载数据相关信息可以包括该预加载preload数据的源地址、预加载preload数据长度、该预加载preload数据在Buffer中的偏移量等信息,具体请参阅图8所示,图8为预加载数据的相关信息的示意图。
909、计算机设备通过任务调度器发送异构计算任务至计算机设备中负载量最小的计算单元。
如果不存在预加载数据,任务调度器可以向负载量最小的计算单元发送异构计算任务。
910、计算机设备通过负载量最小的计算单元发送第三通知消息至计算机设备中的任务调度器。
步骤910与前述步骤904类似,具体此处不再赘述。
911、计算机设备通过任务调度器通过计算机设备中的数据搬移发射器向计算机设备中的DMA发送拷贝预加载数据的任务。
步骤911与前述图6中的步骤618类似,具体此处不再赘述。
912、计算机设备通过任务调度器接收计算机设备中的DMA发送的第四通知消息。
步骤912与前述图6中的步骤620类似,具体此处不再赘述。
913、计算机设备通过任务调度器判断计算机设备中的Buffer对应的设备内存是否局部内存,若是,则执行步骤914;若否,则执行步骤916。
914、计算机设备通过任务调度器向计算机设备中的局部内存对应的计算单元发送异构计算任务。
915、计算机设备通过任务调度器接收计算机设备中的局部内存对应的计算单元发送的第五通知消息。
步骤913至步骤915与前述图6中的步骤623至步骤625类似,具体此处不再赘述。
916、计算机设备通过任务调度器向计算机设备中的负载量最小的计算单元发送异构计算任务。
917、计算机设备通过任务调度器接收计算机设备中的负载量最小的计算单元发送的第六通知消息。
步骤916至步骤917与前述图6中的步骤627至步骤628类似,具体此处不再赘述。
918、计算机设备通过任务调度器判断存在预存数据,若是,则执行步骤922;若否,则执行步骤919。
任务调度器根据异构计算任务确定是否存在预存数据,若存在,则执行步骤922,若不存在,则执行步骤919,具体的,该异构计算任务如果携带预存数据的相关信息,则说明存在预存数据,那么该预存数据的相关信息可以包括预存数据的保存地址、保存数据长度以及保存数据在该Buffer释放任务对应的Buffer中的偏移量,具体如图7所示,图7为预存prestore数据在Buffer中的Buffer偏移量、prestore数据长度以及prestore数据目标地址;如果该异构计算任务没有携带预存数据的相关信息,那么说明不存在预存数据。
919、计算机设备通过任务调度器向该计算机设备中的Buffer管理器发送Buffer释放任务。
任务调度器确定不存在预存数据之后,该计算机设备通过任务生成装置根据异构计算任务的Buffer的相关信息生成Buffer释放任务,其中,该Buffer释放任务携带该异构计算任务的ID,然后计算机设备通过任务调度器将该Buffer释放任务发送至该计算机设备中的Buffer管理器。
920、计算机设备通过Buffer管理器执行该Buffer释放任务。
Buffer管理器接收到Buffer释放任务之后,Buffer管理器可以根据异构计算任务的ID获取到对应的Buffer表项,然后对应的Buffer释放过程与前述图6中的Buffer释放过程类似,具体此处不再赘述。
921、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第七通知消息。
步骤921与前述图6中的步骤613类似,具体此处不再赘述。
922、计算机设备通过任务调度器通过计算机设备中的数据搬移发射器向计算机设备中的DMA发送拷贝预存数据的任务。
923、计算机设备通过任务调度器接收计算机设备中的DMA发送的第八通知消息。
924、计算机设备通过任务调度器向计算机设备中的Buffer管理器发送Buffer释放任务。
925、计算机设备通过Buffer管理器向计算机设备中的任务调度器发送第九通知消息。
步骤922至步骤925与前述图6中的步骤607至步骤610类似,具体此处不再赘述。
本申请实施例中,计算机设备通过任务调度器从计算机设备中的任务缓存池中获取异构计算任务,该异构计算任务为其前继任务已完成,且其后继任务待执行的任务,该异构计算任务与该前继任务在逻辑上存在顺序依赖关系;然后计算机设备通过任务调度器根据该异构计算任务确定是否要申请Buffer,确定要申请Buffer的时候,任务调度器会向计算机设备中的Buffer管理器发送Buffer申请任务;当该异构计算任务执行完成时,该任务调度器会向Buffer管理器发送Buffer释放任务。因此,那么对于Buffer的申请,可以真正延后至该Buffer申请任务的前继任务执行完成后,计算机设备可以通过任务调度器再调用计算机设备中的Buffer管理器来执行该Buffer申请任务;对于Buffer的释放,可以提前至该Buffer释放任务的前继任务完成时计算机设备通过任务调度器向计算机设备中的Buffer管理器立即派发该Buffer释放任务,从而提高了Buffer对应的设备内存的周转效率。
上面对本申请实施例中的数据处理方法进行了描述,下面对本申请实施例中的计算机设备进行描述,请参阅图10,其中,第一确定单元1004、第二确定单元1005、第一更换单元1006、第二更换单元1007、判断单元1008、第三确定单元1009、设置单元1010、解除单元1011以及填写单元1012为可选单元,本申请实施例中计算机设备的一个实施例包括:
生成单元1001,用于生成目标任务,该目标任务包括Buffer申请任务或者Buffer释放任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务和该第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为该Buffer申请任务时,该第二任务执行时使用该Buffer申请任务所对应的Buffer,当该目标任务为该Buffer释放任务时,该第一任务执行时使用该Buffer释放任务所对应的Buffer;
获取单元1002,用于当该目标任务的前继任务已完成后且该目标任务的后继任务执行前,根据该目标任务获取该目标任务对应的Buffer表项,该Buffer表项为包含该目标任务对应的Buffer内存大小、该Buffer的内存位置以及该Buffer的内存地址的表项;
执行单元1003,用于执行该目标任务以申请或者释放该目标任务所对应的Buffer。
本实施例中,该目标任务包含该目标任务对应的Buffer的ID;该获取单元1002具体用于:
根据该内存ID获取该目标任务对应的Buffer表项。
本实施例中,该目标任务为Buffer申请任务,该执行单元1003具体用于:
从该Buffer表项中确定该Buffer的内存大小以及该Buffer的内存位置;
根据该Buffer的内存大小和该Buffer的内存位置为该Buffer确定对应的设备内存;
根据该设备内存更新该Buffer表项中的Buffer的内存地址。
本实施例中,该目标任务为Buffer释放任务;该执行单元1003具体用于:
从该Buffer表项中确定该目标任务对应的Buffer的内存地址;
释放该Buffer的内存地址对应的设备内存;
删除该Buffer表项。
本实施例中,该目标任务包含依赖任务组ID;该获取单元1002具体用于:
根据该依赖任务组ID获取该目标任务对应的Buffer表项。
本实施例中,该目标任务为Buffer申请任务;该执行单元1003具体用于:
判断该Buffer表项中的该目标任务对应的Buffer的内存位置是否位于局部内存;
若该Buffer的内存位置位于局部内存,则根据预设的策略确定目标局部内存;
根据该目标局部内存更新该Buffer表项中的该Buffer的内存地址以及该Buffer的内存位置;
若该Buffer的内存位置不位于局部内存,则将该Buffer内存位置设置为全局内存;
根据该全局内存更新该Buffer表项中的该Buffer的内存地址以及该Buffer的内存位置。
本实施例中,该目标任务为Buffer释放任务;该执行单元1003具体用于:
确定该Buffer表项中该目标任务对应的Buffer的内存地址;
释放该Buffer的内存地址对应的设备内存;
设置该Buffer表项中的该Buffer的内存地址为空地址。
本实施例中,该目标任务为Buffer申请任务;该计算机设备还包括:
第一确定单元1004,用于确定存在预加载数据;
该生成单元1001还用于:
生成拷贝该预加载数据的任务;
该执行单元1003还用于:
执行该拷贝所述预加载数据的任务。
本实施例中,该目标任务为Buffer释放任务;该计算机设备还包括:
第二确定单元1005,用于确定存在预存数据;
该生成单元1001还用于:
生成拷贝该预存数据的任务;
该执行单元1003还用于:
执行该拷贝所述预存数据的任务。
本实施例中,若该目标任务为内存拷贝任务,该目标任务中携带该内存拷贝任务对应的数据拷贝的源地址为合法的内存ID和/或该内存拷贝任务对应的数据拷贝的目的地址为合法的内存ID;该获取单元1002还用于:
根据该内存ID获取该内存ID对应的Buffer表项;
该计算机设备还包括:
第一更换单元1006,用于将该目标任务中携带的内存ID更换为该Buffer表项中该Buffer的内存地址;
该执行单元1003还用于:
执行内存拷贝任务。
本实施例中,若该目标任务为异构计算任务,且该目标任务的输入参数中包含合法的内存ID;该获取单元1002还用于:
根据该内存ID获取该内存ID对应的Buffer表项;
该计算机设备还包括:
第二更换单元1007,用于将该输入参数中的所述内存ID更换为该Buffer表项中的该Buffer的内存地址;
判断单元1008,用于判断该内存ID对应的Buffer内存位置是否位于局部内存;
该执行单元1003具体用于:
若该内存ID对应的Buffer内存位置位于局部内存,则根据该局部内存执行该异构计算任务。
本实施例中,若该目标任务为异构计算任务,且该目标任务包含依赖任务组ID,该获取单元1002具体用于:
获取该依赖任务组ID对应的Buffer表项;
该计算机设备还包括:
第三确定单元1009,用于确定该Buffer表项中的Buffer内存位置位于局部内存;
设置单元1010,用于将该Buffer表项中的Buffer内存地址设置为该异构计算任务的隐式参数;
该执行单元1003还用于:
根据该局部内存执行该异构计算任务。
本实施例中,该计算机设备还包括:
解除单元1011,用于解除依赖于该目标任务的任务与该目标任务的依赖关系。
本实施例中,该目标任务为Buffer申请任务;该生成单元1001具体用于:
为该目标任务所对应的Buffer申请Buffer表项以及该Buffer表项对应的内存ID;
根据应用程序编程接口参数填写该Buffer表项,该应用程序编程接口参数为该计算机设备调用该计算机设备的应用程序编程接口产生的参数,其中,该Buffer表项中Buffer内存地址为空地址;
根据该Buffer表项生成Buffer申请任务,该Buffer申请任务包含该Buffer表项对应的内存ID。
本实施例中,该目标任务为Buffer申请任务;该生成单元1001具体用于:
根据应用程序编程接口参数填写依赖任务组ID对应的Buffer表项,该应用程序编程接口参数为该计算机设备调用该计算机设备的应用程序编程接口产生的参数,其中,该Buffer表项中Buffer的内存地址为空地址;
根据该Buffer表项生成该Buffer申请任务,该Buffer申请任务包含依赖任务组ID。
本实施例中,该目标任务为Buffer释放任务;该Buffer释放任务包含有该Buffer释放任务对应的Buffer的内存ID。
本实施例中,该目标任务为Buffer释放任务,该Buffer释放任务包含该Buffer释放任务对应的Buffer的依赖任务组ID。
本实施例中,该目标任务为Buffer申请任务;该生成单元1001具体用于:
确定异构计算任务中携带有该目标任务所对应的Buffer的相关信息,该异构计算任务为该计算机设备生成的任务,该异构计算任务为该异构计算任务的前继任务已完成,且该异构计算任务的后继任务待执行的任务,该Buffer的相关信息包括该异构计算任务所对应的Buffer的内存大小、该Buffer的内存地址以及该Buffer的内存位置;
根据该Buffer的相关信息填写该异构计算任务所对应的Buffer表项;
根据该Buffer表项生成Buffer申请任务。
本实施例中,该目标任务为Buffer释放任务;该生成单元1001具体用于:
确定异构计算任务中携带有该目标任务所对应的Buffer的相关信息,该异构计算任务为该计算机设备生成的任务,该异构计算任务为该异构计算任务的前继任务已完成,且该异构计算任务的后继任务待执行的任务,该Buffer的相关信息包括该异构计算任务所对应的Buffer的内存大小、该Buffer的内存地址以及该Buffer的内存位置;
获取该目标任务所对应的Buffer表项;
根据该Buffer表项生成Buffer释放任务。
本实施例中,该异构计算任务还包含有预加载数据的相关信息,该预加载数据的相关信息包括预加载数据的源地址、预加载数据长度以及预加载数据在所述Buffer中的偏移地址;该生成单元1001还用于:
根据该预加载数据的相关信息生成拷贝该预加载数据的任务;
该执行单元1003还用于:
执行该预加载数据的任务。
本实施例中,该异构计算任务还包含有预存数据的相关信息,该预存数据的相关信息包括该预存数据的保存地址、预存数据长度以及该预存数据在Buffer中的偏移地址;该生成单元1001还用于:
根据该预存数据的相关信息生成拷贝该预存数据的任务;
该执行单元1003还用于:
执行该拷贝该预存数据的任务。
本实施例中,该计算机设备还包括:
填写单元1012,用于根据应用程序编程接口参数填写该异构计算任务所对应的Buffer表项,该应用程序编程接口参数为该计算机设备设备调用该计算机设备的应用程序编程接口时产生的参数;
该生成单元1001还用于:
根据该Buffer表项生成该异构计算任务,该异构计算任务包含有该异构计算任务所对应的Buffer的相关信息。
本申请实施例中,生成单元1001生成目标任务,其中,该目标任务包括Buffer申请任务或者Buffer释放任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务和第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为该Buffer申请任务的时候,该第二任务执行时使用该Buffer申请任务所对应的Buffer,当该目标任务为该Buffer释放任务时,该第一任务执行时使用该Buffer释放任务所对应的Buffer,当该目标任务的前继任务已完成后且该目标任务的后继任务执行前,该获取单元1002可以根据该目标任务获取该目标任务对应的Buffer表项,其中,该Buffer表项为包含该目标任务对应的Buffer的内存大小、该Buffer的内存位置以及该Buffer的内存地址的表项,然后该执行单元1003执行该目标任务以申请或者释放该目标任务所对应的Buffer。因此,计算机设备在对Buffer申请或者Buffer释放之前,计算机设备可以确定目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,执行单元1003才会执行该目标任务,所以执行单元1003对该Buffer申请可以真正延后至目标任务的前继任务执行完成之后,且目标任务的后继任务执行前,以及执行单元1003对该Buffer的释放可以提前至该目标任务的前继任务完成后立即执行,从而提高了Buffer对应的设备内存的周转效率。
本申请还提供一种计算机设备1100,请参阅图11,本申请实施例中计算机设备一个实施例包括:
处理器1101、存储器1102、输入输出设备1103以及总线1104;
处理器1101、存储器1102、输入输出设备1103分别与总线1104相连,该存储器中存储有计算机指令;
该处理器1101用于生成目标任务,该目标任务包括Buffer申请任务或者Buffer释放任务,该目标任务为第一任务的后继任务,且为第二任务的前继任务,该第一任务和该第二任务为存在顺序依赖关系的待执行任务,其中,当该目标任务为该Buffer申请任务时,该第二任务执行时使用该Buffer申请任务所对应的Buffer,当该目标任务为该Buffer释放任务时,该第一任务执行时使用该Buffer释放任务所对应的Buffer;
该输入输出设备1103用于当该目标任务的前继任务已完成后且该目标任务的后继任务执行前,根据该目标任务获取该目标任务对应的Buffer表项,该Buffer表项为包含该目标任务对应的Buffer内存大小、该Buffer的内存位置以及该Buffer的内存地址的表项;
该处理器1101用于执行该目标任务以申请或者释放该目标任务所对应的Buffer。
一种可能的实现方式中,该目标任务包含该目标任务对应的Buffer的ID;该输入输出设备1103具体用于:
根据该内存ID获取该目标任务对应的Buffer表项。
另一种可能的实现方式中,该目标任务为Buffer申请任务,该处理器1101具体用于:
从该Buffer表项中确定该Buffer的内存大小以及该Buffer的内存位置;
根据该Buffer的内存大小和该Buffer的内存位置为该Buffer确定对应的设备内存;
根据该设备内存更新该Buffer表项中的Buffer的内存地址。
另一种可能的实现方式中,该目标任务为Buffer释放任务;该处理器1101具体用于:
从该Buffer表项中确定该目标任务对应的Buffer的内存地址;
释放该Buffer的内存地址对应的设备内存;
删除该Buffer表项。
另一种可能的实现方式中,该目标任务包含依赖任务组ID;该输入输出设备1103具体用于:
根据该依赖任务组ID获取该目标任务对应的Buffer表项。
另一种可能的实现方式中,该目标任务为Buffer申请任务;该处理器1101具体用于:
判断该Buffer表项中的该目标任务对应的Buffer的内存位置是否位于局部内存;
若该Buffer的内存位置位于局部内存,则根据预设的策略确定目标局部内存;
根据该目标局部内存更新该Buffer表项中的该Buffer的内存地址以及该Buffer的内存位置;
若该Buffer的内存位置不位于局部内存,则将该Buffer内存位置设置为全局内存;
根据该全局内存更新该Buffer表项中的该Buffer的内存地址以及该Buffer的内存位置。
另一种可能的实现方式中,该目标任务为Buffer释放任务;该处理器1101具体用于:
确定该Buffer表项中该目标任务对应的Buffer的内存地址;
释放该Buffer的内存地址对应的设备内存;
设置该Buffer表项中的该Buffer的内存地址为空地址。
另一种可能的实现方式中,该目标任务为Buffer申请任务;该处理器1101还用于:
确定存在预加载数据;
生成拷贝该预加载数据的任务;
执行该拷贝所述预加载数据的任务。
另一种可能的实现方式中,该目标任务为Buffer释放任务;该处理器1101还用于:
确定存在预存数据;
生成拷贝该预存数据的任务;
执行该拷贝所述预存数据的任务。
另一种可能的实现方式中,若该目标任务为内存拷贝任务,该目标任务中携带该内存拷贝任务对应的数据拷贝的源地址为合法的内存ID和/或该内存拷贝任务对应的数据拷贝的目的地址为合法的内存ID;该输入输出设备1103还用于:
根据该内存ID获取该内存ID对应的Buffer表项;
该处理器1101还用于:
将该目标任务中携带的内存ID更换为该Buffer表项中该Buffer的内存地址;
执行内存拷贝任务。
另一种可能的实现方式中,若该目标任务为异构计算任务,且该目标任务的输入参数中包含合法的内存ID;该输入输出设备1103还用于:
根据该内存ID获取该内存ID对应的Buffer表项;
该处理器1101还用于:
将该输入参数中的所述内存ID更换为该Buffer表项中的该Buffer的内存地址;
判断该内存ID对应的Buffer内存位置是否位于局部内存;
若该内存ID对应的Buffer内存位置位于局部内存,则根据该局部内存执行该异构计算任务。
另一种可能的实现方式中,若该目标任务为异构计算任务,且该目标任务包含依赖任务组ID,该输入输出设备1103还用于:
获取该依赖任务组ID对应的Buffer表项;
该处理器1101还用于:
确定该Buffer表项中的Buffer内存位置位于局部内存;
将该Buffer表项中的Buffer内存地址设置为该异构计算任务的隐式参数;
根据该局部内存执行该异构计算任务。
另一种可能的实现方式中,该处理器1101还用于:
解除依赖于该目标任务的任务与该目标任务的依赖关系。
另一种可能的实现方式中,该目标任务为Buffer申请任务;该处理器1101具体用于:
为该目标任务所对应的Buffer申请Buffer表项以及该Buffer表项对应的内存ID;
根据应用程序编程接口参数填写该Buffer表项,该应用程序编程接口参数为该计算机设备调用该计算机设备的应用程序编程接口产生的参数,其中,该Buffer表项中Buffer内存地址为空地址;
根据该Buffer表项生成Buffer申请任务,该Buffer申请任务包含该Buffer表项对应的内存ID。
另一种可能的实现方式中,该目标任务为Buffer申请任务;该处理器1101具体用于:
根据应用程序编程接口参数填写依赖任务组ID对应的Buffer表项,该应用程序编程接口参数为该计算机设备调用该计算机设备的应用程序编程接口产生的参数,其中,该Buffer表项中Buffer的内存地址为空地址;
根据该Buffer表项生成该Buffer申请任务,该Buffer申请任务包含依赖任务组ID。
另一种可能的实现方式中,该目标任务为Buffer释放任务;该Buffer释放任务包含有该Buffer释放任务对应的Buffer的内存ID。
另一种可能的实现方式中,该目标任务为Buffer释放任务,该Buffer释放任务包含该Buffer释放任务对应的Buffer的依赖任务组ID。
另一种可能的实现方式中,该目标任务为Buffer申请任务;该处理器1101具体用于:
确定异构计算任务中携带有该目标任务所对应的Buffer的相关信息,该异构计算任务为该计算机设备生成的任务,该异构计算任务为该异构计算任务的前继任务已完成,且该异构计算任务的后继任务待执行的任务,该Buffer的相关信息包括该异构计算任务所对应的Buffer的内存大小、该Buffer的内存地址以及该Buffer的内存位置;
根据该Buffer的相关信息填写该异构计算任务所对应的Buffer表项;
根据该Buffer表项生成Buffer申请任务。
另一种可能的实现方式中,该目标任务为Buffer释放任务;该处理器1101具体用于:
确定异构计算任务中携带有该目标任务所对应的Buffer的相关信息,该异构计算任务为该计算机设备生成的任务,该异构计算任务为该异构计算任务的前继任务已完成,且该异构计算任务的后继任务待执行的任务,该Buffer的相关信息包括该异构计算任务所对应的Buffer的内存大小、该Buffer的内存地址以及该Buffer的内存位置;
获取该目标任务所对应的Buffer表项;
根据该Buffer表项生成该Buffer释放任务。
另一种可能的实现方式中,该异构计算任务还包含有预加载数据的相关信息,该预加载数据的相关信息包括预加载数据的源地址、预加载数据长度以及预加载数据在所述Buffer中的偏移地址;该处理器1101还用于:
根据该预加载数据的相关信息生成拷贝该预加载数据的任务;
执行该预加载数据的任务。
另一种可能的实现方式中,该异构计算任务还包含有预存数据的相关信息,该预存数据的相关信息包括该预存数据的保存地址、预存数据长度以及该预存数据在Buffer中的偏移地址;该处理器1101还用于:
根据该预存数据的相关信息生成拷贝该预存数据的任务;
执行该拷贝该预存数据的任务。
另一种可能的实现方式中,该处理器1101还用于:
根据应用程序编程接口参数填写该异构计算任务所对应的Buffer表项,该应用程序编程接口参数为该计算机设备设备调用该计算机设备的应用程序编程接口时产生的参数;
根据该Buffer表项生成该异构计算任务,该异构计算任务包含有该异构计算任务所对应的Buffer的相关信息。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在另一种可能的设计中,当该计算机设备为终端内的芯片时,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使该终端内的芯片执行上述第一方面任意一项的数据处理方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述终端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制上述第一方面的数据处理方法的程序执行的集成电路。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (30)
1.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述目标任务包含依赖任务组ID,所述目标任务为Buffer申请任务;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
所述计算机设备根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;
所述并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer包括:
所述计算机设备判断所述Buffer表项中的所述目标任务对应的Buffer的内存位置是否位于局部内存;
若所述Buffer的内存位置位于局部内存,则所述计算机设备根据预设的策略确定目标局部内存;
所述计算机设备根据所述目标局部内存更新所述Buffer表项中的所述Buffer的内存地址以及所述Buffer的内存位置;
若所述Buffer的内存位置不位于局部内存,则所述计算机设备将所述Buffer内存位置设置为全局内存;
所述计算机设备根据所述全局内存更新所述Buffer表项中的所述Buffer的内存地址以及所述Buffer的内存位置。
2.根据权利要求1所述的方法,其特征在于,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer之后,所述方法还包括:
所述计算机设备确定存在预加载数据;
所述计算机设备生成拷贝所述预加载数据的任务;
所述计算机设备执行所述拷贝所述预加载数据的任务。
3.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,所述计算机设备根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,所述计算机设备根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer申请任务,或者,所述目标任务为Buffer释放任务;所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer之后,所述方法还包括:
所述计算机设备确定存在预加载数据;
所述计算机设备生成拷贝所述预加载数据的任务;
所述计算机设备执行所述拷贝所述预加载数据的任务。
4.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务为内存拷贝任务,所述目标任务中携带所述内存拷贝任务对应的数据拷贝的源地址为合法的内存ID和/或所述内存拷贝任务对应的数据拷贝的目的地址为合法的内存ID,所述计算机设备根据所述内存ID获取所述内存ID对应的Buffer表项;所述方法还包括:
所述计算机设备将所述目标任务中携带的内存ID更换为所述Buffer表项中所述Buffer的内存地址;
所述计算机设备执行所述内存拷贝任务。
5.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务为异构计算任务,且所述目标任务的输入参数中包含合法的内存ID,所述计算机设备根据所述内存ID获取所述内存ID对应的Buffer表项;所述方法还包括:
所述计算机设备将所述输入参数中的所述内存ID更换为所述Buffer表项中的所述Buffer的内存地址;
所述计算机设备判断所述内存ID对应的Buffer内存位置是否位于局部内存;
若所述内存ID对应的Buffer内存位置位于局部内存,则所述计算机设备根据所述局部内存执行所述异构计算任务。
6.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务为异构计算任务,且所述目标任务包含依赖任务组ID,所述计算机设备获取所述依赖任务组ID对应的Buffer表项;所述方法还包括:
所述计算机设备确定所述Buffer表项中的Buffer内存位置位于局部内存;
所述计算机设备将所述Buffer表项中的Buffer内存地址设置为所述异构计算任务的隐式参数;
所述计算机设备根据所述局部内存执行所述异构计算任务。
7.根据权利要求1、2、4至6中任一项所述的方法,其特征在于,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer之后,所述方法还包括:
所述计算机设备解除依赖于所述目标任务的任务与所述目标任务的依赖关系。
8.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,所述计算机设备根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,所述计算机设备根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer申请任务;所述计算机设备生成所述目标任务包括:
所述计算机设备为所述目标任务所对应的Buffer申请Buffer表项以及所述Buffer表项对应的内存ID;
所述计算机设备根据应用程序编程接口参数填写所述Buffer表项,所述应用程序编程接口参数为所述计算机设备调用所述计算机设备的应用程序编程接口产生的参数,其中,所述Buffer表项中Buffer内存地址为空地址;
所述计算机设备根据所述Buffer表项生成Buffer申请任务,所述Buffer申请任务包含所述Buffer表项对应的内存ID。
9.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务包含依赖任务组ID,所述计算机设备根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer申请任务;所述计算机设备生成所述目标任务包括:
所述计算机设备根据应用程序编程接口参数填写依赖任务组ID对应的Buffer表项,所述应用程序编程接口参数为所述计算机设备调用所述计算机设备的应用程序编程接口产生的参数,其中,所述Buffer表项中Buffer的内存地址为空地址;
所述计算机设备根据所述Buffer表项生成所述Buffer申请任务,所述Buffer申请任务包含依赖任务组ID。
10.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,所述计算机设备根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,所述计算机设备根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer申请任务;所述计算机设备生成所述目标任务包括:
所述计算机设备确定异构计算任务中携带有所述目标任务所对应的Buffer的相关信息,所述异构计算任务为所述计算机设备生成的任务,所述异构计算任务为所述异构计算任务的前继任务已完成,且所述异构计算任务的后继任务待执行的任务,所述Buffer的相关信息包括所述异构计算任务所对应的Buffer的内存大小、所述Buffer的内存地址以及所述Buffer的内存位置;
所述计算机设备根据所述Buffer的相关信息填写所述异构计算任务所对应的Buffer表项;
所述计算机设备根据所述Buffer表项生成Buffer申请任务。
11.根据权利要求10所述的方法,其特征在于,所述异构计算任务还包含有预加载数据的相关信息,所述预加载数据的相关信息包括预加载数据的源地址、预加载数据长度以及预加载数据在所述Buffer中的偏移地址;所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer之后,所述方法还包括:
所述计算机设备根据所述预加载数据的相关信息生成拷贝所述预加载数据的任务;
所述计算机设备执行拷贝所述预加载数据的任务。
12.一种数据处理方法,其特征在于,所述方法包括:
计算机设备生成目标任务,所述目标任务包括缓冲寄存器Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer的内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,包括:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,所述计算机设备根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,所述计算机设备根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer释放任务;所述计算机设备生成所述目标任务包括:
所述计算机设备确定异构计算任务中携带有所述目标任务所对应的Buffer的相关信息,所述异构计算任务为所述计算机设备生成的任务,所述异构计算任务为所述异构计算任务的前继任务已完成,且所述异构计算任务的后继任务待执行的任务,所述Buffer的相关信息包括所述异构计算任务所对应的Buffer的内存大小、所述Buffer的内存地址以及所述Buffer的内存位置;
所述计算机设备获取所述目标任务所对应的Buffer表项;
所述计算机设备根据所述Buffer表项生成所述Buffer释放任务。
13.根据权利要求12所述的方法,其特征在于,所述异构计算任务还包含有预存数据的相关信息,所述预存数据的相关信息包括所述预存数据的保存地址、预存数据长度以及所述预存数据在Buffer中的偏移地址;所述计算机设备根据所述目标任务获取所述目标任务对应的Buffer表项,并执行所述目标任务以申请或者释放所述目标任务所对应的Buffer之前,所述方法还包括:
所述计算机设备根据所述预存数据的相关信息生成拷贝所述预存数据的任务;
所述计算机设备执行所述拷贝所述预存数据的任务。
14.根据权利要求11或13所述的方法,其特征在于,所述计算机设备确定异构计算任务中携带有所述目标任务所对应的Buffer的相关信息之前,所述方法还包括:
所述计算机设备根据应用程序编程接口参数填写所述异构计算任务所对应的Buffer表项,所述应用程序编程接口参数为所述计算机设备调用所述计算机设备的应用程序编程接口时产生的参数;
所述计算机设备根据所述Buffer表项生成所述异构计算任务,所述异构计算任务包含有所述异构计算任务所对应的Buffer的相关信息。
15.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
所述目标任务包含依赖任务组ID,所述目标任务为Buffer申请任务;
获取单元具体用于:
根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;
所述执行单元具体用于:
判断所述Buffer表项中的所述目标任务对应的Buffer的内存位置是否位于局部内存;
若所述Buffer的内存位置位于局部内存,则根据预设的策略确定目标局部内存;
根据所述目标局部内存更新所述Buffer表项中的所述Buffer的内存地址以及所述Buffer的内存位置;
若所述Buffer的内存位置不位于局部内存,则将所述Buffer内存位置设置为全局内存;
根据所述全局内存更新所述Buffer表项中的所述Buffer的内存地址以及所述Buffer的内存位置。
16.根据权利要求15所述的计算机设备,其特征在于,所述计算机设备还包括:第一确定单元,用于确定存在预加载数据;
所述生成单元还用于:
生成拷贝所述预加载数据的任务;
所述执行单元还用于:
执行所述拷贝所述预加载数据的任务。
17.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer申请任务,或者,所述目标任务为Buffer释放任务;所述计算机设备还包括:
第一确定单元,用于确定存在预加载数据;
所述生成单元还用于:
生成拷贝所述预加载数据的任务;
所述执行单元还用于:
执行所述拷贝所述预加载数据的任务。
18.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务为内存拷贝任务,所述目标任务中携带所述内存拷贝任务对应的数据拷贝的源地址为合法的内存ID和/或所述内存拷贝任务对应的数据拷贝的目的地址为合法的内存ID,根据所述内存ID获取所述内存ID对应的Buffer表项;
所述计算机设备还包括:
第一更换单元,用于将所述目标任务中携带的内存ID更换为所述Buffer表项中所述Buffer的内存地址;
所述执行单元还用于:
执行所述内存拷贝任务。
19.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务为异构计算任务,且所述目标任务的输入参数中包含合法的内存ID,根据所述内存ID获取所述内存ID对应的Buffer表项;
所述计算机设备还包括:
第二更换单元,用于将所述输入参数中的所述内存ID更换为所述Buffer表项中的所述Buffer的内存地址;
判断单元,用于判断所述内存ID对应的Buffer内存位置是否位于局部内存;
所述执行单元具体用于:
若所述内存ID对应的Buffer内存位置位于局部内存,则根据所述局部内存执行所述异构计算任务。
20.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务为异构计算任务,且所述目标任务包含依赖任务组ID,获取所述依赖任务组ID对应的Buffer表项;所述计算机设备还包括:
第三确定单元,用于确定所述Buffer表项中的Buffer内存位置位于局部内存;
设置单元,用于将所述Buffer表项中的Buffer内存地址设置为所述异构计算任务的隐式参数;
所述执行单元还用于:
根据所述局部内存执行所述异构计算任务。
21.根据权利要求15、16、18至20中的任一项所述的计算机设备,其特征在于,所述计算机设备还包括:
解除单元,用于解除依赖于所述目标任务的任务与所述目标任务的依赖关系。
22.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer申请任务;所述生成单元具体用于:
为所述目标任务所对应的Buffer申请Buffer表项以及所述Buffer表项对应的内存ID;
根据应用程序编程接口参数填写所述Buffer表项,所述应用程序编程接口参数为所述计算机设备调用所述计算机设备的应用程序编程接口产生的参数,其中,所述Buffer表项中Buffer内存地址为空地址;
根据所述Buffer表项生成Buffer申请任务,所述Buffer申请任务包含所述Buffer表项对应的内存ID。
23.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务包含依赖任务组ID,根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;
所述目标任务为Buffer申请任务;所述生成单元具体用于:
根据应用程序编程接口参数填写依赖任务组ID对应的Buffer表项,所述应用程序编程接口参数为所述计算机设备调用所述计算机设备的应用程序编程接口产生的参数,其中,所述Buffer表项中Buffer的内存地址为空地址;
根据所述Buffer表项生成所述Buffer申请任务,所述Buffer申请任务包含依赖任务组ID。
24.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer申请任务;所述生成单元具体用于:
确定异构计算任务中携带有所述目标任务所对应的Buffer的相关信息,所述异构计算任务为所述计算机设备生成的任务,所述异构计算任务为所述异构计算任务的前继任务已完成,且所述异构计算任务的后继任务待执行的任务,所述Buffer的相关信息包括所述异构计算任务所对应的Buffer的内存大小、所述Buffer的内存地址以及所述Buffer的内存位置;
根据所述Buffer的相关信息填写所述异构计算任务所对应的Buffer表项;
根据所述Buffer表项生成Buffer申请任务。
25.根据权利要求24所述的计算机设备,其特征在于,所述异构计算任务还包含有预加载数据的相关信息,所述预加载数据的相关信息包括预加载数据的源地址、预加载数据长度以及预加载数据在所述Buffer中的偏移地址;所述生成单元还用于:
根据所述预加载数据的相关信息生成拷贝所述预加载数据的任务;
所述执行单元还用于:
执行所述预加载数据的任务。
26.一种计算机设备,其特征在于,所述计算机设备包括:
生成单元,用于生成目标任务,所述目标任务包括Buffer申请任务或者Buffer释放任务,所述目标任务为第一任务的后继任务,且为第二任务的前继任务,所述第一任务和所述第二任务为存在顺序依赖关系的待执行任务,其中,当所述目标任务为所述Buffer申请任务时,所述第二任务执行时使用所述Buffer申请任务所对应的Buffer,当所述目标任务为所述Buffer释放任务时,所述第一任务执行时使用所述Buffer释放任务所对应的Buffer;
获取单元,用于当所述目标任务的前继任务已完成后且所述目标任务的后继任务执行前,根据所述目标任务获取所述目标任务对应的Buffer表项,所述Buffer表项为包含所述目标任务对应的Buffer内存大小、所述Buffer的内存位置以及所述Buffer的内存地址的表项;
执行单元,用于执行所述目标任务以申请或者释放所述目标任务所对应的Buffer;
获取单元具体用于:
若所述目标任务包含所述目标任务对应的Buffer的内存身份标识ID,根据所述内存ID获取所述目标任务对应的Buffer表项;或者,
若所述目标任务包含依赖任务组ID,根据所述依赖任务组ID获取所述目标任务对应的Buffer表项;所述目标任务为Buffer释放任务;所述生成单元具体用于:
确定异构计算任务中携带有所述目标任务所对应的Buffer的相关信息,所述异构计算任务为所述计算机设备生成的任务,所述异构计算任务为所述异构计算任务的前继任务已完成,且所述异构计算任务的后继任务待执行的任务,所述Buffer的相关信息包括所述异构计算任务所对应的Buffer的内存大小、所述Buffer的内存地址以及所述Buffer的内存位置;
获取所述目标任务所对应的Buffer表项;
根据所述Buffer表项生成所述Buffer释放任务。
27.根据权利要求26所述的计算机设备,其特征在于,所述异构计算任务还包含有预存数据的相关信息,所述预存数据的相关信息包括所述预存数据的保存地址、预存数据长度以及所述预存数据在Buffer中的偏移地址;所述生成单元还用于:
根据所述预存数据的相关信息生成拷贝所述预存数据的任务;
所述执行单元还用于:
执行所述拷贝所述预存数据的任务。
28.根据权利要求25或27所述的计算机设备,其特征在于,所述计算机设备还包括:
填写单元,用于根据应用程序编程接口参数填写所述异构计算任务所对应的Buffer表项,所述应用程序编程接口参数为所述计算机设备调用所述计算机设备的应用程序编程接口时产生的参数;
所述生成单元还用于:
根据所述Buffer表项生成所述异构计算任务,所述异构计算任务包含有所述异构计算任务所对应的Buffer的相关信息。
29.一种计算机设备,其特征在于,所述计算机设备包括:处理器、存储器、收发器,所述处理器、存储器以及收发器通过总线连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令用于实现如权利要求1至权利要求14任意一项所述的数据处理方法。
30.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至14中任一项所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810571788.XA CN110543351B (zh) | 2018-05-29 | 2018-05-29 | 数据处理方法以及计算机设备 |
CN202311498311.0A CN117827390A (zh) | 2018-05-29 | 2018-05-29 | 数据处理方法以及计算机设备 |
EP19810599.1A EP3783484B1 (en) | 2018-05-29 | 2019-05-22 | Data processing method and computer device |
PCT/CN2019/087923 WO2019228237A1 (zh) | 2018-05-29 | 2019-05-22 | 数据处理方法以及计算机设备 |
US17/107,173 US11422861B2 (en) | 2018-05-29 | 2020-11-30 | Data processing method and computer device |
US17/878,401 US20220365822A1 (en) | 2018-05-29 | 2022-08-01 | Data Processing Method and Computer Device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810571788.XA CN110543351B (zh) | 2018-05-29 | 2018-05-29 | 数据处理方法以及计算机设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311498311.0A Division CN117827390A (zh) | 2018-05-29 | 2018-05-29 | 数据处理方法以及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110543351A CN110543351A (zh) | 2019-12-06 |
CN110543351B true CN110543351B (zh) | 2023-11-17 |
Family
ID=68697377
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810571788.XA Active CN110543351B (zh) | 2018-05-29 | 2018-05-29 | 数据处理方法以及计算机设备 |
CN202311498311.0A Pending CN117827390A (zh) | 2018-05-29 | 2018-05-29 | 数据处理方法以及计算机设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311498311.0A Pending CN117827390A (zh) | 2018-05-29 | 2018-05-29 | 数据处理方法以及计算机设备 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11422861B2 (zh) |
EP (1) | EP3783484B1 (zh) |
CN (2) | CN110543351B (zh) |
WO (1) | WO2019228237A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111614985B (zh) * | 2020-05-09 | 2021-10-01 | 杭州国芯科技股份有限公司 | 一种用于数字音视频解码设备的内存调度方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577311A (zh) * | 2003-06-27 | 2005-02-09 | 株式会社东芝 | 调度方法和实时处理系统 |
CN103399825A (zh) * | 2013-08-05 | 2013-11-20 | 武汉邮电科学研究院 | 一种无锁化内存申请释放方法 |
CN105302738A (zh) * | 2015-12-09 | 2016-02-03 | 北京东土科技股份有限公司 | 一种内存分配方法及装置 |
CN107766153A (zh) * | 2017-10-17 | 2018-03-06 | 华为技术有限公司 | 一种内存管理方法及装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8424012B1 (en) | 2004-11-15 | 2013-04-16 | Nvidia Corporation | Context switching on a video processor having a scalar execution unit and a vector execution unit |
US7809009B2 (en) * | 2006-02-21 | 2010-10-05 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
GB0605383D0 (en) * | 2006-03-17 | 2006-04-26 | Williams Paul N | Processing system |
US8060723B2 (en) * | 2007-01-10 | 2011-11-15 | Kernelon Silicon Inc. | Memory management device |
JP5091694B2 (ja) * | 2007-04-05 | 2012-12-05 | 京セラドキュメントソリューションズ株式会社 | 情報処理システム及び情報処理プログラム |
US7779173B2 (en) * | 2007-05-29 | 2010-08-17 | International Business Machines Corporation | Direct memory access transfer completion notification |
DE102009030047A1 (de) * | 2009-06-22 | 2010-12-23 | Deutsche Thomson Ohg | Verfahren und System zur Übertragung von Daten zwischen Datenspeichern durch entfernten direkten Speicherzugriff sowie Netzwerkstation die eingerichtet ist um in dem Verfahren als Sendestation bzw. als Empfangstation zu operieren |
US8681820B2 (en) * | 2011-05-03 | 2014-03-25 | Sonus Networks, Inc. | Inserting out-of-band data into in-band data streams |
US9286119B2 (en) * | 2013-02-13 | 2016-03-15 | Nvidia Corporation | System, method, and computer program product for management of dependency between tasks |
US9354884B2 (en) * | 2013-03-13 | 2016-05-31 | International Business Machines Corporation | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes |
US9473732B2 (en) * | 2013-05-31 | 2016-10-18 | Arris Enterprises, Inc. | Self correcting record pipeline |
US9817776B2 (en) * | 2015-01-19 | 2017-11-14 | Microsoft Technology Licensing, Llc | Memory descriptor list caching and pipeline processing |
US9529643B2 (en) * | 2015-01-26 | 2016-12-27 | Qualcomm Incorporated | Method and system for accelerating task control flow |
CN105550028B (zh) * | 2015-12-25 | 2019-08-06 | Tcl集团股份有限公司 | 一种基于缓存锁的多任务时序执行方法及系统 |
CN107544844A (zh) * | 2016-06-27 | 2018-01-05 | 中兴通讯股份有限公司 | 一种提升Spark运行效能的方法及装置 |
US20180121353A1 (en) * | 2016-10-27 | 2018-05-03 | Intel Corporation | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling |
US10909739B2 (en) * | 2018-01-26 | 2021-02-02 | Nvidia Corporation | Techniques for representing and processing geometry within an expanded graphics processing pipeline |
-
2018
- 2018-05-29 CN CN201810571788.XA patent/CN110543351B/zh active Active
- 2018-05-29 CN CN202311498311.0A patent/CN117827390A/zh active Pending
-
2019
- 2019-05-22 EP EP19810599.1A patent/EP3783484B1/en active Active
- 2019-05-22 WO PCT/CN2019/087923 patent/WO2019228237A1/zh unknown
-
2020
- 2020-11-30 US US17/107,173 patent/US11422861B2/en active Active
-
2022
- 2022-08-01 US US17/878,401 patent/US20220365822A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577311A (zh) * | 2003-06-27 | 2005-02-09 | 株式会社东芝 | 调度方法和实时处理系统 |
CN103399825A (zh) * | 2013-08-05 | 2013-11-20 | 武汉邮电科学研究院 | 一种无锁化内存申请释放方法 |
CN105302738A (zh) * | 2015-12-09 | 2016-02-03 | 北京东土科技股份有限公司 | 一种内存分配方法及装置 |
CN107766153A (zh) * | 2017-10-17 | 2018-03-06 | 华为技术有限公司 | 一种内存管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11422861B2 (en) | 2022-08-23 |
EP3783484B1 (en) | 2024-02-14 |
US20220365822A1 (en) | 2022-11-17 |
EP3783484A1 (en) | 2021-02-24 |
CN117827390A (zh) | 2024-04-05 |
EP3783484A4 (en) | 2021-06-16 |
CN110543351A (zh) | 2019-12-06 |
WO2019228237A1 (zh) | 2019-12-05 |
US20210081249A1 (en) | 2021-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210294623A1 (en) | Data processing method and apparatus, and server | |
EP3489815B1 (en) | Method and system for low latency data management | |
CN110851285B (zh) | 一种基于gpu虚拟化的资源复用方法、装置及设备 | |
EP3900308A1 (en) | Input/output processing in a distributed storage node with rdma | |
US10275558B2 (en) | Technologies for providing FPGA infrastructure-as-a-service computing capabilities | |
US20170344398A1 (en) | Accelerator control device, accelerator control method, and program storage medium | |
CN110069346B (zh) | 多进程间资源共享方法、装置、电子设备 | |
WO2021196597A1 (zh) | 业务插件加载实现方法、装置和终端设备 | |
KR102338849B1 (ko) | 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템 | |
US20120227056A1 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
JP2021518955A (ja) | プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体 | |
US10606635B2 (en) | Accelerator control apparatus, accelerator control method, and storage medium | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN113312182B (zh) | 一种云计算节点、文件处理方法及装置 | |
CN110543351B (zh) | 数据处理方法以及计算机设备 | |
CN111294377B (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
CN113268356B (zh) | 基于LINUX系统的多GPU板卡bounding的系统、方法及介质 | |
CN115033350A (zh) | 一种分布式事务的执行方法及装置 | |
CN115714706A (zh) | 基于内嵌h5的访问加速系统、方法、存储介质及电子设备 | |
CN114827177A (zh) | 一种分布式文件系统的部署方法、装置及电子设备 | |
CN115269453A (zh) | 数据收发方法、处理器、电子设备和计算机系统 | |
CN113296821A (zh) | 提供容器服务的设备和方法以及该设备的热升级方法 | |
CN113805845A (zh) | 随机数序列生成方法和随机数引擎 | |
CN114531351A (zh) | 传输报文的方法、装置、设备及计算机可读存储介质 | |
CN111126604A (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 |