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

线程组的并行处理制造技术

技术编号:38770268 阅读:19 留言:0更新日期:2023-09-10 10:43
用于促进并行处理的装置、系统和技术。在至少一个实施例中,应用编程接口允许用户定义多个协作线程组,并且如果有足够的处理资源可用,则并行启动多个协作线程组。则并行启动多个协作线程组。则并行启动多个协作线程组。

【技术实现步骤摘要】
【国外来华专利技术】线程组的并行处理
[0001]相关申请的交叉引用
[0002]本申请出于所有目的通过引用将2021年7月2日提交的标题为“同步屏障(SYNCHRONIZATION BARRIER)”的共同未决的美国专利申请No.17/366,770以及2021年7月2日提交的标题为“并行线程同步(PARALLEL THREAD SYNCHRONIZATION)”的共同未决的美国专利申请No.17/367,053的全部公开内容并入。
[0003]要求优先权
[0004]本申请要求2021年9月17日提交的标题为“线程组的并行处理(PARALLEL PROCESSING OF THREAD GROUPS)”的美国专利申请No.17/478,079的权益,出于所有的目的,将其全文并入本文。


[0005]至少一个实施例涉及用于使用并行处理执行程序的处理资源。例如,至少一个实施例涉及用于执行使用并行执行的多个协作线程组的一个或更多个CUDA程序的处理器或计算系统。

技术介绍

[0006]配置应用程序来并行利用多个处理资源可以大大提高程序的性能。例如,通过增加可以同时使用的处理核心的数量,可以减少完成程序所需的时间。因此,允许更大量的并行性的技术是开发的重要领域。
附图说明
[0007]图1示出了根据至少一个实施例的线程束的示例;
[0008]图2示出了根据至少一个实施例的跨越2个线程束的协作线程组的示例;
[0009]图3示出了根据至少一个实施例的跨越4个线程束的协作线程组的示例
[0010]图4示出了根据至少一个实施例的具有四个组的协作线程阵列的示例,每个组跨越4个线程束;
[0011]图5示出了根据至少一个实施例的具有四个组的协作线程阵列的示例,每个组跨越8个线程束;
[0012]图6示出了根据至少一个实施例的基于计数器的屏障实现方式的示例;
[0013]图7示出了根据至少一个实施例的由于由计算机系统执行而更新多线程束组的屏障的过程的示例;
[0014]图8示出了根据至少一个实施例的基于位字段的屏障实现方式的示例;
[0015]图9示出了根据至少一个实施例的由于由计算机系统执行而更新多线程束组的屏障的过程的示例;
[0016]图10示出了根据至少一个实施例的串行启动和执行的一对协作组的示例;
[0017]图11示出了根据至少一个实施例的并行启动和执行的一对协作线程组的示例;
[0018]图12示出了根据至少一个实施例的提供API的驱动程序的示例;
[0019]图13示出了根据至少一个实施例的由于由计算机系统执行而启动一个或更多个协作线程组的过程的示例;
[0020]图14示出了根据至少一个实施例的示例性数据中心;
[0021]图15示出了根据至少一个实施例的处理系统;
[0022]图16示出了根据至少一个实施例的计算机系统;
[0023]图17示出了根据至少一个实施例的系统;
[0024]图18示出了根据至少一个实施例的示例性集成电路;
[0025]图19示出了根据至少一个实施例的计算系统;
[0026]图20示出了根据至少一个实施例的APU;
[0027]图21示出了根据至少一个实施例的CPU;
[0028]图22示出了根据至少一个实施例的示例性加速器集成切片;
[0029]图23A和图23B示出了根据至少一个实施例的示例性图形处理器;
[0030]图24A示出了根据至少一个实施例的图形核心;
[0031]图24B示出了根据至少一个实施例的GPGPU;
[0032]图25A示出了根据至少一个实施例的并行处理器;
[0033]图25B示出了根据至少一个实施例的处理集群;
[0034]图25C示出了根据至少一个实施例的图形多处理器;
[0035]图26示出了根据至少一个实施例的图形处理器;
[0036]图27示出了根据至少一个实施例的处理器;
[0037]图28示出了根据至少一个实施例的处理器;
[0038]图29示出了根据至少一个实施例的图形处理器核心;
[0039]图30示出了根据至少一个实施例的PPU;
[0040]图31示出了根据至少一个实施例的GPC;
[0041]图32示出了根据至少一个实施例的流式多处理器;
[0042]图33示出了根据至少一个实施例的编程平台的软件栈;
[0043]图34示出了根据至少一个实施例的图33的软件栈的CUDA实现;
[0044]图35示出了根据至少一个实施例的图33的软件栈的ROCm实现;
[0045]图36示出了根据至少一个实施例的图33的软件栈的OpenCL实现;
[0046]图37示出了根据至少一个实施例的由编程平台支持的软件;
[0047]图38示出了根据至少一个实施例的在图33

36的编程平台上执行的编译代码;
[0048]图39示出了根据至少一个实施例的在图33

36的编程平台上执行的更详细的编译代码;
[0049]图40示出了根据至少一个实施例的在编译源代码之前转换源代码;
[0050]图41A示出了根据至少一个实施例的使用不同类型的处理单元来编译和执行CUDA源代码的系统;
[0051]图41B示出了根据至少一个实施例的使用CPU和启用CUDA的GPU来编译和执行图形41A的CUDA源代码的系统;
[0052]图41C示出了根据至少一个实施例的使用CPU和未启用CUDA的GPU来编译和执行图
形41A的CUDA源代码的系统;
[0053]图42示出了根据至少一个实施例的由图41C的CUDA到HIP转换工具转换的示例性内核;
[0054]图43更详细地示出了根据至少一个实施例的图41C的未启用CUDA的GPU;以及
[0055]图44示出了根据至少一个实施例的示例性CUDA网格的线程如何被映射到图43的不同计算单元;以及
[0056]图45示出了根据至少一个实施例的如何将现有CUDA代码迁移到数据并行C++代码。
具体实施方式
[0057]本文描述了通过允许并行执行多个协作线程组而允许在执行应用时增加并行性的系统和方法。在至少一个实施例中,协作线程组是在多处理系统上同时地运行的一组线程。在至少一个实施例中,多处理系统是具有多个核心(如CUDA核心)的多核心处理器或图形处理单元(“GPU”)。在至少一个实施例中,协作线程组以确保没有线程将运行的方式被启动,除非有足够的处理资源供组中的所有线程同时执行。在至少一个实施例中,每个线程被分配给专用核心,并且与组中的其他线程同时地运行,并且如果运行任何线程,则所有线程被保证是共同驻留(co

resident)和活动的。在至少一个实施例中,共同驻留被定义为确本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种处理器,包括:一个或更多个电路,用于执行应用编程接口(“API”)以使第一两个或更多个相关指令与第二两个或更多个相关指令同时地执行,所述第二两个或更多个相关指令独立于所述第一两个或更多个相关指令。2.根据权利要求1所述的处理器,其中所述应用编程接口是存储在计算机系统的存储器中的驱动程序。3.根据权利要求1所述的处理器,其中所述第一两个或更多个相关指令和所述第二两个或更多个相关指令共同驻留在图形处理单元(“GPU”)的存储器中。4.根据权利要求1所述的处理器,其中:所述第一两个或更多个相关指令是第一组两个或更多个线程的部分;以及所述一个或更多个电路使所述第一组两个或更多个线程在第一时间点共同驻留。5.根据权利要求1所述的处理器,其中:所述第二两个或更多个相关指令是第二组共同驻留线程的部分;所述一个或更多个电路使所述第二组共同驻留线程在第二时间点共同驻留;以及共同驻留允许所述第二组共同驻留线程中的每个线程与所述第二组共同驻留线程中的至少一个其他线程交互。6.根据权利要求1所述的处理器,其中所述第一两个或更多个相关指令通过访问共享存储器、获得所述第二两个或更多个相关指令的状态、等待所述第二两个或更多个相关指令、或者从所述第二两个或更多个相关指令发送或者接收数据,来与两个或更多个相关指令交互。7.根据权利要求1所述的处理器,其中作为确定没有足够资源可用于同时地执行所述第一两个或更多个相关指令的结果,所述一个或更多个电路阻止执行所述第一两个或更多个相关指令。8.根据权利要求7所述的处理器,其中所述资源包括寄存器文件、存储器、共享存储器或处理器核心中的一个或更多个。9.一种计算机实现的方法,包括执行应用编程接口(“API”),以使第一两个或更多个相关指令与第二两个或更多个相关指令同时地执行,所述第二两个或更多个相关指令独立于所述第一两个或更多个相关指令。10.根据权利要求9所述的计算机实现的方法,其中所述应用编程接口是存储在计算机系统的存储器中的驱动程序。11.根据权利要求9所述的计算机实现的方法,其中所述第一两个或更多个相关指令和所述第二两个或更多个相关指令共同驻留在图形处理单元(“GPU”)的存储器中。12.根据权利要求9所述的计算机实现的方法,还包括:使第一组两个或更多个线程在第一时间点共同驻留;以及其中所述第一两个或更多个相关指令是所述第一组两个或更多个线程的部分。13.根据权利要求9所述的计算机实现的方法,其中共同驻留使一组共同驻留线程中的每个线程能够与所述一组共同驻留线程中的至少一个其他线程交互。14.根据权利要求9所述的计算机实现的方法,其中第一线程通过访问共享存储器、获得第二线程的状态、等待所述第二线程、或从所述第二线程发送或接收数据,来与所述第二
线程交互。15.根据权利要求9所述的计算机实现的方法,其中作为确定没有足够的计算资源可用于同时地执行所述第一两个或更多个相关指令的结果,所述一个或更多个电路阻止执行所述第一两个或更多个相关指令。16.根据权利要求15所述的计算机实现的方法,其中所述资源包括寄存器文件、存储器、共享存储器或处理器核心中的一个或更多个。17.一种计算机系统,包括一个或更多个处理器和存储可执行指令的存储器,所述可执行指令作为由所述一个或更多个处理器执行的结果,使所述计算机系统执行应用编程接...

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

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

1