设置于图形处理器中的二次卸载装置和方法转让专利
申请号 : CN202011140493.0
文献号 : CN112214443B
文献日 : 2021-12-03
发明人 : 不公告发明人
申请人 : 上海壁仞智能科技有限公司
摘要 :
权利要求 :
1.一种二次卸载装置,设置于图形处理器中,其特征在于,包括:引擎,存储操作表,所述操作表包含多个记录;以及计算单元,耦接所述引擎,用于提取多个计算代码,其中,所述计算代码包含多个执行代码和多个同步请求;执行每个所述执行代码;以及依据所述同步请求发出多个请求给所述引擎,用于指示所述引擎依据所述操作表中的记录让所述图形处理器中的或所述图形处理器外的组件完成操作。
2.如权利要求1所述的二次卸载装置,其特征在于,所述引擎包括:存储器,存储所述操作表;
接口;以及
控制器,耦接所述存储器和所述接口,通过所述接口从所述计算单元收到包含记录编号的每个所述请求后,搜索所述操作表以获取相应于所述记录编号的记录,依据所述获取的记录的内容通过所述接口以指示命令处理器发出命令给所述图形处理器中的或所述图形处理器外的组件。
3.如权利要求2所述的二次卸载装置,其特征在于,所述命令处理器设置在所述图形处理器之中。
4.如权利要求2所述的二次卸载装置,其特征在于,所述控制器通过所述接口从所述图形处理器中的或所述图形处理器外的所述组件收到执行完毕的信息后,通过所述接口通知所述计算单元关于相应请求已经处理完成的信息。
5.如权利要求1所述的二次卸载装置,其特征在于,所述计算单元判断每个所述执行代码或同步请求是否能够被执行;如果所述执行代码能够被执行,则执行所述执行代码;如果所述同步请求能够被执行,则发出请求给所述引擎;如果所述执行代码或同步请求不能够被执行,则等待一段时间后再进行下回合的判断。
6.如权利要求5所述的二次卸载装置,其特征在于,当所述执行代码或同步请求所关联的同步标识指出不需要等待前一个代码执行完毕时,或者当所述执行代码或同步请求所关联的同步标识指出需要等待前一个代码执行完毕且前一个代码已经执行完毕时,所述执行代码或同步请求能够被执行;当所述执行代码或同步请求所关联的同步标识指出需要等待前一个代码执行完毕且前一个代码还没执行完毕时,所述执行代码或同步请求不能够被执行。
7.如权利要求1所述的二次卸载装置,其特征在于,每个所述记录包含一个操作由所述图形处理器中的或所述图形处理器外的特定组件运行的信息,以及包含所述操作如何运行的信息。
8.如权利要求7所述的二次卸载装置,其特征在于,每个所述记录包含操作命令和操作参数。
9.如权利要求1所述的二次卸载装置,其特征在于,所述图形处理器中的组件为二级缓存或直接内存存取/系统直接内存存取控制器,以及所述图形处理器外的组件为中央处理器。
10.一种二次卸载方法,由图形处理器中的计算单元和引擎共同执行,其特征在于,包括:
所述计算单元提取多个计算代码,其中,所述计算代码包含多个执行代码和多个同步请求;
所述计算单元执行每个所述执行代码;以及所述计算单元依据所述同步请求发出多个请求给所述引擎,用于指示所述引擎依据操作表中的记录让所述图形处理器中的或所述图形处理器外的组件完成操作。
11.如权利要求10所述的二次卸载方法,其特征在于,包括:当所述引擎从所述计算单元收到包含记录编号的每个所述请求后,搜索所述操作表以获取相应于所述记录编号的记录,依据所述获取的记录的内容指示命令处理器发出命令给所述图形处理器中的或所述图形处理器外的组件。
12.如权利要求11所述的二次卸载方法,其特征在于,包括:当所述引擎从所述图形处理器中的或所述图形处理器外的所述组件收到执行完毕的信息后,通知所述计算单元关于相应请求已经处理完成的信息。
13.如权利要求10所述的二次卸载方法,其特征在于,包括:所述计算单元判断每个所述执行代码或同步请求是否能够被执行;
如果所述执行代码能够被执行,则所述计算单元执行所述执行代码;
如果所述同步请求能够被执行,则所述计算单元发出请求给所述引擎;以及如果所述执行代码或同步请求不能够被执行,则等待一段时间后再进行下回合的判断。
14.如权利要求13所述的二次卸载方法,其特征在于,当所述执行代码或同步请求所关联的同步标识指出不需要等待前一个代码执行完毕时,或者当所述执行代码或同步请求所关联的同步标识指出需要等待前一个代码执行完毕且前一个代码已经执行完毕时,所述执行代码或同步请求能够被执行;当所述执行代码或同步请求所关联的同步标识指出需要等待前一个代码执行完毕且前一个代码还没执行完毕时,所述执行代码或同步请求不能够被执行。
15.如权利要求10所述的二次卸载方法,其特征在于,每个所述记录包含一个操作由所述图形处理器中的或所述图形处理器外的特定组件运行的信息,以及包含所述操作如何运行的信息。
16.如权利要求15所述的二次卸载方法,其特征在于,每个所述记录包含操作命令和操作参数。
17.如权利要求10所述的二次卸载方法,其特征在于,所述图形处理器中的组件为二级缓存或直接内存存取/系统直接内存存取控制器,以及所述图形处理器外的组件为中央处理器。
18.一种二次卸载装置,设置于图形处理器中,其特征在于,包括:引擎;以及
计算单元,耦接所述引擎,用于提取多个计算代码;当每个所述计算代码适合由所述计算单元执行时,执行所述计算代码;以及当每个所述计算代码不适合由所述计算单元执行时,生成相应记录,并且发出请求和所述相应记录给所述引擎,用于指示所述引擎依据所述相应记录让所述图形处理器中的或所述图形处理器外的组件完成操作。
19.如权利要求18所述的二次卸载装置,其特征在于,每个所述相应记录包含一个操作由所述图形处理器中的或所述图形处理器外的特定组件运行的信息,以及包含所述操作如何运行的信息。
20.如权利要求19所述的二次卸载装置,其特征在于,每个所述相应记录包含操作命令和操作参数。
说明书 :
设置于图形处理器中的二次卸载装置和方法
技术领域
背景技术
运算,而图形处理器适合处理计算机图形(Computer Graphics) 的运算。这样的计算系统
被编程后可执行各种应用任务,包含但不限于:线性和非线性数据转化、数据库操作、大数
据运算、人工智能计算、音频、视频数据的编码、解码、建模操作、图像渲染操作等。为了实现
异构高并发的计算,本发明提出一种设置于图形处理器中的二次卸载装置和方法。
发明内容
计算代码包含多个执行指令和多个同步请求;执行每个执行指令;以及依据同步请求发出
多个请求给引擎,用于指示引擎依据操作表中的记录让图形处理器中的或所述图形处理器
外的组件完成操作。
令;以及计算单元依据同步请求发出多个请求给引擎,用于指示引擎依据操作表中的记录
让图形处理器中的或图形处理器外的组件完成操作。
码;以及当每个计算代码不适合由计算单元执行时,生成相应记录,并且发出请求和相应记
录给引擎,用于指示引擎依据相应记录让所图形处理器中的或图形处理器外的组件完成操
作。
存带宽的占用。
附图说明
210~270:装置代码;410:全局同步引擎;412:接口;414:控制器;416:存储器;440:特殊应
用集成电路;450:现场可编程逻辑门数组;460:加速器;510:编译器;532:运行时;534:驱动
程序;552:原始程序核;554、830:全局同步引擎操作表;556、 850:计算代码;570、810:重构
后程序核;60:编译计算机;610:处理单元; 620:内存;630:显示接口;640:输入接口;650:
存储装置;S710~S760:方法步骤;851~857:重构后代码;S910~S960:方法步骤;t1、t2、
t3:时间点。
具体实施方式
数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
法步骤时的时间先后顺序,仅用于区别具有相同名字的组件。
一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式
解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
非线性数据转化、数据库操作、大数据运算、人工智能计算、音频、视频数据的编码、解码、建
模操作、图像渲染操作等。包含图形处理器110的计算系统100中还包含中央处理器
(Central Processing Unit,CPU) 180。图形处理器(Graphics Processing Unit,GPU)110
又可称为通用图形处理器(General‑Purpose computing on Graphics Processing Unit,
GPGPU)。电子装置10可实施为大型主机、工作站、个人计算机、笔记本计算机(Laptop PC)、
平板计算机、移动电话、数字相机、数字摄影机等电子产品。图形处理器110 和中央处理器
180各自拥有内存170和185,并且通过总线架构190相互连接以传递数据、地址、控制信号
等,例如快速外设组件互联(Peripheral Component Interconnect Express,PCI‑E)。
器110较适合单指令多数据的并发运算,例如单指令多数据流(Single Instruction
Multiple Data,SIMD)指令、单指令多线程(Single Instruction Multiple Thread,SIMT)
技术等。为了有效运用图形处理器110能力,中央处理器180可卸载(Offload)一系列的装置
代码给图形处理器110,其过程大致如下所述:中央处理器180在内存185中准备装置代码
(Device Code) 所需的数据,然后发出命令给图形处理器110中的命令处理器(Command
Processor,CP)120,请求从内存185复制数据到图形处理器110中的内存170。命令处理器
120可通过直接内存存取/系统直接内存存取控制器(Direct Memory Access/System
Direct Memory Access,DMA/SDMA Controller)150以完成内存间的数据复制和存储。中央
处理器180把要执行的装置代码发送给图形处理器110,然后发送命令给图形处理器110,用
于启动装置代码的执行。图形处理器110中的计算单元(Compute Unit,CU)130执行这些装
置代码指示的任务,从内存170读取数据、进行各种计算、写入计算结果到内存170。此时,装
置代码的执行都由计算单元130统筹。当计算单元130执行完后,通过命令处理器120通知中
央处理器180,这些装置代码已经执行完毕的信息。中央处理器180接着将内存170中的计算
结果通过总线架构190迁移回内存 185。这过程也可称为一次卸载(First Offload)。
(Flush)二级缓存160,用于清除二级缓存160中的数据 A。装置代码240指示将内存170中的
数据B预取至二级缓存160。装置代码 250指示对二级缓存160中的数据B进行运算。装置代
码260指示清理二级缓存160,用于清除二级缓存160中的数据B。装置代码270指示对内存
170中的数据A和B进行归并操作(All‑Reduce Operation)而成为数据C。归并操作可包含各
式各样的运算,例如,加法、减法、乘法、除法、取大值、取小值、各种比较等。
130运行时,图形处理器110中的其他组件(如命令处理器120、二级缓存(Layer 2,L2
Cache)160、直接内存存取/系统直接内存存控制器150等)都处于等待闲置状态,造成系统
的运行没有效率。此外,某些装置代码的任务并不适合交由计算单元130完成,而是适合交
由其他组件完成,例如二级缓存(Layer 2—L2 Cache)160、直接内存存取/系统直接内存存
控制器150等。举例来说,装置代码210、230~240、260~270就不适合交由计算单元130完
成。如果让计算单元130执行装置代码210或240的任务,则计算单元130需要发出命令给内
存170,用于从内存170中的指定地址读取数据并存储至二级缓存160。如果让计算单元130
执行装置代码230或260的任务,则计算单元130需要发出命令给内存170,用于清除二级缓
存160中指定地址的数据。如果让计算单元130执行装置代码270的任务,则计算单元130 依
序发出命令给内存170及二级缓存160,用于分别从内存170中的指定地址读取数据A和B并
存储至二级缓存160,以及从二级缓存160的指定地址读取数据A和B并存储至计算单元130
中的一级缓存(Layer 1—L1 Cache),并且在运算完成后依序发出命令给二级缓存160及内
存170,用于分别从计算单元130中的一级缓存读取数据C并存储至二级缓存160,以及从二
级缓存160 读取数据C并存储至内存170中的指定地址。因此,由计算单元130主导执行上述
装置代码的任务可能阻塞了后续装置代码的执行,消耗大量的时间(也就是图形处理器110
的时钟周期)、内存带宽(Memory Bandwidth)等宝贵的系统资源,影响整体性能。
给适合的组件执行,包含图形处理器110之中的或图形处理器110外的适合组件。
和乘法计算、比较操作、布尔(Boolean)运算、比特位移、代数函数(如平面插值、三角函数、
指数函数、对数函数)等。图形处理器110可将装置代码210、230、240和260的任务交给二级
缓存160完成,并可将装置代码270的任务交给DMA/SDMA控制器150完成,让 DMA/SDMA控制
器150直接从内存170中的指定地址读取数据并存储至计算单元130中的一级缓存,并且从
计算单元130的一级缓存读取计算结果并存储至内存170中的指定地址。
Specific Integrated Circuit,ASIC)、现场可编程逻辑门数组(Field Programmable
Gate Array,FPGA)、加速器(Accelerator)等。
跳转)、与系统输入输出有大量交互的装置代码等。
用于搭配计算单元130执行各种类型的顺序和并发任务。全局同步引擎410通过内部总线架
构420与命令处理器120、计算单元130、 DMA/SDMA控制器150、二级缓存160、内存170和其他
组件相互连接以传递装置代码、数据、地址、控制信号等,并且通过命令处理器120和外部总
线架构190与中央处理器180、特殊应用集成电路440、现场可编程逻辑门数组 450、加速器
460和其他组件相互连接以传递装置代码、数据、地址、控制信号等。如上所述的组件形成异
构系统(Heterogenous System),而全局同步引擎410则用于协调异构系统中各个模块的工
作。全局同步引擎410包含控制器 414,用于完成装置代码的二次卸载的工作。全局同步引
擎410还包含接口412 和存储器416,接口412用于使用特定通信协议于其他设置在内部总
线架构420 上的其他模块通信,存储器416用于存储即将进行执行操作的必要信息。
执行代码,把程序核552中的执行代码重新组织成适应于如图4所述的异构系统的程序核
570,包含GSE操作表(Operation Table) 554和计算代码556,使得命令处理器120将计算代
码556交给计算单元130 执行,并且把GSE操作表554交给全局同步引擎410,使得全局同步
引擎410 据以指示其他组件执行特定任务(也可称为二次卸载),如DMA/SDMA控制器150、二
级缓存160、内存170、中央处理器180、特殊应用集成电路440、现场可编程逻辑门数组450、
加速器460等。
模块(或组件)的并发执行。
式实施,如使用通用硬件(例如,单处理器、具有并行处理能力的多处理器、图形处理器或其
他具有运算能力的处理器),并且在执行编译器510的程序代码时,提供如后所述的功能。内
存620可为动态随机存取存储器(Dynamic Random Access Memory,DRAM),提供易失性的存
储空间,用于缓存处理单元610在执行编译的过程中所需要的数据,例如,变量、数据表等,
以及从存储装置650读取的数据,例如待分析的程序核552。存储装置650可为硬盘(Hard
Disk)、固态硬盘等,提供非易失性的存储空间,用于存储重构后的GSE操作表554和计算代
码556。处理单元211另可通过显示接口630和输入接口640分别连接显示器和输入装置。
系统的程序核570,包含GSE操作表554和计算代码556。在另一些实施例中,GSE操作表554和
计算代码556也可让不同于图4 所述的异构系统实现多模块的并发执行,本发明并不因此
受限制。详细步骤说明如下:
的执行代码的操作不适合由计算单元130执行时,就把这个执行代码标注出来。举例来说,
以下操作不适合由计算单元130执行:
代码需要同步的信息。如果不需要,新增此执行代码不需要同步的信息。编译器510可使用
同步标识(Synchronization Flag)来表示:“1”代表需要;“0”代表不需要。新增到重构后的
计算代码556的执行代码的顺序相符于获取的执行代码在原始程序核552中的顺序。
应用集成电路440、现场可编程逻辑门数组 450、加速器460或其他不是计算单元130的组
件)运行的信息。例如,步骤 S720中示例的第一个和第二个操作适合由二级缓存160执行,
第三个操作适合由DMA/SDMA控制器150执行,第四个至第六个操作适合中央处理器180 执
行。此外,记录中还包含此操作如何运行的信息,如操作命令和操作参数,相应于步骤S710
中获取的执行代码。
步请求的执行是否需要等待之前获取的执行代码执行完毕。如果需要,新增此同步请求需
要同步的信息。如果不需要,新增此同步请求不需要同步的信息。编译器510可使用同步标
识来表示:“1”代表需要;“0”代表不需要。增加到重构后的计算代码556的同步请求的顺序
相符于获取的执行代码在原始程序核552中的顺序。
录存储了操作1适合由那个模块运行以及如何运行的信息,而第二个记录存储了操作3适合
由那个模块运行以及如何运行的信息。在重构后的计算代码556中,原来的执行代码1被替
换成同步请求,携带指向GSE操作表554中第一个记录的信息,并且原来的执行代码3被替换
成同步请求,携带指向GSE操作表554中第二个记录的信息。编译后的GSE操作表554和计算
代码556会存储到电子装置10中的存储装置,使得通用图形处理器100能够运行重构后的程
序核570。
编译计算机完成编译阶段。
驱动程序534发现程序核570包含两个部分:GSE操作表554和计算代码556。于是,驱动程序
534通知命令处理器120加载程序核570(也可当作启动一次卸载)。命令处理器120将GSE操
作表554存储到全局同步引擎410中的存储器416,使得全局同步引擎410中的控制器414能
够完成GSE操作表554中指示的操作。接着,命令处理器120将计算代码556 交给计算单元
130,启动代码的执行。
息(例如,“L2”代表二级缓存160,“DMA”代表DMA/SDMA控制器150等),每笔记录中的冒号之
后包含如何运行的信息(细节可参考以上关于图2的说明)。计算代码850包含七个代码851
至 857。其中,代码851、853、855和856是同步请求,每个同步请求都带有同步标识(显示在
括弧中),“S”代表需要同步,“NS”代表不需要同步。代码852、854和857是能够让计算单元
130执行的代码,每个代码都带有同步标识(显示在括弧中),“S”代表需要同步,“NS”代表不
需要同步。
要等待前一个代码执行完毕时,代表此代码能够被执行。当此代码所关联的同步标识指出
需要等待前一个代码执行完毕且前一个代码已经执行完毕时,代表此代码能够被执行。当
此代码所关联的同步标识指出需要等待前一个代码执行完毕且前一个代码还没执行完毕
时,代表此代码不能够被执行。
处理。
处理器120发出适当命令给适当的组件。全局同步引擎410从组件收到执行完毕的信息后,
通知计算单元130此请求已经完成的信息。
上被执行。全局同步引擎410中的控制器414通过接口412收到请求后,搜索存储器416中的
GSE操作表830以获取记录编号#1的记录,依据记录编号#1的记录内容通过接口412以指示
命令处理器120 发出命令给二级缓存160,用于将内存170中的数据A预取至二级缓存160。
全局同步引擎410中的控制器414通过接口412从二级缓存160收到执行完毕的信息后,在时
间点t2通过接口412通知计算单元130关于此请求已经处理完成的信息。之后,在时间点t3,
计算单元130依据代码852的指示对二级缓存160中的数据A进行运算。
点t2执行代码852,用于对二级缓存160中的数据D 进行运算。全局同步引擎410中的控制器
414通过接口412收到请求后,搜索存储器416中的GSE操作表830以获取记录编号#4的记录,
依据记录编号#4 的记录内容通过接口412以指示命令处理器120发出命令给DMA/SDMA控制
器150,用于对内存170中的数据A和B进行归并操作而成为数据C。全局同步引擎410中的控
制器414通过接口412从DMA/SDMA控制器150收到执行完毕的信息后,在时间点t3通过接口
412通知计算单元130关于此请求已经处理完成的信息。因此,在时间点t1至t3之间,计算单
元130和DMA/SDMA 控制器150都在运行,提高了并发度,能够减少程序核810的执行时间。
以外的任务,并减少对内存带宽的占用。
GPU代码(也就是装置代码)卸载到图形处理器110 执行。待图形处理器110执行完后,中央
处理器180再接着执行另一段CPU 代码。如此反复交替到整个程序核执行完成。然而这样频
繁的卸载和等待图形处理器110执行完毕的交互也降低执行效率。上述实施例的另一个优
点在于,中央处理器180可一次性卸载更多的装置代码给图形处理器110,再由上述全局同
步引擎410将其中少数适合的操作二次卸载回中央处理器180,避免过多的中央处理器180
和图形处理器110之间的任务提交与等待,提高运算资源的利用率。
不适合自己执行的计算代码时,直接生成如GSE 操作表554或830所述的相应记录,并把生
成的相应记录和请求一起传送给全局同步引擎410,用于指示全局同步引擎410依据此相应
记录让图形处理器110 中的或图形处理器110外的组件完成操作。所属技术领域人员可适
度修改图9 的步骤S940和S960,用于整合如上所述的技术方案。
员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例
方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD‑ROM、U盘、硬
盘,也可置于可通过网络 (例如,互联网,或其他适当介质)存取的网络服务器。
顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同
效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺
序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步
骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
此本发明的保护范围当以本申请的权利要求书所界定的范围为准。