CN114064222A - 数据处理方法、装置、计算机设备及存储介质 - Google Patents
数据处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114064222A CN114064222A CN202010758517.2A CN202010758517A CN114064222A CN 114064222 A CN114064222 A CN 114064222A CN 202010758517 A CN202010758517 A CN 202010758517A CN 114064222 A CN114064222 A CN 114064222A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- processing
- caching
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims abstract description 492
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000015654 memory Effects 0.000 claims description 51
- 230000008569 process Effects 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 10
- 230000000903 blocking effect Effects 0.000 description 25
- 238000005457 optimization Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000004891 communication 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
- 238000005516 engineering process Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种数据处理方法、装置、计算机设备及存储介质,其中,该方法包括:基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。本公开实施例通过对不同的数据块的级别区确定对应的数据缓存方式,从而能针对性的对不同的数据块进行缓存,能够根据实际的数据访问情况,来实现数据的缓存,提升数据的读取效率,提升数据处理的效率。
Description
技术领域
本公开涉及数据处理技术领域,具体而言,涉及一种数据处理方法、装置、计算机设备及存储介质。
背景技术
随着深度学习和人工智能技术的发展,深度学习技术应用的领域也越来越广泛。其中,神经网络在图像处理、视频超分等应用中的效果明显,因此被广泛使用。神经网络中常用的算子是卷积操作,是一种计算密集型的算子。图形处理器(Graphics ProcessingUnit,GPU)对计算密集型的算子有天然的优势,针对大批次、特征数据规模大以及大输入输出通道的卷积运算,GPU可以得到很高的性能。
然而随着神经网络的发展,神经网络的种类和算子变得越来越多,比如输入输出通道很小的神经网络,或者下采样层等的出现导致神经网络的特征数据规模变得很小等等。针对这些算子,GPU的数据处理效率较低。
发明内容
本公开实施例至少提供一种数据处理方案。
第一方面,本公开实施例提供了一种数据处理方法,包括:基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。
这样,基于数据处理操作的至少一个处理块的信息,从多个预设级别中为第处理块中包括的第一处理块对应的第一数据块确定级别,然后基于第一数据块的级别,确定第一数据块的数据缓存方式,从而针对性的对不同的数据块进行缓存,能够根据实际的数据访问情况,来实现数据的缓存,有利于提升数据的读取效率,提升数据处理的效率。
一种可能的实施方式中,所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或,在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或,在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
这样,通过设置不同的等级,并为不同等级确定不同的数据缓存方式,能够实现针对不同数据进行分类缓存,提升缓存数据的利用率。
一种可能的实施方式中,所述从多个预设级别中确定第一处理块对应的第一数据块的级别,包括:基于所述至少一个处理块的信息,确定所述第一数据块的共享程度信息;基于所述第一数据块的共享程度信息、所述共享程度信息与多个所述预设级别的对应关系,确定所述第一数据块的级别。
这样,可以通过上述共享程度信息,来为第一数据块确定等级,进而能够将共享程度高的数据尽量缓存至多个SM中的线程均能访问的缓存;而降共享程度低的数据尽量缓存至只有少量SM能够访问的缓存,从而提升了缓存中所存储数据的访问率,提升数据处理过程中数据的读取效率。
一种可能的实施方式中,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
一种可能的实施方式中,所述至少一个处理块的信息包括:所述至少一个处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
这样,可以通过上述起始存储地址和偏移量,准确确定第一处理块所对应的数据。
一种可能的实施方式中,所述数据处理方法由中央处理器CPU执行,所述方法还包括:将所述第一处理块对应的任务处理指令发送至图形处理器GPU,所述任务处理指令指示所述第一数据块的数据缓存方式。
一种可能的实施方式中,所述数据处理方法由图形处理器GPU执行,所述方法还包括:在执行与所述第一处理块对应的数据处理任务的过程中,按照所述第一数据块对应的数据缓存方式缓存读取所述第一数据块。
一种可能的实施方式中,还包括:将所述第一处理块对应的数据处理划分为多个子任务,每个子任务由一个线程执行;基于所述多个子任务之间的数据依赖关系,确定每个线程对应的数据的存储位置;其中,第一线程对应的数据的存储位置包括:与所述第一线程具有数据依赖关系的至少一个第二线程的寄存器。
这样,每个线程将计算的中间数据,或者部分输入数据存储至对应的寄存器中,具有数据依赖关系的其他线程能够直接通过访问寄存器获取这部分数据,进而加快了数据的存取速度,提升数据处理任务的效率。
一种可能的实施方式中,所述第一线程对应的数据,包括:所述第一处理块对应的第一数据块的一部分;和/或,所述第二线程的第二中间数据,所述第二中间数据用于得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一处理块由多个线程执行,所述方法还包括:读取所述多个线程中第三线程对应的子数据块中的一部分数据,对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一处理块由多个线程执行,所述方法还包括:对于所述多个线程中的第一线程,从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述方法还包括:基于所述数据处理操作的配置信息,从多种预设分块策略中确定所述数据处理操作的目标分块策略;基于所述目标分块策略,对所述任务处理操作进行分块处理,得到所述至少一个处理块中每个处理块的信息。
这样,可以更合理的将数据处理操作划分为多个处理块,以达到提升数据处理操作效率的目的。
一种可能的实施方式中,所述至少一个处理块是对所述数据处理操作的结果数据、输入数据和参数数据中的至少一种进行分块处理得到的。
第二方面,本公开实施例还提供另一种数据处理方法,应用于图形处理器GPU,所述数据处理方法包括:读取第一处理块对应的第一数据块,其中,所述第一处理块包含于数据处理操作的至少一个处理块中;以目标数据缓存方式缓存所述第一数据块,其中,所述目标数据缓存方式是基于所述第一数据块的级别确定的;对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果。
一种可能的实施方式中,所述对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果,包括:对于所述多个线程中的第一线程,从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果,包括:读取多个线程中第三线程对应的子数据块中的一部分数据,对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一数据块的级别是基于数据处理操作的至少一个处理块的信息得到的;其中,所述处理块的信息包括:所述处理块对应的数据块的信息。
一种可能的实施方式中,所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或,在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或,在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
一种可能的实施方式中,所述处理块对应的数据块的信息包括:所述至少一个处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
一种可能的实施方式中,所述第一数据块对应的级别,是基于至少一个处理块的信息确定第一数据块的共享程度信息,并基于第一数据块的共享程度信息、所述共享程度信息与多个预设级别对应关系确定的。
一种可能的实施方式中,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
第三方面,本公开实施例还提供一种数据处理装置,包括:第一确定模块,用于基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;第二确定模块,用于基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。
一种可能的实施方式中,所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或,在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或,在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
一种可能的实施方式中,所述第一确定模块,在从多个预设级别中确定第一处理块对应的第一数据块的级别时,用于:基于所述至少一个处理块的信息,确定所述第一数据块的共享程度信息;基于所述第一数据块的共享程度信息、所述共享程度信息与多个所述预设级别的对应关系,确定所述第一数据块的级别。
一种可能的实施方式中,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
一种可能的实施方式中,所述至少一个处理块的信息包括:所述至少一个处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
一种可能的实施方式中,所述数据处理装置部署在中央处理器CPU内时,所述数据处理装置还包括:发送模块,用于将所述第一处理块对应的任务处理指令发送至图形处理器GPU,所述任务处理指令指示所述第一数据块的数据缓存方式。
一种可能的实施方式中,所述数据处理装置部署在图形处理器GPU内时,所述数据处理装置还包括:第一处理模块,用于在执行与所述第一处理块对应的数据处理任务的过程中,按照所述第一数据块对应的数据缓存方式缓存读取所述第一数据块。
一种可能的实施方式中,还包括第二处理模块,用于:将所述第一处理块对应的数据处理划分为多个子任务,每个子任务由一个线程执行;基于所述多个子任务之间的数据依赖关系,确定每个线程对应的数据的存储位置;其中,第一线程对应的数据的存储位置包括:与所述第一线程具有数据依赖关系的至少一个第二线程的寄存器。
一种可能的实施方式中,所述第一线程对应的数据,包括:所述第一处理块对应的第一数据块的一部分;和/或,所述第二线程的第二中间数据,所述第二中间数据用于得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一处理块由多个线程执行,所述数据处理装置还包括:第三处理模块,用于:读取所述多个线程中第三线程对应的子数据块中的一部分数据,对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一处理块由多个线程执行,所述数据处理装置还包括:第四处理模块,用于:对于所述多个线程中的第一线程,从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述数据处理装置还包括:第五处理模块58,用于:基于所述数据处理操作的配置信息,从多种预设分块策略中确定所述数据处理操作的目标分块策略;基于所述目标分块策略,对所述任务处理操作进行分块处理,得到所述至少一个处理块中每个处理块的信息。
一种可能的实施方式中,所述至少一个处理块是对所述数据处理操作的结果数据、输入数据和参数数据中的至少一种进行分块处理得到的。
第四方面,本公开实施例还提供一种数据处理装置,应用于图形处理器GPU,该数据处理模块包括:读取模块,读取第一处理块对应的第一数据块,其中,所述第一处理块包含于数据处理操作的至少一个处理块中;缓存模块,用于以目标数据缓存方式缓存所述第一数据块,其中,所述目标数据缓存方式是基于所述第一数据块的级别确定的;处理模块,用于对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果。
一种可能的实施方式中,所述处理模块,在对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果时,用于:对于所述多个线程中的第一线程,从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述处理模块,在对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果时,用于:读取多个线程中第三线程对应的子数据块中的一部分数据,对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,
将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一数据块的级别是基于数据处理操作的至少一个处理块的信息得到的;其中,所述处理块的信息包括:所述处理块对应的数据块的信息。
一种可能的实施方式中,所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或,在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或,在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
一种可能的实施方式中,所述处理块对应的数据块的信息包括:所述至少一个处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
一种可能的实施方式中,所述第一数据块对应的级别,是基于至少一个处理块的信息确定第一数据块的共享程度信息,并基于第一数据块的共享程度信息、所述共享程度信息与多个预设级别对应关系确定的。
一种可能的实施方式中,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
第五方面,本公开可选实现方式还提供一种电子设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤;
或执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。
第六方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤;
或执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。
关于上述数据处理装置、计算机设备、及计算机可读存储介质的效果描述参见上述数据处理方法的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了相关技术中的在进行数据处理时的***框架的示意图;
图2示出了本公开实施例所提供的一种数据处理方法的流程图;
图3示出了本公开实施例所提供的一种从多个预设级别中确定第一处理块对应的第一数据块的级别的具体方法的流程图;
图4示出了本公开实施例所提供的另一种数据处理方法的流程图;
图5示出了本公开实施例所提供的另一种数据处理方法的流程图;
图6示出了本公开实施例所提供的一种数据处理的优化方案的确定方式的示意图;
图7示出了本公开实施例所提供的一种数据处理装置的示意图;
图8示出了本公开实施例所提供的另一种数据处理装置的示意图;
图9示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
在图1所示的示例性的***框架中,在对计算密集型的算子执行数据处理时,会将计算任务划分为多个任务处理块,并将不同任务处理块分配给GPU中的多个流式多处理器(Streaming Multi processor,SM),每个SM内包括至少一个线程块;每个线程块能够运行多个处理线程,多个处理线程能够对分配至SM的任务处理块对应的计算任务进行数据处理,从而加快数据处理的速度。随着神经网络的数据共享程度的降低,神经网络的计算逐渐由计算密集型向访存密集型转化,导致SM内的各个线程需要频繁访问存储器,以得到在数据处理过程所需要的数据。
在该***架构中,包括全局内存Global Memory,所有SM共享的L2缓存(cache)、SM内部的L1-cache、SM内部线程可以读取的共享内存、以及每个线程私有的寄存器。通常的数据读取过程中,SM首先从全局内存读取数据,经过L2-cache到达SM内部的L1-cache,写入SM内部的寄存器或者共享内存。在以上数据读取过程中,读取的数据会被依次缓存在L2-cache、L1-cache以及SM的共享内存中;但是实际上,数据处理时需要的数据量远远大于L2-cache、以及L1-cache的容量,在L2-cache以及L1-cache存储的数据到达存储上限后,GPU会根据一定的缓存管理策略将之前缓存的数据释放,并缓存最近被访问的数据;被释放的数据再次被访问的时候,依然需要从Global Memory中进行读取,导致了数据读取的效率降低,进而影响数据处理的效率。
本公开提供了一种数据处理方法,通过将数据处理操作的各个处理块对应的数据块分为不同的级别,然后根据不同数据块的级别,为每个数据块确定数据缓存方式,从而针对性的对不同的数据块进行缓存,从而能够根据实际的数据访问情况,来实现数据的缓存,有利于提升数据的读取效率,提升数据处理的效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据处理方法进行详细介绍,本公开实施例所提供的数据处理方法的执行主体一般为包含一个或多个处理器的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。
在一些可能的实现方式中,该数据处理方法可以通过中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)或其他类型的处理器调用存储器中存储的计算机可读指令的方式来实现。
下面对本公开实施例提供的数据处理方法加以说明。
参见图2所示,为本公开实施例提供的数据处理方法的流程图,所述方法包括步骤S201~S202,其中:
S201:基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;
S202:基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。
本公开实施例基于数据处理操作的至少一个处理块的信息,从多个预设级别中为第处理块中包括的第一处理块对应的第一数据块确定级别,然后基于第一数据块的级别,确定第一数据块的数据缓存方式,从而针对性的对不同的数据块进行缓存,能够根据实际的数据访问情况,来实现数据的缓存,提升数据的读取效率,提升数据处理的效率。
在具体实施中,本公开实施例中的数据处理操作例如为对数据进行卷积、池化等操作。以对数据执行卷积操作为例,对数据执行卷积操作时,所需要的数据包括:输入数据(如特征图)、以及对输入数据执行卷积操作所需要的卷积参数(如卷积核、卷积步长)等。为了加快卷积操作的效率,可以将卷积操作分为多个处理块;每个处理块对应的数据块包括至少部分的卷积参数、以及部分输入数据;每个处理块对应的数据处理任务,利用至少部分的卷积参数对部分输入数据的进行卷积操作;结合所有处理块对应的卷积操作结果,能够得到对输入数据进行卷积操作的最终结果。
在一种实施方式中,所述至少一个处理块是对所述数据处理操作的结果数据、输入数据和参数数据中的至少一种进行分块处理得到的。
示例性的,可以采用下述方式对卷积操作进行分块:根据卷积处理的配置信息,确定处理块的数量,并根据处理块的数量,为每个处理块确定处理块的信息。
在具体实施中,卷积处理的配置信息例如包括:卷积计算对应的输入数据的批(batch)、输入通道的数量、输出数据的尺寸、输出通道的数量K、卷积核的尺寸、卷积步长等。
在基于卷积处理的配置信息进对卷积操作进行分块时,例如可以基于卷积处理的配置信息中的至少一种进行分块,形成至少一个处理块。
示例性的,例如可以在基于输出数据的尺寸、以及输出通道的数量进行分块的情况下,假设输出数据的尺寸为:H×W,输出通道的数量为N,则按照输出数据的尺寸H×W,进行第一次分块,每个处理块对应的数据后,所对应的输出数据的尺寸为H’×W’,按照输出通达的数量进行分块,每个处理块对应的输出数据的通道为N’,则所形成的数据块的数量为
在另一种可能的实施方式中,为了能够确定处理块的分块方式、以及分块数,例如可以基于所述数据处理操作的配置信息,从多种预设分块策略中确定所述数据处理操作的目标分块策略;然后,基于所述目标分块策略,对所述任务处理操作进行分块处理,得到所述至少一个处理块中每个处理块的信息。
在具体实施中,所述多种分块策略中的不同分块策略是基于不同的参考配置信息生成的。
示例性的,由于卷积处理的输入数据和卷积处理的输出数据之间存在一定的位置映射关系,且卷积处理的输入数据和卷积处理的卷积核之间存在一定的计算映射关系;在基于所述目标分块策略,确定处理块对应的分块数量后,能够基于上述位置映射关系、计算映射关系以及处理块的数量,为各个处理块确定数据块。
此处,例如可以针对每种参考配置信息,确定与每种参考配置信息对应的多种备选分块策略;然后针对每种备选分块策略进行仿真,确定每种备选分块策略对应的处理时间,然后根据处理时间的长短,从多种备选分块策略中,为每种参考配置信息确定一种分块策略。
在基于配置信息,从预先确定的多种分块策略中,确定目标分块策略时,例如可以将多个参考配置信息、和配置信息分别作为向量,然后确定多个所述参考配置信息中的每个参考配置信息与配置信息之间的向量相似度;基于多个参考配置信息中的每个参考配置信息与所述数据处理的配置信息之间的相似度或距离,从多个所述参考配置信息中确定目标参考配置信息;将所述目标参考配置信息对应的分块策略,确定为所述目标分块策略。然后基于目标分块策略,确定处理块的数量,以及与每个处理块对应的数据块。
在一种可能的实施方式中,由于不同处理块对应的数据块在处理时会被首先存储在Global Memory中;当处理块对应的数据处理任务被执行时,与该处理块对应的数据块才会被读取到具体的数据处理任务执行主体,因此可以通过数据块的存储地址来表征不同的处理块的信息。示例性的,任一个处理块的信息,包括:处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
在确定了多个处理块,以及每个处理块的信息后,就能够基于多个处理块的信息,为多个处理块中的第一处理块确定对应的第一数据块的级别。
其中,多个处理块中包括第一处理块。
在一种可能的实施方式中,在多个预设级别中,第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多。
例如对于第一数据块A和第一数据块B,若第一数据块A的级别高于第一数据块B的级别,则在L1-cache、L2-cache中缓存第一数据块A,而仅在L1-cache中缓存第一数据块B。
在一种可能的实施方式中,在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中。
例如对于第一数据缓存方式s1和第二数据缓存方式s2中,第一数据缓存方式s1对应的第一数据块缓存在L1-cache和L2-cache中,第二数据缓存方式s2对应的第一数据块缓存在L1-cache内的共享缓存中。
在一种可能的实施方式中,在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层。
例如,对于第三数据缓存方式s3和第四数据缓存方式s4中,第三数据缓存方式s3对应的第一数据块缓存在L1-cache和L2-cache中,第四数据缓存方式s4对应的第一数据块不被缓存在L1-cache和L2-cache中。
在一种可能的实施方式中,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
例如,对于第五数据缓存方式s5和第六数据缓存方式s6中,第五数据缓存方式s5和第六数据缓存方式s6对应的第一数据块均缓存在L1-cache中,当L1-cache中存储的数据到达存储上限后,当有新的数据要缓存至L1-cache中时,优先将第五数据缓存方式s5对应的第一数据块替换。
在具体实施中,可以根据实际的数据访问情况,确定不同的分级。
示例性的:可以设置以下四个预设级别:级别一、级别二、级别三、级别四,其中,级别一对应的级别最高,然后级别逐渐降低。
级别一对应的数据缓存方式为:将数据块缓存至L1-cache和L2-cache。
级别二对应的数据缓存方式为:将数据块缓存至L1-cache和L2-cache,但该数据块可以被优先替换。
级别三对应的数据缓存方式为:将数据块缓存至除L1-Cache外的其他缓存。
级别四对应的数据缓存方式为:将数据块缓存至除L2-Cache外的其他缓存。
参见图3所示,本公开实施例提供一种从多个预设级别中确定第一处理块对应的第一数据块的级别的具体方法,包括:
S301:基于所述至少一个处理块的信息,确定所述第一数据块的共享程度信息。
此处,第一数据块的共享程度信息,例如包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
在确定第一数据块的共享程度信息时,例如可以根据处理块分别对应的数据块的地址偏移量,确定第一数据块中的数据会对应有多少个处理块,然后基于第一数据块中数据对应的处理块的数量,以及处理块的总数量,确定第一数据块的共享程度信息。
示例性的,第一数据块的访问频率越高,则意味着其会被更多的SM访问,因此,要优先缓存至所有SM都能够访问到的L2-cache中;第一数据块的访问频率越低,则意味着其会被更少的SM访问,因此,可以将其缓存在只有一个SM能够访问的L1-cache中。
进一步地,SM在基于与SM对应的数据块,执行与处理块对应的数据处理任务时,例如可以将对应的数据处理任务分为多个子任务,然后利用SM内的线程执行对应的子任务;共享程度信息还可以包括:需要访问数据块中相同数据的线程,占在SM内所有线程中所占的第二比例。
示例性的,该第二比例越高,则数据块会被更多的线程访问,因此可以缓存至L1-cache;该第二比例越低,则数据块中的数据,会被较少的线程访问,因此可以不被缓存至L1-cache;在该种情况下,若多个SM内的线程都需要访问该数据块中的数据,则可以将该数据块缓存至L2-cache;以使得各个SM内的线程要访问该数据块中的数据时,可以直接从L2-cache读取;若仅有少数SM内的线程需要访问该数据块中的数据,则可以将该数据块缓存至SM内部的共享内存中,使得该数据块中的数据仅能够被SM内的线程访问,且不会占据L1-cache的存储空间。
S302:基于所述第一数据块的共享程度信息、所述共享程度信息与多个所述预设级别的对应关系,确定所述第一数据块的级别。
此处,例如可以预先确定共享程度信息和多个预设级别之间的对应关系。在确定了第一数据块的共享程度信息后,基于第一数据块的共享程度信息,从多个预设级别中确定对应的级别,并将确定的级别作为第一数据块的级别。
示例性的,假设卷积处理的输入数据的尺寸为:(M,K),每个处理块对应的数据块的尺寸为:(B_M,B_K),GPU中SM的数量为X。GPU执行该卷积处理时需要的处理块BLOCK的数量为M/B_M*K/B_K,假设数据中输入数据为(M0,M1,M2..),权值数据块为(K0,K1,K2..)。每个BLOCK的信息也是确定,定义数据块Mi的访问概率P(Mi)为访问Mi的BLOCK数量除以全部的BLOCK数量,Ki的访问频率P(Ki)为访问Ki的BLOCK数量除以全部的BLOCK数量,并且设置频率阈值PH和PL,访问频率大于阈值PH的数据块为级别一的数据块,访问频率低于阈值PL的数据块设置为级别二的数据。介于PH与PL之间的数据,可以进行模拟运行分析,利用分块配置和GPU中数量,可能被一个SM访问的两个BLOCK对应的数据块设置为级别三,余下的数据块也会被设置为级别二。对于卷积计算结果,只写回全局内存一次,设置为级别四的数据块。
在确定了第一处理块对应的第一数据块的级别后,就能够基于第一数据块的级别,为第一数据块确定数据缓存方式。
在本公开另一实施例中,在本公开实施例提供的数据处理方法由CPU执行的情况下,本公开实施例提供的数据处理方法还包括:
将所述第一处理块对应的任务处理指令发送至图形处理器GPU,所述任务处理指令指示所述第一数据块的数据缓存方式。
此处,第一处理块对应的任务处理指令,例如是基于第一数据块对应的数据缓存方式生成,能够指示第一数据块的数据缓存方式。任务处理指令能够被GPU执行,且任务处理指令被GPU执行的情况下,能够按照任务处理指令对应的数据缓存方式,缓存对应的数据块。
在本公开另一实施例中,在本公开实施例提供的数据处理方法由GPU执行的情况下,本公开实施例提供的数据处理方法还包括:
在执行与所述第一处理块对应的数据处理任务的过程中,按照所述第一数据块对应的数据缓存方式缓存读取所述第一数据块。
示例性的,以数据缓存方式为仅将第一数据块缓存至L2-cache为例,在SM_1在执行与第一数据块对应的数据处理任务时,首先访问SM_1中的L1-cache,若在L1-cache中未缓存该第一数据块,则访问L2-cache;若在L2-cache中也未缓存该第一数据块,则访问Global Memory;在从Global Memory读取第一数据块后,将第一数据块缓存至L2-cache,并基于读取的第一数据块,执行数据处理任务。在另一SM_2执行与相同数据块对应的数据处理任务时,既能够从L2-cache中读取到该第一数据块。
参见图4所示,本公开实施例还提供另一种数据处理方法,包括:
S401:将所述第一处理块对应的数据处理划分为多个子任务,每个子任务由一个线程执行;
S402:基于所述多个子任务之间的数据依赖关系,确定每个线程对应的数据的存储位置;
其中,第一线程对应的数据的存储位置包括:与所述第一线程具有数据依赖关系的至少一个第二线程的寄存器。
示例性的,在多个线程中,包括第一线。第一线程对应的数据包括:第一处理块对应的第一数据块的一部分,和/或,所述第二线程的第二中间数据,所述第二中间数据用于得到所述第一线程的结果数据中的一个数值。
在一种可能的实施方式中,本公开实施例还包括:
读取所述多个线程中第三线程对应的子数据块中的一部分数据,
对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,
将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
示例性的,SM在执行与第一处理块对应的数据处理任务时,会按照与第一数据块对应的级别所确定的数据缓存方式,读取缓存第一数据块,并将读取到的第一数据块存储至SM内部的共享内存中,供SM内部的各个线程进行访问。
在第一线程和第二线程具有数据依赖关系时,第一线程的第一子数据块、和第二线程的第二子数据块之间至少部分相同。在第二线程执行对应第二子任务时,会从SM内部的共享存储中(和/或与其具有数据依赖关系的其他线程对应的寄存器中),读取第二子数据块,基于第二子数据块执行子任务,并将第二子数据块中和第一子数据块中相同部分的数据,存储至第二子数据块的寄存器中。
第一线程在执行与其对应的第一子任务时,对于与第二数据块中相同部分的数据,可以直接利用shuffle从第二线程对应的寄存器中读取。而对于不同的部分,可以从SM内部的共享存储中读取。
由于在子线程对应的寄存器中读取数据的速度,交至从内存中读取数据的速度更快,进而,通过从具有数据依赖关系的其他线程对应的寄存器中去读数据具有更高的数据读取效率,加快了数据处理任务的执行速度。
例如,第一处理块对应的第一数据块中包括的输入数据为:
第一处理块对应的数据处理任务为:利用3×3的卷积核,按照步长1对其进行卷积处理。
在另一种可能的实施方式中,还包括:对于所述多个线程中的第一线程,
从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
示例性的,第二线程用于从SM中读取第二数据块,并基于第二数据块执行计算任务,得到第二线程输出的第二中间数据,然后将第二中间数据存储至与第二线程对应的寄存器中。
第一线程从第二线程对应的寄存器中,读取第二中间数据,并基于第二中间数据得到第一线程的结果数据中的一个数值。
示例性的,第一处理块对应的第一数据块中包括的输入数据为:
第一处理块对应的数据处理任务为:利用3×3的卷积核,按照步长1对其进行卷积处理。
线程L1与上述L2和L3具有数据依赖关系,也即L1从L2对应的寄存器中读取P42,从L3对应的寄存器中读取P53。
然后执行计算:P31+P42+P53,所得结果即为线程L1的结果数据中的一个数值。
需要注意的是,由于该示例仅为一个简单的示例,因此,每个线程对应的结果数据中也仅有一个数值,在每个线程对应的数据量更多时,所得到的结果数据中的数值也就更多。
通过上述过程,每个线程将计算的中间数据,或者部分输入数据存储至对应的寄存器中,具有数据依赖关系的其他线程能够直接通过访问寄存器获取这部分数据,进而加快了数据的存取速度,提升数据处理任务的效率。
参见图5所示,本公开实施例还提供一种数据处理方法,应用于图形处理器GPU,其中,该方法中与前面相同或相似的内容将不再赘述,所述数据处理方法包括:
S501:读取第一处理块对应的第一数据块,其中,所述第一处理块包含于数据处理操作的至少一个处理块中;
S502:以目标数据缓存方式缓存所述第一数据块,其中,所述目标数据缓存方式是基于所述第一数据块的级别确定的;
S503:对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果。
本公开实施例在读取第一处理块对应的第一数据块后,会将第一数据块按照与第一数据块对应的目标数据缓存方式进行缓存,并对缓存的第一数据库啊进行第一处理块对应的数据处理,得到第一数据块的处理结果,由于第一数据块对应的目标数据缓存方式是基于第一数据块的级别确定的,从而能够针对性的对不同的数据块进行缓存,从而能够根据实际的数据访问情况,来实现数据的缓存,提升数据的读取效率,提升数据处理的效率。
一种可能的实施方式中,所述对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果,包括:
对于所述多个线程中的第一线程,
从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果,包括:
读取多个线程中第三线程对应的子数据块中的一部分数据,
对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,
将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一数据块的级别是基于数据处理操作的至少一个处理块的信息得到的;其中,所述处理块的信息包括:所述处理块对应的数据块的信息。
一种可能的实施方式中,所述处理块对应的数据块的信息包括:
所述至少一个处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
一种可能的实施方式中,所述第一数据块对应的级别,是基于至少一个处理块的信息确定第一数据块的共享程度信息,并基于第一数据块的共享程度信息、所述共享程度信息与多个预设级别对应关系确定的。
一种可能的实施方式中,所述述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
上述步骤的具体实施过程,具体可参见图1对应的实施例,在此不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
参见图6所示,本公开实施例还提供一种数据处理的优化方案的确定方式,在该方式中,可以分为四部分的优化过程:
优化过程一,分块优化引擎,对神经网络的中至少一个网络层的数据处理任务进行分块,得到多个处理块,其针对给定的网络层的配置信息,将网络层的配置信息以及GPU的配置信息作为输入,得到优化的分块配置,并且输出各个处理块对应的分块信息。该过程快速优化数据处理任务的分块方式。
优化过程二,缓存优化引擎,根据分块信息、GPU的配置信息、以及网络层的配置信息,对数据处理任务对应的权值数据和特征数据进行分级,并且针对不同级别的数据采用不同的指令进行访问和缓存,结合存储器的地址,生成最优的数据访存方式。该过程能够实现对不规则卷积数据进行分级,且基于不同数据的分级,针对性的缓存优化策略,不同数据使用不同的缓存访问机制。
优化过程三,核心计算引擎,确定数据在线程之间共享的方式以及粒度,产生对应的核心计算方式,该核心计算方式指示了各个线程执行数据处理任务时,通过寄存器共享中间数据,各个线程读取其他线程的中间数据,完成数据处理任务。该过程能够通过线程间传递中间数据来提升数据获取效率。
优化过程四:根据分块优化引擎得到的分块信息,进行GPU的SM的分配,根据缓存优化引擎得到的数据的优先级顺序,得到数据读取和写入的方式,根据核心计算引擎确定的数据共享方式及粒度,产生数据处理的核心计算代码,得到最终的数据处理优化方案。
通过上述方式,确定出数据处理的具体处理过程,该过程通过提升数据读取效率,提升数据处理的效率。
基于同一发明构思,本公开实施例中还提供了与数据处理方法对应的数据处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图7所示,为本公开实施例提供的一种数据处理装置的示意图,所述装置包括:
第一确定模块71,用于基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;
第二确定模块72,用于基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。
一种可能的实施方式中,所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或
在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或
在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;
和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
一种可能的实施方式中,所述第一确定模块71,在从多个预设级别中确定第一处理块对应的第一数据块的级别时,用于:
基于所述至少一个处理块的信息,确定所述第一数据块的共享程度信息;
基于所述第一数据块的共享程度信息、所述共享程度信息与多个所述预设级别的对应关系,确定所述第一数据块的级别。
一种可能的实施方式中,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
一种可能的实施方式中,所述至少一个处理块的信息包括:
所述至少一个处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
一种可能的实施方式中,所述数据处理装置部署在中央处理器CPU内时,所述数据处理装置还包括:
发送模块73,用于将所述第一处理块对应的任务处理指令发送至图形处理器GPU,所述任务处理指令指示所述第一数据块的数据缓存方式。
一种可能的实施方式中,所述数据处理装置部署在图形处理器GPU内时,所述数据处理装置还包括:
第一处理模块74,用于在执行与所述第一处理块对应的数据处理任务的过程中,按照所述第一数据块对应的数据缓存方式缓存读取所述第一数据块。
一种可能的实施方式中,还包括第二处理模块75,用于:
将所述第一处理块对应的数据处理划分为多个子任务,每个子任务由一个线程执行;
基于所述多个子任务之间的数据依赖关系,确定每个线程对应的数据的存储位置;
其中,第一线程对应的数据的存储位置包括:与所述第一线程具有数据依赖关系的至少一个第二线程的寄存器。
一种可能的实施方式中,所述第一线程对应的数据,包括:
所述第一处理块对应的第一数据块的一部分;和/或,
所述第二线程的第二中间数据,所述第二中间数据用于得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一处理块由多个线程执行,所述数据处理装置还包括:第三处理模块76,用于:
读取所述多个线程中第三线程对应的子数据块中的一部分数据,
对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,
将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一处理块由多个线程执行,所述数据处理装置还包括:第四处理模块77,用于:
对于所述多个线程中的第一线程,
从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述数据处理装置还包括:第五处理模块78,用于:
基于所述数据处理操作的配置信息,从多种预设分块策略中确定所述数据处理操作的目标分块策略;
基于所述目标分块策略,对所述任务处理操作进行分块处理,得到所述至少一个处理块中每个处理块的信息。
一种可能的实施方式中,所述至少一个处理块是对所述数据处理操作的结果数据、输入数据和参数数据中的至少一种进行分块处理得到的。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
参见图8所示,本公开实施例还提供另外一种数据处理装置,应用于图形处理器GPU中,该数据处理装置包括:
读取模块81,读取第一处理块对应的第一数据块,其中,所述第一处理块包含于数据处理操作的至少一个处理块中;
缓存模块82,用于以目标数据缓存方式缓存所述第一数据块,其中,所述目标数据缓存方式是基于所述第一数据块的级别确定的;
处理模块83,用于对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果。
一种可能的实施方式中,所述处理模块83,在对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果时,用于:
对于所述多个线程中的第一线程,
从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
一种可能的实施方式中,所述处理模块83,在对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果时,用于:
读取多个线程中第三线程对应的子数据块中的一部分数据,
对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,
将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
一种可能的实施方式中,所述第一数据块的级别是基于数据处理操作的至少一个处理块的信息得到的;其中,所述处理块的信息包括:所述处理块对应的数据块的信息。
一种可能的实施方式中,所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或
在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或
在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;
和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
一种可能的实施方式中,所述处理块对应的数据块的信息包括:
所述至少一个处理块对应的所有数据块的起始存储地址、以及每个处理块的数据块的存储地址相对于所述起始存储地址的偏移量。
一种可能的实施方式中,所述第一数据块对应的级别,是基于至少一个处理块的信息确定第一数据块的共享程度信息,并基于第一数据块的共享程度信息、所述共享程度信息与多个预设级别对应关系确定的。
一种可能的实施方式中,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
本公开实施例还提供了一种计算机设备,如图9所示,为本公开实施例提供的计算机设备结构示意图,包括:
处理器11和存储器12;所述存储器12存储有所述处理器11可执行的机器可读指令,当计算机设备运行时,所述机器可读指令被所述处理器执行以实现下述步骤:
基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;
基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。
或者,所述机器可读指令被所述处理器执行以实现下述步骤:
读取第一处理块对应的第一数据块,其中,所述第一处理块包含于数据处理操作的至少一个处理块中;
以目标数据缓存方式缓存所述第一数据块,其中,所述目标数据缓存方式是基于所述第一数据块的级别确定的;
对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果。
上述指令的具体执行过程可以参考本公开实施例中所述的数据处理方法的步骤,此处不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的数据处理方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (19)
1.一种数据处理方法,其特征在于,包括:
基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;
基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。
2.根据权利要求1所述的数据处理方法,其特征在于,
所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或,
在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或,
在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;
和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
3.根据权利要求1或2所述的数据处理方法,其特征在于,所述从多个预设级别中确定第一处理块对应的第一数据块的级别,包括:
基于所述至少一个处理块的信息,确定所述第一数据块的共享程度信息;
基于所述第一数据块的共享程度信息、所述共享程度信息与多个所述预设级别的对应关系,确定所述第一数据块的级别。
4.根据权利要求3所述的数据处理方法,其特征在于,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
5.根据权利要求1-4任一项所述的数据处理方法,其特征在于,所述数据处理方法由中央处理器CPU执行,所述方法还包括:将所述第一处理块对应的任务处理指令发送至图形处理器GPU,所述任务处理指令指示所述第一数据块的数据缓存方式;或者,
所述数据处理方法由图形处理器GPU执行,所述方法还包括:在执行与所述第一处理块对应的数据处理任务的过程中,按照所述第一数据块对应的数据缓存方式缓存读取所述第一数据块。
6.根据权利要求1-5任一项所述的数据处理方法,其特征在于,还包括:
将所述第一处理块对应的数据处理划分为多个子任务,每个子任务由一个线程执行;
基于所述多个子任务之间的数据依赖关系,确定每个线程对应的数据的存储位置;
其中,第一线程对应的数据的存储位置包括:与所述第一线程具有数据依赖关系的至少一个第二线程的寄存器。
7.根据权利要求1-6任一项所述的数据处理方法,其特征在于,所述第一处理块由多个线程执行,所述方法还包括:
读取所述多个线程中第三线程对应的子数据块中的一部分数据,
对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据,
将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
8.根据权利要求1-7中任一项所述的数据处理方法,其特征在于,所述第一处理块由多个线程执行,所述方法还包括:
对于所述多个线程中的第一线程,从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
9.一种数据处理方法,其特征在于,应用于图形处理器GPU,所述数据处理方法包括:
读取第一处理块对应的第一数据块,其中,所述第一处理块包含于数据处理操作的至少一个处理块中;
以目标数据缓存方式缓存所述第一数据块,其中,所述目标数据缓存方式是基于所述第一数据块的级别确定的;
对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果。
10.根据权利要求9所述的数据处理方法,其特征在于,所述对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果,包括:
对于所述多个线程中的第一线程,从至少一个第二线程的寄存器读取所述至少一个第二线程得到的第一中间数据;
基于读取到的所述第一中间数据,得到所述第一线程的结果数据中的一个数值。
11.根据权利要求9或10所述的数据处理方法,其特征在于,所述对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果,包括:
读取多个线程中第三线程对应的子数据块中的一部分数据;
对所述第三线程读取到的所述数据进行处理,得到至少一个第二中间数据;
将所述至少一个第二中间数据存储到所述第三线程的寄存器中,其中,所述至少一个第二中间数据用于确定所述第三线程的结果数据中的一个数值。
12.根据权利要求9-11任一项所述的数据处理方法,其特征在于,所述第一数据块的级别是基于数据处理操作的至少一个处理块的信息得到的;其中,所述处理块的信息包括:所述处理块对应的数据块的信息。
13.根据权利要求12所述的数据处理方法,其特征在于,所述第一数据块的级别越高,对应的数据缓存方式中用于缓存所述第一数据块的缓存数量越多;和/或,
在第一数据缓存方式和不同于所述第一数据缓存方式的第二数据缓存方式中,所述第一数据块缓存在至少部分不同的缓存层中;和/或,
在第三数据缓存方式中,所述第一数据块被缓存至第一特定缓存层,在不同于所述第三数据缓存方式的第四数据缓存方式中,所述第一数据块不被缓存至所述第一特定缓存层;
和/或,在第五数据缓存方式和不同于所述第五缓存方式的第六数据缓存方式中,所述第一数据块在相同的第二特定缓存层中的替换优先级不同。
14.根据权利要求9-13任一项所述的数据处理方法,其特征在于,所述第一数据块对应的级别,是基于至少一个处理块的信息确定第一数据块的共享程度信息,并基于第一数据块的共享程度信息、所述共享程度信息与多个预设级别对应关系确定的。
15.根据权利要求14所述的数据处理方法,其特征在于,所述第一数据块的共享程度信息,包括:所述第一数据块的访问频率,所述第一数据块的访问频率包括需要访问所述第一数据块的处理块的数量在所述至少一个处理块的总数量中所占的比例。
16.一种数据处理装置,其特征在于,包括:
第一确定模块,用于基于数据处理操作的至少一个处理块的信息,从多个预设级别中确定第一处理块对应的第一数据块的级别,其中,所述至少一个处理块包括所述第一处理块,所述处理块的信息包括所述处理块对应的数据块的信息;
第二确定模块,用于基于所述第一数据块的级别,确定所述第一数据块的数据缓存方式。
17.一种数据处理装置,其特征在于,应用于图形处理器GPU,该数据处理模块包括:
读取模块,读取第一处理块对应的第一数据块,其中,所述第一处理块包含于数据处理操作的至少一个处理块中;
缓存模块,用于以目标数据缓存方式缓存所述第一数据块,其中,所述目标数据缓存方式是基于所述第一数据块的级别确定的;
处理模块,用于对缓存的所述第一数据块进行所述第一处理块对应的数据处理,得到所述第一数据块的处理结果。
18.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至15任一项所述的数据处理方法的步骤。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被电子设备运行时,所述电子设备执行如权利要求1至15任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010758517.2A CN114064222A (zh) | 2020-07-31 | 2020-07-31 | 数据处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010758517.2A CN114064222A (zh) | 2020-07-31 | 2020-07-31 | 数据处理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064222A true CN114064222A (zh) | 2022-02-18 |
Family
ID=80227564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010758517.2A Pending CN114064222A (zh) | 2020-07-31 | 2020-07-31 | 数据处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064222A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115718653A (zh) * | 2022-11-24 | 2023-02-28 | 中国华能集团清洁能源技术研究院有限公司 | 用于仿真平台的数据调用优化方法及*** |
CN118093455A (zh) * | 2024-04-23 | 2024-05-28 | 北京壁仞科技开发有限公司 | 数据加载方法、数据加载装置、处理器和电子设备 |
-
2020
- 2020-07-31 CN CN202010758517.2A patent/CN114064222A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115718653A (zh) * | 2022-11-24 | 2023-02-28 | 中国华能集团清洁能源技术研究院有限公司 | 用于仿真平台的数据调用优化方法及*** |
CN115718653B (zh) * | 2022-11-24 | 2024-05-07 | 中国华能集团清洁能源技术研究院有限公司 | 用于仿真平台的数据调用优化方法及*** |
CN118093455A (zh) * | 2024-04-23 | 2024-05-28 | 北京壁仞科技开发有限公司 | 数据加载方法、数据加载装置、处理器和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107437110B (zh) | 卷积神经网络的分块卷积优化方法及装置 | |
Ihmsen et al. | A parallel SPH implementation on multi‐core CPUs | |
JP2022070955A (ja) | ニューラルネットワーク処理のスケジューリング | |
US8200594B1 (en) | System, method, and computer program product for accelerating a game artificial intelligence process | |
US8813091B2 (en) | Distribution data structures for locality-guided work stealing | |
US20210191765A1 (en) | Method for static scheduling of artificial neural networks for a processor | |
US20090183167A1 (en) | Two-Tiered Dynamic Load Balancing Using Sets of Distributed Thread Pools | |
EP3985509A1 (en) | Neural network segmentation method, prediction method, and related apparatus | |
US8966217B2 (en) | Lightweight random memory allocation | |
CN111984400A (zh) | 神经网络的内存分配方法及装置 | |
KR102594657B1 (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN114064222A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN109242967B (zh) | 一种三维地形渲染方法及装置 | |
JP2023513608A (ja) | アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム | |
CN111523642B (zh) | 用于卷积运算的数据重用方法、运算方法及装置、芯片 | |
US20180089794A1 (en) | Resource Layout Randomization For GPU Execution | |
CN115081598B (zh) | 算子处理方法及装置、电子设备、计算机可读存储介质 | |
US20200117505A1 (en) | Memory processor-based multiprocessing architecture and operation method thereof | |
US11620724B2 (en) | Cache replacement policy for ray tracing | |
CN110688055A (zh) | 一种大图计算中数据访问方法及*** | |
KR20190138365A (ko) | 멀티 프로세서 시스템 및 그 구동 방법 | |
CN114064304A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN117370488A (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
CN111158907A (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 |