当前位置: 首页 > 专利查询>嵩山实验室专利>正文

基于Gem5框架的晶圆级多GPU仿真方法、装置及存储介质制造方法及图纸

技术编号:38898618 阅读:11 留言:0更新日期:2023-09-22 14:18
本发明专利技术公开了一种基于Gem5框架的多GPU仿真模拟方法,用于晶圆级系统,包括:搭建Gem5系统模拟运行环境,下载源文件、编译、运行;创建多个GPU组件,并将多个GPU的L2缓存分别连接到Directory上,Directory再将其分别指向各个GPU所属的内存段;更改ROCk驱动,为一个或多个程序创建多个软件队列,并分配给多个GPU,为每个GPU均创建一个doorbell region;采用搭建的Gem5系统对多GPU的所述晶圆级系统进行仿真测试、验证系统性能。可见,本发明专利技术实现了多GPU间的通信、交互与调度,从而减少了晶圆级系统的设计时间,降低了系统的验证成本;本发明专利技术还公开了一种基于Gem5的GPU仿真模拟装置及存储介质。质。质。

【技术实现步骤摘要】
基于Gem5框架的晶圆级多GPU仿真方法、装置及存储介质


[0001]本专利技术涉及晶圆级GPU设计仿真模拟
,更具体地说,涉及一种基于Gem5框架的晶圆级多GPU仿真方法、装置及存储介质。

技术介绍

[0002]GPU凭借其强大的并行计算能力,使得大多应用都得到了不同程度上的性能提升。自从GPU被用于通用计算领域以来,研究人员已经开发了一系列GPU架构模拟器,来支持人们对GPU架构的探索,完成不同的应用程序在多GPU平台上的并行化,并能获得更好的结果。
[0003]最初开发的GPU模拟器,如GPGPU

Sim和Multi2

Sim,是为单个GPU平台开发的,不支持对多GPU的扩展。后来出现的Gem5 模拟器是一款可配置、集成多种指令集和GPU 模型的体系结构模拟器。它对 M5 模拟器和 GEMS模拟器进行了混合集成。M5 模拟器由美国密西根大学开发,主要侧重模拟 GPU 模型和指令集。GEMS 模拟器由美国威斯康辛大学开发,能够对存储层次进行灵活模拟,支持多种 cache一致性和片上互联模型。
[0004]随着技术的发展,在市场对AI、数据中心等并行计算应用的需求推动下,GPU已经发展为多线程、多核和并行度高的处理器,GPU 高度并行的强大的计算能力使得高性能计算成为时代的趋势。这种颠覆了传统多核系统的架构,除了带来的高性能低功耗等优势,也给芯片设计、硬件架构以及一系列资源管理策略带来新的挑战。
[0005]在晶圆级系统设计中,拥有着大量的预制件,每一个预制件都可以是一个单独的GPU。然而上述模拟器虽然具有丰富的配置选项,但它们在设计时每次仅能仿真一个GPU,也只能对这一个GPU的内部更改配置选项。因此,在晶圆级系统的设计过程中,采用现有的模拟器仅能实现预制件的逐个仿真,这增加了晶圆级系统的设计时间以及验证成本。
[0006]因此,如何降低晶圆级系统的设计时间以及验证成本,是本领域技术人员需要解决的问题。

技术实现思路

[0007]本专利技术的目的在于提供一种基于Gem5的GPU仿真模拟方法、装置及存储介质,通过在晶圆级系统设计时能够仿真多个GPU的模拟器以解决上述技术问题。
[0008]为了实现上述目的,本专利技术采用了如下技术方案:一种基于Gem5的GPU仿真模拟方法,用于晶圆级系统,其特征在于,包括以下步骤:S1:搭建Gem5系统模拟运行环境,包括下载源文件、编译、运行;S2:在Gem5系统中创建多个GPU组件,并将多个GPU的L2缓存分别连接到Directory上,Directory再将其分别指向各个GPU所属的不同内存段;S3:更改Radeon Open Compute kernel(ROCk)驱动,为一个或多个程序创建多个软件队列,并分配给多个GPU,为每个GPU均创建一个doorbell region;S4:采用搭建的Gem5系统对多GPU的所述晶圆级系统进行仿真测试、验证系统性能。
[0009]其中,所述步骤S2具体包括:步骤S21:在GPU 组件创建过程中,采用从0到N循环重复创建N个GPU组件,N为GPU的个数;步骤S22:为每个GPU组件创建Shader、Compute Units、HSAPacketProcessor、 GPUDispatcher以及GPUCommandProcessor;步骤S23:重新构建拓扑结构,将每个GPU都作为一个Node连接到Directory上,模拟PCIE的交互模式;步骤S24:在Directory内部,增加每个Node分别指向不同的内存段,步骤S25:在GPU的Viper系统中,增加采用从0到N循环重复为每个GPU组件添加Cache;步骤S26:在GPU的TLB配置中,为每个GPU组件分别设置一个TLB hierarchy。
[0010]其中,所述步骤S3具体包括:步骤S31:当user space的代码调用系统的ioctl函数时,请求ROCk创建一个队列,ROCk通过ioctl()的参数得到GPU的ID,将kernel分配到对应的GPU;步骤S32:为ROCk创建一个哈希表来维护队列到GPU的对应关系,使ROCk记录每个队列对应的GPU;步骤S33:为每个GPU均创建一个doorbell region;步骤S34:在mmap()函数的输入参数中增加offset参数;步骤S35:在mmap()函数中增加计算逻辑,通过起始地址、长度、偏移值,计算出物理内存中对应的GPU所属的内存映射地址。
[0011]一种基于Gem5框架的多GPU仿真模拟装置,用于晶圆级系统,其特征在于,所述仿真装置包括以下模块:环境搭建模块,用于搭建Gem5系统模拟运行环境,包括下载源文件、编译、运行;GPU组件创建模块,用于创建多个GPU组件,并将多个GPU的L2缓存分别连接到Directory上,Directory再将其分别指向各个GPU所属的不同内存段;ROCk驱动更改模块,用于更改 Radeon Open Compute kernel(ROCk)驱动,为一个或多个程序创建多个软件队列,并分配给多个GPU,为每个GPU均创建一个doorbell region;测试验证模块,用于采用搭建的Gem5系统对多GPU的所述晶圆级系统进行仿真测试、验证系统性能。
[0012]其中,所述GPU组件创建模块具体包括:循环创建模块,用于在GPU 组件创建过程中,采用从0到N循环重复创建N个GPU组件,N为GPU的个数;组件配置模块,用于为每个GPU组件创建Shader、Compute Units、HSAPacketProcessor、 GPUDispatcher以及GPUCommandProcessor;拓扑结构构建模块,用于重新构建拓扑结构,将每个GPU都作为一个Node连接到Directory上,模拟PCIE的交互模式;内存映射模块,用于在Directory内部,增加每个Node分别指向不同的内存段;缓存配置模块,用于在GPU的Viper系统中,增加采用从0到N循环重复为每个GPU组
件添加Cache;TLB配置模块,用于在GPU的TLB配置中,为每个GPU组件分别设置一个TLB hierarchy。
[0013]其中,所述ROCk驱动更改模块具体包括:队列创建模块,用于当user space的代码调用系统的ioctl函数时,请求ROCk创建一个队列,ROCk通过ioctl()的参数得到GPU的ID,将kernel分配到对应的GPU;哈希表创建模块,用于为ROCk创建一个哈希表来维护队列到GPU的对应关系,使ROCk记录每个队列对应的GPU;doorbell region配置模块,用于为每个GPU均创建一个doorbell region;offset配置模块,用于在mmap()函数的输入参数中增加offset参数;逻辑计算模块,用于在mmap()函数中增加计算逻辑,通过起始地址、长度、偏移值,计算出物理内存中对应的GPU所属的内存映射地址。
[0014]一种计算机可读存储介质,其上存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Gem5框架的多GPU仿真方法,用于晶圆级系统,其特征在于,包括以下步骤:S1:搭建Gem5系统模拟运行环境,包括下载源文件、编译、运行;S2:在Gem5系统中创建多个GPU组件,并将多个GPU的L2缓存分别连接到Directory上,Directory再将其分别指向各个GPU所属的不同内存段;S3:更改 Radeon Open Compute kernel(ROCk)驱动,为一个或多个程序创建多个软件队列,并分配给多个GPU,为每个GPU均创建一个doorbell region;S4:采用搭建的Gem5系统对多GPU的所述晶圆级系统进行仿真测试、验证系统性能。2.根据权利要求1所述的基于Gem5框架的多GPU仿真方法,其特征在于,所述步骤S2具体包括:S21:在GPU 组件创建过程中,采用从0到N循环重复创建N个GPU组件,N为GPU的个数;S22:为每个GPU组件创建Shader、Compute Units、HSAPacketProcessor、 GPUDispatcher以及GPUCommandProcessor;步骤S23:重新构建拓扑结构,将每个GPU都作为一个Node连接到Directory上,模拟PCIE的交互模式;步骤S24:在Directory内部,增加每个Node分别指向不同的内存段;步骤S25:在GPU的Viper系统中,增加采用从0到N循环重复为每个GPU组件添加Cache;步骤S26:在GPU的TLB配置中,为每个GPU组件分别设置一个TLB hierarchy。3.根据权利要求2所述的基于Gem5框架的多GPU仿真方法,其特征在于,所述步骤S3具体包括:步骤S31:当user space的代码调用系统的ioctl函数时,请求ROCk创建一个队列,ROCk通过ioctl()的参数得到GPU的ID,将kernel分配到对应的GPU;步骤S32:为ROCk创建一个哈希表来维护队列到GPU的对应关系,使ROCk记录每个队列对应的GPU;步骤S33:为每个GPU均创建一个doorbell region;步骤S34:在mmap()函数的输入参数中增加offset参数;步骤S35:在mmap()函数中增加计算逻辑,通过起始地址、长度、偏移值,计算出物理内存中对应的GPU所属的内存映射地址。4.一种基于Gem5框架的多GPU仿真装置,用于晶圆级系统,其特征在于,所述仿真装置包括以下模块:环境搭建模块,用于搭建Gem5系统模拟运行环境,包括下载源文件、编译、运行;GPU组件...

【专利技术属性】
技术研发人员:王偲柠邵阳雪刘战伟魏帅李沛杰裴雪于洪
申请(专利权)人:嵩山实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1