当前位置: 首页 > 专利查询>辉达公司专利>正文

协作并行存储器分配制造技术

技术编号:29996055 阅读:12 留言:0更新日期:2021-09-11 04:37
本发明专利技术公开了协作并行存储器分配,具体公开了通过在并行处理单元(PPU)(例如图形处理单元(GPU))或能够支持多线程软件执行的任何其他处理单元上执行一个或更多个软件程序来并行地执行多线程存储器分配的装置、系统和技术。在至少一个实施例中,部分地由代码使用用于并行计算的应用程序编程接口(诸如CUDA)表达的一个或更多个软件程序在GPU上高效且并行地执行存储器的分配、搜索和解除分配。搜索和解除分配。搜索和解除分配。

【技术实现步骤摘要】
协作并行存储器分配


[0001]至少一个实施例涉及用于由一个或更多个软件程序执行多线程存储器分配的处理资源。例如,至少一个实施例涉及用于由一个或更多个程序使用用于并行计算的应用程序编程接口(诸如CUDA)并行分配、搜索和解除分配存储器的处理器或计算系统,其实现本文描述的各种新颖技术。

技术介绍

[0002]并行处理单元(PPU)(诸如图形处理单元(GPU))允许并行执行多个软件程序。促进并行计算的现代应用程序编程接口(API)(例如计算统一设备架构(CUDA))允许软件程序请求PPU上的暂存存储器区,以便存储用于各种计算的数据。随着多个软件应用在PPU上并行运行,存储器分配和解除分配已经成为重要的性能瓶颈。
附图说明
[0003]图1是示出了根据至少一个实施例由一个或更多个协作组进行的暂存存储器操作的框图;
[0004]图2是示出了根据至少一个实施例的用于执行存储器操作的动态基数树的框图;
[0005]图3是示出了根据至少一个实施例的用于执行存储器操作的存储在动态基数树中的状态值的框图;
[0006]图4A是示出了根据至少一个实施例的认领状态的框图;
[0007]图4B是示出了根据至少一个实施例的计数状态的框图;
[0008]图5A是示出了根据至少一个实施例的使用动态基数树的并行存储器解除分配的框图;
[0009]图5B示出了根据至少一个实施例的用于执行并行存储器解除分配的过程;
[0010]图6A是示出了根据至少一个实施例的使用动态基数树的并行存储器搜索的框图;
[0011]图6B示出了根据至少一个实施例的用于执行并行存储器搜索的过程;
[0012]图7A是示出了根据至少一个实施例的使用动态基数树的并行存储器分配的框图;
[0013]图7B示出了根据至少一个实施例的用于执行并行存储器分配的过程;
[0014]图8示出了根据至少一个实施例的示例性数据中心;
[0015]图9示出了根据至少一个实施例的处理系统;
[0016]图10示出了根据至少一个实施例的计算机系统;
[0017]图11示出了根据至少一个实施例的系统;
[0018]图12示出了根据至少一个实施例的示例性集成电路;
[0019]图13示出了根据至少一个实施例的计算系统;
[0020]图14示出了根据至少一个实施例的APU;
[0021]图15示出了根据至少一个实施例的CPU;
[0022]图16示出了根据至少一个实施例的示例性加速器集成切片;
[0023]图17A和图17B示出了根据至少一个实施例的示例性图形处理器;
[0024]图18A示出了根据至少一个实施例的图形核心;
[0025]图18B示出了根据至少一个实施例的GPGPU;
[0026]图19A示出了根据至少一个实施例的并行处理器;
[0027]图19B示出了根据至少一个实施例的处理集群;
[0028]图19C示出了根据至少一个实施例的图形多处理器;
[0029]图20示出了根据至少一个实施例的图形处理器;
[0030]图21示出了根据至少一个实施例的处理器;
[0031]图22示出了根据至少一个实施例的处理器;
[0032]图23示出了根据至少一个实施例的图形处理器核心;
[0033]图24示出了根据至少一个实施例的PPU;
[0034]图25示出了根据至少一个实施例的GPC;
[0035]图26示出了根据至少一个实施例的流式多处理器;
[0036]图27示出了根据至少一个实施例的编程平台的软件栈;
[0037]图28示出了根据至少一个实施例的图27的软件栈的CUDA实现;
[0038]图29示出了根据至少一个实施例的图27的软件栈的ROCm实现;
[0039]图30示出了根据至少一个实施例的图27的软件栈的OpenCL实现;
[0040]图31示出了根据至少一个实施例的由编程平台支持的软件;
[0041]图32示出了根据至少一个实施例的在图27

30的编程平台上执行的编译代码;
[0042]图33更详细地示出了根据至少一个实施例的在图27

30的编程平台上执行的编译代码;
[0043]图34示出了根据至少一个实施例的在编译源代码之前转换源代码;
[0044]图35A示出了根据至少一个实施例的被配置为使用不同类型的处理单元来编译和执行CUDA源代码的系统;
[0045]图35B示出了根据至少一个实施例的被配置为使用CPU和启用CUDA的GPU来编译和执行图35A的CUDA源代码的系统;
[0046]图35C示出了根据至少一个实施例的被配置为使用CPU和未启用CUDA的GPU来编译和执行图35A的CUDA源代码的系统;
[0047]图36示出了根据至少一个实施例的由图35C的CUDA到HIP转换工具转换的示例性内核;
[0048]图37更详细地示出了根据至少一个实施例的图35C的未启用CUDA的GPU;以及
[0049]图38示出了根据至少一个实施例的示例性CUDA网格的线程如何被映射到图37的不同计算单元。
具体实施方式
[0050]图1示出了根据至少一个实施例的由一个或更多个协作组104、106、108进行的暂存存储器102操作112、114、116的框图。在至少一个实施例中,暂存存储器102是并行处理单元(PPU)(例如图形处理单元(GPU))或能够执行多个线程的任何其他类型的处理单元(例如中央处理单元(CPU))上的存储器。在至少一个实施例中,暂存存储器102是随机存取物理存
储器。在至少一个实施例中,暂存存储器102是本文进一步描述的寄存器文件或高速缓存。在至少一个实施例中,暂存存储器102是GPU上的视频存储器或以下描述的任何其他类型的物理存储器。在一个实施例中,暂存存储器102是诸如虚拟存储器之类的物理存储器的硬件或软件抽象。在至少一个实施例中,暂存存储器102是易失性或非易失性的。
[0051]在至少一个实施例中,暂存存储器102存储由在PPU(例如,GPU或如上所述的其他处理单元)上运行的一个或更多个程序使用的数据值。在至少一个实施例中,暂存存储器102以块存储数据值,其中,每个块被指派由一个或更多个程序引用的地址。在至少一个实施例中,一个或更多个程序是包含指令的软件程序,所述指令在被执行时使用PPU(诸如GPU或如上所述的其他处理单元)来执行操作。在至少一个实施例中,一个或更多个软件程序使用用于并行计算的应用程序编程接口(API),诸如计算统一设备架构(CUDA)或如下所述的其他API。在至少一个实施例中,一个或更多个软件程序包含协作组104、106、108中的个体线程110。
[0052]在至少一个实施例中,线程110是软件指令序列,其在被执行时本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种处理器,包括:一个或更多个电路,用于至少部分地基于一个或更多个存储器部分的大小而将所述一个或更多个存储器部分专门地分配给一个或更多个指令线程,而另一线程能够分配一个或更多个其他存储器部分。2.根据权利要求1所述的处理器,其中:所述一个或更多个存储器部分被包含在相关存储器块树的存储器块中;所述一个或更多个指令线程的第一组并发地检查所述相关存储器块树,并且确定所述第一组中的第一线程和用于分配的第一存储器块;所述第一线程在所述第一存储器块中定位用于所述分配的第一一个或更多个存储器部分;所述第一线程更新所述第一存储器块的状态,以指示所述第一一个或更多个存储器部分被分配;所述第一线程解锁所述第一存储器块;以及当所述第一线程定位所述第一一个或更多个存储器部分时,第二线程能够分配或解除分配所述相关存储器块树的第二块中的所述一个或更多个其他存储器部分。3.根据权利要求2所述的处理器,其中至少部分地基于所述大小来确定包含所述一个或更多个存储器部分的所述相关存储器块树的所述存储器块。4.根据权利要求2所述的处理器,其中所述第一组通过由所述第一组中的每个线程投票来确定所述第一线程和所述第一存储器块。5.根据权利要求2所述的处理器,其中所述状态包括指示关于所述存储器块中包含的所述一个或更多个存储器部分的信息的一个或更多个值。6.根据权利要求2所述的处理器,其中如果所述第一存储器块不包含待分配的所述第一一个或更多个存储器部分,则所述第一线程在所述相关存储器块树的第三存储器块中定位待分配的所述第一一个或更多个存储器部分,所述第三存储器块在所述相关存储器块树的不同分支中。7.根据权利要求2所述的处理器,其中所述第一线程通过修改所述第一块的所述状态来锁定所述第一块。8.根据权利要求2所述的处理器,其中所述状态包括指示所述相关存储器块树中将被并发地检查的附加存储器块的一个或更多个值。9.根据权利要求2所述的处理器,其中所述第一块的第一存储器部分和第二存储器部分指示包含第三一个或更多个存储器部分的第三块。10.根据权利要求2所述的处理器,其中如果由于所述第一存储器块被锁定,所述第二线程不能够解除分配所述一个或更多个其他存储器部分,则所述第一线程执行所述一个或更多个其他存储器部分的解除分配。11.根据权利要求1所述的处理器,其中通过执行对应用程序编程接口的函数调用以由所述一个或更多个指令线程并行计算,来专门地分配所述一个或更多个存储器部分。12.一种系统,包括:一个或更多个处理器,用于至少部分地基于一个或更多个存储器部分的大小来将所述一个或更多个存储器部分专门地分配给一个或更多个指令线程,而另一线程能够分配一个
或更多个其他存储器部分。13.根据权利要求12所述的系统,其中:所述一个或更多个存储器部分被包含在存储器块集合的第一块中;所述第一块由所述一个或更多个指令线程的第一组中的第一线程锁定;所述第一块中的所述一个或更多个存储器部分由所述第一线程认领;以及当所述第一块由所述第一线程锁定时,所述一个或更多个指令线程的第二组中的第二线程能够认领或不认领所述存储器块集合中的第二块中的所述一个或更多个其他存储器部分。14.根据权利要求13所述的系统,其中在认领所述第一块中的所述一个或更多个存储器部分之后,所述第一线程解锁所述第一块。15.根据权利要求13所述的系统,其中所述第二块不被所述第一线程锁定。16.根据权利要求13所述的系统,其中至少部分地基于所述大小来确定所述存储器块集合中的所述第一块和所述第二块。17.根据权利要求13所述的系统,其中所述存储器块集合中的每个块与指示关于所述块的信息的状态值相关联。18.根据权利要求17所述的系统,其中通过在与所述第一块相关联的所述状态中递增引用计数来锁定所述第一块。19.根据权利要求17所述的系统,其中通过更新与所述第一块相关联的所述状态来认领所述第一块中的所述一个或更多个存储器部分。20.根据权利要求12所述的系统,其中通过执行对应用程序编程接口的函数调用以由所述一个或更多个指令线程并行计算,来专门地分配所述一个或更多个存储器部分。21.一种机器可读介质,具有存储在其上的应用程序编程接口(API),所述API如果由一个或更多个处理器执行,则使所述一个或更多个处理器至少:由所述API至少部分地基于一个或更多个存储器部分的大小来将所述一个或更多个存储器部分专门地分配给一个或更多个指令线程,而另一线程能够分配一个或更多个其他存储器部分。22.根据权利要求21所述的机器可读介质,其中:所述一个或更多个存储器部分和所述一个或更多个其他存储器部分被...

【专利技术属性】
技术研发人员:H
申请(专利权)人:辉达公司
类型:发明
国别省市:

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

1