CN116303135A - 任务数据的装载方法、装置和计算机设备 - Google Patents
任务数据的装载方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN116303135A CN116303135A CN202310165914.2A CN202310165914A CN116303135A CN 116303135 A CN116303135 A CN 116303135A CN 202310165914 A CN202310165914 A CN 202310165914A CN 116303135 A CN116303135 A CN 116303135A
- Authority
- CN
- China
- Prior art keywords
- read
- buffer
- buffer area
- area
- memory
- 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.)
- Granted
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 54
- 239000000872 buffer Substances 0.000 claims abstract description 349
- 238000013507 mapping Methods 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000004590 computer program Methods 0.000 claims abstract description 26
- 230000009471 action Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 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
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请涉及一种任务数据的装载方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:当发起任务之后,对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件;将满足所述只读缓冲区条件的缓冲区确定为只读缓冲区;基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将所述只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;基于所述只读映射信息,将所述只读缓冲区中的任务数据装载至相匹配的只读存储空间。采用本方法能够提高任务数据的装载效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种任务数据的装载方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
OpenCL是一个为异构平台编写程序的框架,此异构平台可由中央处理器(CPU)、图形处理器(GPU)或其他类型的处理器组成。OpenCL由一门用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API(应用程序接口)组成。
以常见的CPU、GPU异构方式为例:一般来说,CPU端发起GPU端的OpenCL task(任务),从OpenCL的角度来说,编译器会使用更有效率的取数指令来完成对只读缓冲区(readonly Buffer)的数据装载(LOAD)功能,如果一块缓冲区(Buffer)未被常量(Constant)修饰、只读(read_only)限定符修饰,实际代码(Kernel)中对这块Buffer也没有STORE(写)动作,如果这样的Buffer仍被编译器映射到普通的Memory Buffer(内存缓冲)中,就等同于放弃了更有效率的取数指令的数据LOAD方案,进而影响程序运行性能。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高任务数据装载效率的任务数据的装载方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种任务数据的装载方法,所述方法包括:
当发起任务之后,对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件;
将满足所述只读缓冲区条件的缓冲区确定为只读缓冲区;
基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将所述只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;
基于所述只读映射信息,将所述只读缓冲区中的任务数据装载至相匹配的只读存储空间。
在其中一个实施例中,所述方法还包括:
将不满足所述只读缓冲区条件的缓冲区确定为读写缓冲区或写缓冲区;
将所述读写缓冲区或写缓冲区映射到常规存储空间中,得到对应的常规映射信息;
根据所述常规映射信息,将所述读写缓冲区或写缓冲区中的任务数据装载至所述常规存储空间。
在其中一个实施例中,所述对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件,包括:
对所述任务中涉及到各类缓冲区的进行分析,确定各所述缓冲区是否携带只读属性信息;
若所述缓冲区携带所述只读属性信息,则确定所述缓冲区满足预设的只读缓冲区条件。
在其中一个实施例中,所述方法还包括:
若所述缓冲区不携带所述只读属性信息,则对中间语言进行扫描,确定所述缓冲区是否涉及到写回动作,所述中间语言为编译器根据所述任务的任务信息产生的中间表达语言;
若不涉及到所述写回动作,则仍确定所述缓冲区满足预设的只读缓冲区条件。
在其中一个实施例中,所述只读存储空间包括第一常量存储区、第二常量存储区以及采样器存储区;
所述基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将所述只读缓冲区映射到匹配的只读存储空间中,包括:
若基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,确定所述第一常量存储区的存储空间大于所述只读缓冲区的存储空间,则将所述只读缓冲区映射到第一常量存储区中;
若基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,确定所述第一常量存储区的存储空间小于所述只读缓冲区的存储空间,则将所述只读缓冲区映射到第二常量存储区中或采样器存储区中。
在其中一个实施例中,所述将所述只读缓冲区映射到第二常量存储区中或采样器存储区中,包括:
对所述第二常量存储区中、采样器存储区进行负载均衡处理,以将所述缓冲区映射到第二常量存储区中或采样器存储区中。
第二方面,本申请还提供了一种任务数据的装载装置,所述装置包括:
分析模块,用于当发起任务之后,对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件;
处理模块,用于将满足所述只读缓冲区条件的缓冲区确定为只读缓冲区;
映射模块,用于基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将所述只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;
装载模块,用于基于所述只读映射信息,将所述只读缓冲区中的任务数据装载至相匹配的只读存储空间。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任务数据的装载方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任务数据的装载方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任务数据的装载方法的步骤。
上述任务数据的装载方法、装置、计算机设备、存储介质和计算机程序产品,当发起任务之后,对任务中涉及到的各类缓冲区进行分析,确定各缓冲区是否满足预设的只读缓冲区条件;将满足只读缓冲区条件的缓冲区确定为只读缓冲区;基于只读存储空间的空间信息和只读缓冲区的尺寸信息,将只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;基于只读映射信息,将只读缓冲区中的任务数据装载至相匹配的只读存储空间。其中,在发起任务之后,确定出只读缓冲区,从而针对只读缓冲区,确定出与只读缓冲区匹配的只读存储空间,然后将任务数据装载至相匹配的只读存储空间,可以有效的低数据访问瓶颈,提高数据装载效率,从而从整体上提高程序运行性能。
附图说明
图1为一个实施例中任务数据的装载方法的应用环境图;
图2为一个实施例中任务数据的装载方法的流程示意图;
图3为另一个实施例中任务数据的装载方法的流程示意图;
图4为一个实施例中任务数据的装载方法的结构框图;
图5为一个实施例中任务数据的装载装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的任务数据的装载方法,可以应用于如图1所示的应用环境中。其中,图1所示的应用环境包括CPU(中央处理器)和GPU(图形处理器),CPU上运行有驱动程序以及编译器,编译器可以为OpenCL(异构平台编写程序的框架)编译器,具体的,驱动程序接受并发起编译任务,编译器接受驱动发送的编译任务,并根据本申请中的任务数据的装载方法作出优化决策,并将优化决策反馈给驱动程序,驱动程序在收到编译器给出的优化决策后,对送往GPU的任务数据做高效装载。
在一个实施例中,当CPU发起任务之后,CPU中的编译器可以对任务中涉及到的各类缓冲区进行分析,确定各缓冲区是否满足预设的只读缓冲区条件;将满足只读缓冲区条件的缓冲区确定为只读缓冲区;基于只读存储空间的空间信息和只读缓冲区的尺寸信息,将只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;CPU中的驱动可以基于只读映射信息,将只读缓冲区中的任务数据装载至相匹配的只读存储空间。
在一个实施例中,如图2所示,提供了一种任务数据的装载方法,以该方法应用于图1中的CPU为例进行说明,其中,CPU可以是部署在计算机设备中的,包括以下步骤:
步骤S202,当发起任务之后,对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件。
其中,任务可以是由CPU端发起给GPU端的OpenCL task(任务),OpenCL task中可以携带有存储数据的各类缓冲区,只读缓冲区条件可以为预先设定的用于判断缓冲区是否为只读缓冲区的条件,具体的,在设定只读缓冲区条件时,可以结合各类缓冲区的属性信息、各类缓冲区的执行动作等进行设定。
步骤S204,将满足只读缓冲区条件的缓冲区确定为只读缓冲区。
其中,只读缓冲区可以是某一个缓冲区的Memory(内存)操作只涉及读操作,而不涉及STORE(写)、ATOMIC(读和写)等写回动作。CPU的编译器若确定存在有缓冲区满足只读缓冲区条件,则可以确定该缓冲区为只读缓冲区。
步骤S206,基于只读存储空间的空间信息和只读缓冲区的尺寸信息,将只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息。
其中,只读存储空间可以是GPU中的存储区,只读存储空间的空间信息可以是表征只读存储空间的存储量的信息,只读缓冲区的尺寸信息可以是表征只读缓冲区的SIZE(大小)的信息,只读映射信息可以是表征只读缓冲区与只读存储空间的映射关系的信息,编译器可以结合空间信息和尺寸信息,确定出与只读缓冲区匹配的只读存储空间,并将只读缓冲区映射到匹配的只读存储空间中,以此建立只读缓冲区与只读存储空间的映射关系,得到只读映射信息。
步骤S208,基于只读映射信息,将只读缓冲区中的任务数据装载至相匹配的只读存储空间。
其中,当编译器确定出只读映射信息之后,可以将只读映射信息发送至驱动,驱动则可以基于只读映射信息,以及编译器在确定只读映射信息过程中确定出的与CPU发起的任务对应的高效取数指令,从只读缓冲区中取出任务数据到匹配的只读存储空间中去。
上述任务数据的装载方法中,当发起任务之后,对任务中涉及到的各类缓冲区进行分析,确定各缓冲区是否满足预设的只读缓冲区条件;将满足只读缓冲区条件的缓冲区确定为只读缓冲区;基于只读存储空间的空间信息和只读缓冲区的尺寸信息,将只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;基于只读映射信息,将只读缓冲区中的任务数据装载至相匹配的只读存储空间。其中,在发起任务之后,确定出只读缓冲区,从而针对只读缓冲区,确定出与只读缓冲区匹配的只读存储空间,然后将任务数据装载至相匹配的只读存储空间,可以有效的低数据访问瓶颈,提高数据装载效率,从而从整体上提高程序运行性能。
其中,由于任务中涉及到各类缓冲区,针对不为只读缓冲区的缓冲区,依然需要将该缓冲区中的任务装载至CPU中,因此,在其中一个实施例中,还包括:将不满足只读缓冲区条件的缓冲区确定为读写缓冲区或写缓冲区;将读写缓冲区或写缓冲区映射到常规存储空间中,得到对应的常规映射信息;根据常规映射信息,将读写缓冲区或写缓冲区中的任务数据装载至常规存储空间。
其中,读写缓冲区可以是某一个缓冲区不携带只读缓冲区的属性信息,且其Memory(内存)操作涉及到ATOMIC(读和写)操作,读写缓冲区也可以是其Memory(内存)操作既涉及到LOAD操作也涉及到STORE操作的缓冲区,写缓冲区可以是某一个缓冲区不携带只读缓冲区的属性信息,且其Memory(内存)操作涉及STORE(写)操作。
常规存储空间可以是GPU中针对读写缓冲区、写缓冲区所设定的存储空间,CPU中的驱动需要将读写缓冲区、写缓冲区中的任务数据装载至各常规存储区,常规映射信息可以是表征读写缓冲区、写缓冲区与常规存储空间的映射关系的信息,编译器可以将读写缓冲区或写缓冲区映射到常规存储空间中,以此建立读写缓冲区、写缓冲区与常规存储空间的映射关系,得到常规映射信息,驱动则可以基于常规映射信息以及编译器在确定常规映射信息时确定出的与任务对应的取数指令,从读写缓冲区或写缓冲区中取出任务数据到匹配的常规存储空间中。
上述实施例中,CPU针对缓冲区为读写缓冲区或写缓冲区的情况,会将读写缓冲区或写缓冲区中的任务数据装载至常规存储空间,由此在保证只读缓冲区的任务数据的装载效率的基础上,也会从整体上考虑,将读写缓冲区、写缓冲区的任务数据装载至常规存储区中。
在一个实施例中,对任务中涉及到的各类缓冲区进行分析,确定各缓冲区是否满足预设的只读缓冲区条件,包括:对任务中涉及到各类缓冲区的进行分析,确定各缓冲区是否携带只读属性信息;若缓冲区携带只读属性信息,则确定缓冲区满足预设的只读缓冲区条件。
其中,只读缓冲区条件可以为“是否携带只读属性信息,若携带,则满足只读缓冲区条件”,只读属性信息可以是只读缓冲区自带的只读属性,具体的,只读属性信息可以是OpenCL所提供的标准限定符确定的,不同类型的缓冲区,均可以对应有相应的标准限定符,如针对只读缓冲区,其标准限定符可以为“_read_only、read_only”等,若编译器确定存在有缓冲区携带有“_read_only、read_only”等标准限定符,则可以确定该缓冲区为只读缓冲区。
上述实施例中,编译器通过判断缓冲区是否携带有只读缓冲区自带的标准限定符,由于标准限定符是OpenCL所提供的,因此,编译器可以准确快速的判断出缓冲区是否为只读缓冲区。
在一个实施例中,还包括:若缓冲区不携带只读属性信息,则对中间语言进行扫描,确定缓冲区是否涉及到写回动作,中间语言为编译器根据任务的任务信息产生的中间表达语言;若不涉及到写回动作,则仍确定缓冲区满足预设的只读缓冲区条件。
其中,由于会存在某些缓冲区未被标准限定符限定的情况,则编译器可以对中间语言(Intermediate Language)分析,确定中间语言中的缓冲区是否涉及到写回动作(包括写操作(STORE)、读和写操作(ATOMIC)),如果某一缓冲区只有取数的动作而没有写回动作,则该缓冲区也可被判定为只读缓冲区,即仍满足只读缓冲区条件。
上述实施例中,编译器针对未被标准限定符限定的情况,会进一步分析中间语言,确定中间语言中是否存在写回动作,从而可以更为精准的对各类缓冲区进行分类,确定出只读缓冲区。
在一个实施例中,只读存储空间包括第一常量存储区、第二常量存储区以及采样器存储区;基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将只读缓冲区映射到匹配的只读存储空间中,包括:若基于只读存储空间的空间信息和只读缓冲区的尺寸信息,确定第一常量存储区的存储空间大于只读缓冲区的存储空间,则将只读缓冲区映射到第一常量存储区中;若基于只读存储空间的空间信息和只读缓冲区的尺寸信息,确定第一常量存储区的存储空间小于只读缓冲区的存储空间,则将只读缓冲区映射到第二常量存储区中或采样器存储区中。
其中,第一常量存储区可以是指ConstBuffer存储区,ConstBuffer存储区为可以被直接寻址的常量存储区,其可以通过ConstBuffer-Indexingd(常量存储索引)方式替代普通Memory的数据LOAD指令,第二常量存储区可以是ConstCache对应的存储空间,其可以通过CC_LOAD指令代替普通Memory的数据LOAD指令,采样器存储区可以是采样器所对应的存储空间,其可以通过采样器指令代替普通Memory的数据LOAD指令,由于普通Memory的数据LOAD指令的指令数目繁琐,通过替代的方式可以节省指令数目,在多维度上提高运行效率。
其中,编译器可以优先考虑将只读缓冲区优化至第一常量存储区中,但第一常量存储区的容量有限,因此,编译器在进行只读存储区的映射之前,会基于只读存储空间的空间信息和只读缓冲区的尺寸信息进行比较,确定出第一常量存储区的存储空间与只读缓冲区的存储空间的大小关系,如果根据大小关系,确定出第一常量存储区可以容纳当前的只读缓冲区,则可以优先将只读缓冲区映射至第一常量缓冲区,若第一常量存储区不能容纳当前的只读缓冲区,则编译器可以进一步从第二常量存储区中或采样器存储区中选取存储区。
在一个实施例中,第一常量存储区共有M Bytes(字节)的空间,包括需要预留出来的N Bytes,即共(M–N)Bytes的空间可供编译做readonly Buffer LOAD(只读缓冲区装载)优化,经分析,存在有只读缓冲区A以及只读缓冲区B,如果第一常量存储区的空间足以容纳只读缓冲区A和只读缓冲区B,则将可以将只读缓冲区A和只读缓冲区B都放入第一常量存储区,而如果是下面情况:A|B Buffer size<(M–N)Bytes<A&&B Buffer size,此时只能将只读缓冲区A和只读缓冲区B中的其中一块只读存储区映射到第一常量存储区中,则可以优先选其中只读缓冲区A和只读缓冲区B中size较大的一方映射至第一常量存储区,从而可以尽量多地将只读缓冲区映射到第一常量存储区中。
上述实施例中,编译器会优先考虑将只读缓冲区映射到存储效率最高的第一常量存储区,但当第一常量存储区空间不足以容纳某只读缓冲区时,编译器才会考虑第二常量存储区中或采样器存储区,由此在保证读取效率的基础上,避免超容量存储,出现错误。
在一个实施例中,将只读缓冲区映射到第二常量存储区中或采样器存储区中,包括:对第二常量存储区中、采样器存储区进行负载均衡处理,以将缓冲区映射到第二常量存储区中或采样器存储区中。
其中,编译器可以权衡当前的只读缓冲区是映射到第二常量存储区还是采样器存储区,编译器可以对所有未映射的只读缓冲区做全局权衡,在所有未映射的只读缓冲区的size合适的情况下,优先选择第二常量存储区,如果所有未映射的只读缓冲区的size过大,考虑cache miss(缓存缺失)率的问题,可以优先选择采样器存储区。进一步的,编译器还要考虑第二常量存储区、采样器存储区的负载均衡问题,如果待映射的只读缓冲区都可以映射到第二常量存储区,则也会将部分平衡至采样器存储区。
具体的,若存在三个只读缓冲区:只读缓冲区A、只读缓冲区B以及只读缓冲区C,其中只读缓冲区C的size比较小,则编译器可以将只读缓冲区C映射至第二常量存储区,若只读缓冲区A、只读缓冲区B的size都比较大,第二常量存储区不能容纳只读缓冲区A、只读缓冲区B,则可以考虑将只读缓冲区A或者只读缓冲区B中的任意一个映射到第二常量存储区,另外一个映射到采样器存储区。
上述实施例中,编译器针对所有未映射的只读缓冲区,在第二常量存储区和采样器存储区二者中做出平衡,最终选择使用第二常量存储区还是采样器存储区做LOAD优化,给出了负载平衡的优化方案。
在一个实施例中,如图3所示,为一个实施例中任务数据的装载方法的流程示意图:
其中,编译器可以针对任务中涉及到的任意一个缓冲区进行分析,判断缓冲区是否为只读缓冲区,具体的,如果缓冲区所对应的OpenCL kernel(待执行代码)参数携带只读属性信息,则可以直接判断为readonly Buffer只读缓冲区。由于会存在某些缓冲区未被标准限定符限定的情况,则编译器可以对中间语言(Intermediate Language)分析,确定中间语言中的缓冲区是否涉及到写回动作(包括写操作(STORE)、ATOMIC(读和写)操作),如果某一缓冲区只有取数的动作而没有写回动作,则该缓冲区也可被判定为只读缓冲区。
由于CB(第一常量存储区)效率最优,编译器可以优先考虑将只读缓冲区优化至第一常量存储区中,但第一常量存储区的容量有限,因此,编译器在进行只读存储区的映射之前,会基于只读存储空间的空间信息和只读缓冲区的尺寸信息进行比较,确定出第一常量存储区的存储空间与只读缓冲区的存储空间的大小关系,如果根据大小关系,确定出第一常量存储区可以容纳当前的只读缓冲区,则可以优先将只读缓冲区映射至第一常量缓冲区,若第一常量存储区不能容纳当前的只读缓冲区,则编译器可以进一步从CC(第二常量存储区)中或SMP(采样器存储区)中选取存储区。
进一步的,编译器在从CC(第二常量存储区)、SMP(采样器存储区)中选取存储区时,可以对所有未映射的只读缓冲区做全局权衡,在所有未映射的只读缓冲区的size合适的情况下,优先选择第二常量存储区,如果所有未映射的只读缓冲区的size过大,考虑cache miss(缓存缺失)率的问题,可以优先选择采样器存储区。进一步的,编译器还要考虑第二常量存储区、采样器存储区的负载均衡问题,如果待映射的只读缓冲区都可以映射到第二常量存储区,则也会将部分平衡至采样器存储区。
在一个实施例中,如图4所示,为一个实施例中任务数据的装载方法的结构框图:
其中,图4中共包括CC、CB、TU(SMP)以及L2(二级缓存)等存储区,其中,CB存储区为常量存储区,其可以通过ConstBuffer-Indexingd(常量存储索引)方式替代普通Memory的数据LOAD指令,CC存储区可以通过CC_LOAD指令代替普通Memory的数据LOAD指令,TU存储区可以通过采样器指令代替普通Memory的数据LOAD指令,由于普通Memory的数据LOAD指令的指令数目繁琐,通过替代的方式可以节省指令数目,在多维度上提高运行效率。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的任务数据的装载方法的任务数据的装载装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个任务数据的装载装置实施例中的具体限定可以参见上文中对于任务数据的装载方法的限定,在此不再赘述。
在一个实施例中,如图5所示,提供了一种任务数据的装载装置500,包括:分析模块、处理模块、映射模块和装载模块,其中:
分析模块502,用于当发起任务之后,对任务中涉及到的各类缓冲区进行分析,确定各缓冲区是否满足预设的只读缓冲区条件。
处理模块504,用于将满足只读缓冲区条件的缓冲区确定为只读缓冲区。
映射模块506,用于基于只读存储空间的空间信息和只读缓冲区的尺寸信息,将只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息。
装载模块508,用于基于只读映射信息,将只读缓冲区中的任务数据装载至相匹配的只读存储空间。
在一个实施例中,装置还包括其他缓冲区处理模块;
所述其他缓冲区处理模块,用于将不满足只读缓冲区条件的缓冲区确定为读写缓冲区或写缓冲区;将读写缓冲区或写缓冲区映射到常规存储空间中,得到对应的常规映射信息;根据常规映射信息,将读写缓冲区或写缓冲区中的任务数据装载至常规存储空间。
在一个实施例中,分析模块,还用于对任务中涉及到各类缓冲区的进行分析,确定各缓冲区是否携带只读属性信息;若缓冲区携带所述只读属性信息,则确定缓冲区满足预设的只读缓冲区条件。
在一个实施例中,分析模块,还用于若缓冲区不携带所述只读属性信息,则对中间语言进行扫描,确定缓冲区是否涉及到写回动作,中间语言为编译器根据任务的任务信息产生的中间表达语言;若不涉及到写回动作,则仍确定缓冲区满足预设的只读缓冲区条件。
在一个实施例中,映射模块,还用于若基于只读存储空间的空间信息和只读缓冲区的尺寸信息,确定第一常量存储区的存储空间大于只读缓冲区的存储空间,则将只读缓冲区映射到第一常量存储区中;若基于只读存储空间的空间信息和只读缓冲区的尺寸信息,确定第一常量存储区的存储空间小于只读缓冲区的存储空间,则将只读缓冲区映射到第二常量存储区中或采样器存储区中,只读存储空间包括第一常量存储区、第二常量存储区以及采样器存储区。
在一个实施例中,映射模块,还用于对第二常量存储区中、采样器存储区进行负载均衡处理,以将缓冲区映射到第二常量存储区中或采样器存储区中。
上述任务数据的装载装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器或者终端,服务器或终端上可以包括有本申请中涉及到的CPU和GPU,以此完成任务数据的装载。其内部结构图可以如图6所示。该计算机设备包括CPU、GPU、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储任务数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务数据的装载方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述任务数据的装载方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任务数据的装载方法的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任务数据的装载方法的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种任务数据的装载方法,其特征在于,所述方法包括:
当发起任务之后,对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件;
将满足所述只读缓冲区条件的缓冲区确定为只读缓冲区;
基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将所述只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;
基于所述只读映射信息,将所述只读缓冲区中的任务数据装载至相匹配的只读存储空间。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将不满足所述只读缓冲区条件的缓冲区确定为读写缓冲区或写缓冲区;
将所述读写缓冲区或写缓冲区映射到常规存储空间中,得到对应的常规映射信息;
根据所述常规映射信息,将所述读写缓冲区或写缓冲区中的任务数据装载至所述常规存储空间。
3.根据权利要求1所述的方法,其特征在于,所述对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件,包括:
对所述任务中涉及到各类缓冲区的进行分析,确定各所述缓冲区是否携带只读属性信息;
若所述缓冲区携带所述只读属性信息,则确定所述缓冲区满足预设的只读缓冲区条件。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述缓冲区不携带所述只读属性信息,则对中间语言进行扫描,确定所述缓冲区是否涉及到写回动作,所述中间语言为编译器根据所述任务的任务信息产生的中间表达语言;
若不涉及到所述写回动作,则仍确定所述缓冲区满足预设的只读缓冲区条件。
5.根据权利要求1所述的方法,其特征在于,所述只读存储空间包括第一常量存储区、第二常量存储区以及采样器存储区;
所述基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将所述只读缓冲区映射到匹配的只读存储空间中,包括:
若基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,确定所述第一常量存储区的存储空间大于所述只读缓冲区的存储空间,则将所述只读缓冲区映射到第一常量存储区中;
若基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,确定所述第一常量存储区的存储空间小于所述只读缓冲区的存储空间,则将所述只读缓冲区映射到第二常量存储区中或采样器存储区中。
6.根据权利要求5所述的方法,其特征在于,所述将所述只读缓冲区映射到第二常量存储区中或采样器存储区中,包括:
对所述第二常量存储区中、采样器存储区进行负载均衡处理,以将所述缓冲区映射到第二常量存储区中或采样器存储区中。
7.一种任务数据的装载装置,其特征在于,所述装置包括:
分析模块,用于当发起任务之后,对所述任务中涉及到的各类缓冲区进行分析,确定各所述缓冲区是否满足预设的只读缓冲区条件;
处理模块,用于将满足所述只读缓冲区条件的缓冲区确定为只读缓冲区;
映射模块,用于基于只读存储空间的空间信息和所述只读缓冲区的尺寸信息,将所述只读缓冲区映射到匹配的只读存储空间中,得到对应的只读映射信息;
装载模块,用于基于所述只读映射信息,将所述只读缓冲区中的任务数据装载至相匹配的只读存储空间。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165914.2A CN116303135B (zh) | 2023-02-24 | 2023-02-24 | 任务数据的装载方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165914.2A CN116303135B (zh) | 2023-02-24 | 2023-02-24 | 任务数据的装载方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116303135A true CN116303135A (zh) | 2023-06-23 |
CN116303135B CN116303135B (zh) | 2024-03-22 |
Family
ID=86782721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310165914.2A Active CN116303135B (zh) | 2023-02-24 | 2023-02-24 | 任务数据的装载方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303135B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5625808A (en) * | 1995-03-31 | 1997-04-29 | International Business Machines Corporation | Read only store as part of cache store for storing frequently used millicode instructions |
EP1168315A2 (en) * | 2000-06-29 | 2002-01-02 | Samsung Electronics Co., Ltd. | Optical recording medium having read-only storage area and writeable storage area, and recording/reproducing apparatus and method therefor |
CN103942161A (zh) * | 2014-04-24 | 2014-07-23 | 杭州冰特科技有限公司 | 只读缓存的去冗余系统及方法以及缓存的去冗余方法 |
CN108463803A (zh) * | 2016-01-19 | 2018-08-28 | 高通股份有限公司 | 对异构缓冲区的随机访问不相交并发稀疏写入 |
CN109213696A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
US20200125290A1 (en) * | 2018-10-23 | 2020-04-23 | Microsoft Technology Licensing, Llc | Hybrid use of non-volatile memory as storage device and cache |
US20220107779A1 (en) * | 2020-10-06 | 2022-04-07 | Tencent America LLC | Method and apparatus for audio mixing |
CN114787785A (zh) * | 2019-12-16 | 2022-07-22 | 高通股份有限公司 | 促进图形处理单元中的推测性页面故障处理的方法和装置 |
CN116257463A (zh) * | 2023-01-04 | 2023-06-13 | 格兰菲智能科技有限公司 | 混合存储方法、装置、计算机设备、存储介质 |
-
2023
- 2023-02-24 CN CN202310165914.2A patent/CN116303135B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5625808A (en) * | 1995-03-31 | 1997-04-29 | International Business Machines Corporation | Read only store as part of cache store for storing frequently used millicode instructions |
EP1168315A2 (en) * | 2000-06-29 | 2002-01-02 | Samsung Electronics Co., Ltd. | Optical recording medium having read-only storage area and writeable storage area, and recording/reproducing apparatus and method therefor |
CN103942161A (zh) * | 2014-04-24 | 2014-07-23 | 杭州冰特科技有限公司 | 只读缓存的去冗余系统及方法以及缓存的去冗余方法 |
CN108463803A (zh) * | 2016-01-19 | 2018-08-28 | 高通股份有限公司 | 对异构缓冲区的随机访问不相交并发稀疏写入 |
CN109213696A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
US20200125290A1 (en) * | 2018-10-23 | 2020-04-23 | Microsoft Technology Licensing, Llc | Hybrid use of non-volatile memory as storage device and cache |
CN114787785A (zh) * | 2019-12-16 | 2022-07-22 | 高通股份有限公司 | 促进图形处理单元中的推测性页面故障处理的方法和装置 |
US20220107779A1 (en) * | 2020-10-06 | 2022-04-07 | Tencent America LLC | Method and apparatus for audio mixing |
CN116257463A (zh) * | 2023-01-04 | 2023-06-13 | 格兰菲智能科技有限公司 | 混合存储方法、装置、计算机设备、存储介质 |
Non-Patent Citations (1)
Title |
---|
杨学军, 戴华东, 夏军: "多处理器系统中的数据局部性及其优化技术研究", 中国工程科学, 30 May 2002 (2002-05-30), pages 44 - 52 * |
Also Published As
Publication number | Publication date |
---|---|
CN116303135B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3407182B1 (en) | Vector computing device | |
CN103336758B (zh) | 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法 | |
US8108466B2 (en) | Automated offloading of user-defined functions to a high performance computing system | |
US10459727B2 (en) | Loop code processor optimizations | |
JP7088897B2 (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN115237599B (zh) | 一种渲染任务处理方法和装置 | |
CN114416045A (zh) | 自动生成算子的方法和装置 | |
US20170192793A1 (en) | Efficient instruction processing for sparse data | |
CN117312330B (zh) | 基于便签式存储的向量数据聚集方法、装置及计算机设备 | |
CN110688055B (zh) | 一种大图计算中数据访问方法及系统 | |
CN114328315A (zh) | 基于dma的数据预处理方法、dma部件及芯片结构 | |
CN111552652B (zh) | 基于人工智能芯片的数据处理方法、装置和存储介质 | |
CN116303135B (zh) | 任务数据的装载方法、装置和计算机设备 | |
KR102205899B1 (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
CN115249057A (zh) | 用于图形节点采样的系统和由计算机实现的方法 | |
US9507794B2 (en) | Method and apparatus for distributed processing of file | |
JP6881579B2 (ja) | データロードプログラム、データロード方法およびデータロード装置 | |
CN114691496A (zh) | 单元测试方法、装置、计算设备及介质 | |
CN116541336B (zh) | 多核芯片、协处理器的软件运行方法 | |
WO2023097424A1 (en) | Method and apparatus for fusing layers of different models | |
CN108874468A (zh) | 应用程序的加载方法、装置、计算机设备及存储介质 | |
CN111309384B (zh) | 针对硬件加速器的软硬件交互方法、装置和存储介质 | |
CN117806709B (zh) | 系统级芯片的性能优化方法、装置、设备和存储介质 | |
CN112230931B (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 |