CN103218259A - 计算任务的调度和执行 - Google Patents

计算任务的调度和执行 Download PDF

Info

Publication number
CN103218259A
CN103218259A CN2013100186186A CN201310018618A CN103218259A CN 103218259 A CN103218259 A CN 103218259A CN 2013100186186 A CN2013100186186 A CN 2013100186186A CN 201310018618 A CN201310018618 A CN 201310018618A CN 103218259 A CN103218259 A CN 103218259A
Authority
CN
China
Prior art keywords
processor
calculation task
cta
task
implemented method
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.)
Pending
Application number
CN2013100186186A
Other languages
English (en)
Inventor
卡里姆·M·阿夫达利亚
兰基·V·姗
杰尔姆·F·小杜鲁克
蒂莫西·约翰·珀塞尔
坦莫尼·曼德尔
广田源太郎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US13/353,150 external-priority patent/US9069609B2/en
Priority claimed from US13/353,155 external-priority patent/US9715413B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN103218259A publication Critical patent/CN103218259A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本发明的一个实施例阐述了用于选择包括在多个处理器中的第一处理器以接收与计算任务相关的工作的技术。该技术涉及分析多个处理器中的每一个处理器的状态数据以识别已经指派了一个计算任务并且有资格接收与该一个计算任务相关的工作的一个或多个处理器,从识别为有资格的一个或多个处理器的每一个接收指示处理器接收新任务的能力的可用性值,基于从该一个或多个处理器接收的可用性值来选择第一处理器以接收与该一个计算任务相关的工作,并且经由协作线程阵列(CTA)向该第一处理器发出与该一个计算任务相关的工作。

Description

计算任务的调度和执行
技术领域
本发明大体涉及计算任务,并且更具体地,涉及计算任务的调度和执行。
背景技术
用于在多处理器系统中执行的计算任务的常规调度依赖于应用程序或驱动程序。在计算任务的执行期间,允许驱动程序调度计算任务而所需的驱动程序和多处理器之间的交互可能延迟计算任务的执行。
因此,本领域需要的是用于基于处理资源和可用计算任务的优先级来动态调度计算任务用于执行的系统和方法。重要的是,调度机制不应取决于或要求软件或驱动程序交互。
发明内容
本发明的一个实施例阐述了用于选择包括在多个处理器中的第一处理器以接收与计算任务相关的工作的方法。该方法涉及分析多个处理器中的每个处理器的状态数据以识别已经被指派一个计算任务并且有资格接收与所述一个计算任务相关的工作的一个或多个处理器,从识别为有资格的所述一个或多个处理器中的每一个接收指示处理器接收新任务的能力的可用性值,基于从所述一个或多个处理器所接收的可用性值来选择第一处理器以接收与所述一个计算任务相关的工作,并且经由协作线程阵列(CTA)将与所述一个计算任务相关的工作发出给第一处理器。
本发明的另一个实施例阐述了用于将计算任务指派给包括在多个处理器中的第一处理器的方法。该方法涉及分析多个计算任务中的每个计算任务来识别有资格用于指派给第一处理器的一个或多个计算任务,其中每个计算任务均在第一表中列出,并且与优先级值和指示将所述计算任务添加到第一表的时间的分配顺序相关联。该技术进一步涉及基于优先级值和分配顺序中的至少一个来从所识别的一个或多个计算任务中选择第一计算任务,并且将第一计算任务指派给第一处理器用于执行。
进一步的实施例提供了非暂时性计算机可读介质和计算机系统以实现上述所阐述的各个方法。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图。
图2是根据本发明的一个实施例的,用于图1的计算机系统的并行处理子系统的框图。
图3A是根据本发明的一个实施例的,图2的任务/工作单元的框图。
图3B是根据本发明的一个实施例的,在图2的并行处理单元之一内的通用处理集群的框图。
图3C是根据本发明的一个实施例的,图3B的流多处理器的一部分的框图。
图4A-4B示出了根据本发明的一个实施例的,用于将任务指派给图3A-3C的流多处理器(SM)的方法。
图5示出了根据本发明的一个实施例的,用于选择SM以接收与任务相关的工作的方法。
具体实施方式
在下面的描述中,将阐述大量的特定细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些特定细节的情况下得以实施。
系统概述
图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括中央处理单元(CPU)102和经由可以包括存储器桥105的互连路径通信的系统存储器104。存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/输出)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘、鼠标)接收用户输入并且经由通信路径106和存储器桥105将所述输入转发到CPU102。并行处理子系统112经由总线或第二通信路径113(例如外围部件互连(PCI)Express、加速图形端口或超传输链路)耦合到存储器桥105;在一个实施例中,并行处理子系统112是将像素传递到显示设备110(例如传统的基于阴极射线管或液晶显示器的监视器)的图形子系统。系统盘114也连接到I/O桥107。交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。其他部件(未明确示出),包括通用串行总线(USB)或其他端口连接、压缩磁盘(CD)驱动器、数字视频光盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。图1所示的各种通信路径包括特殊命名的通信路径106和113可以使用任何适合的协议实现,诸如PCI-Express、AGP(加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议。
在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构,本文将更详细地进行描述。在又一个实施例中,可以将并行处理子系统112与一个或多个其他系统元件集成在单个子系统中,诸如结合存储器桥105、CPU102以及I/O桥107,以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数量和布置、CPU102的数量以及并行处理子系统112的数量,可根据需要修改。例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其他设备经由存储器桥105和CPU102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上而不是作为一个或多个分立设备存在。大型实施例可以包括两个或两个以上的CPU102以及两个或两个以上的并行处理系统112。本文所示的特定部件是可选的;例如,任意数量的插卡或外围设备都可能得到支持。在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107。
图2示出了根据本发明一个实施例的并行处理子系统112。如图所示,并行处理子系统112包括一个或多个并行处理单元(PPU)202,每个并行处理单元202都耦合到本地并行处理(PP)存储器204。通常,并行处理子系统包括U个PPU,其中U≥1。(本文中,类似对象的多个实体以标识该对象的参考数字和需要时标识所述实体的括号中的数字来表示。)PPU202和并行处理存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术可行的方式来实现。
再参考图1以及图2,在一些实施例中,并行处理子系统112中的一些或所有PPU202是具有渲染管线的图形处理器,它可以配置为实施与下述相关的各种操作:经由存储器桥105和第二通信路径113从CPU102和/或系统存储器104所提供的图形数据生成像素数据,与本地并行处理存储器204(可被用作图形存储器,包括例如常用帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110等等。在一些实施例中,并行处理子系统112可包括一个或多个作为图形处理器而操作的PPU202以及包括一个或多个用于通用计算的其他PPU202。这些PPU可以是相同的或不同的,并且每个PPU均可具有专用并行处理存储器设备或不具有专用的并行处理存储器设备。并行处理子系统112中的一个或多个PPU202可输出数据到显示设备110,或者并行处理子系统112中的每个PPU202均可输出数据到一个或多个显示设备110。
在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU102发出控制PPU202的操作的命令。在一些实施例中,CPU102为每个PPU202写入命令流到数据结构中(在图1或图2中未明确示出),所述数据结构可位于系统存储器104、并行处理存储器204、或CPU102和PPU202都可访问的其他存储位置中。将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。PPU202从一个或多个入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。可以经由设备驱动程序103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
现在返回参考图2和图1,每个PPU202均包括经由连接到存储器桥105(或者,在一个替代性实施例中,直接连接到CPU102)的通信路径113与计算机系统100的其余部分通信的I/O(输入/输出)单元205。PPU202到计算机系统100的其余部分的连接也可以变化。在一些实施例中,并行处理子系统112可作为插卡来实现,所述插卡可被插入到计算机系统100的扩展槽中。在其他实施例中,PPU202可以和诸如存储器桥105或I/O桥107的总线桥一起集成在单个芯片上。而在其他实施例中,PPU202的一些或所有元件可以和CPU102一起集成在单个芯片上。
在一个实施例中,通信路径113是PCI-EXPRESS链路,如本领域所知的,其中专用通道被分配到每个PPU202。也可以使用其他通信路径。I/O单元205生成用于在通信路径113上传输的数据包(或其他信号),并且还从通信路径113接收所有传入的数据包(或其他信号),将传入的数据包引导到PPU202的适当部件。例如,可将与处理任务相关的命令引导到主机接口206,而可将与存储器操作相关的命令(例如,对并行处理存储器204的读取或写入)引导到存储器交叉开关单元210。主机接口206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流输出到前端212。
有利地,每个PPU202都实现高度并行处理架构。如详细示出的,PPU202(0)包括处理集群阵列230,该阵列230包括C个通用处理集群(GPC)208,其中C≥1。每个GPC208都能够并发执行大量的(例如,几百或几千)线程,其中每个线程均是程序的实例(instance)。在各种应用中,可分配不同的GPC208用于处理不同类型的程序或用于执行不同类型的计算。取决于因每种类型的程序或计算所产生的工作量,GPC208的分配可以变化。
GPC208从任务/工作单元207内的工作分布单元接收所要执行的处理任务。所述工作分布单元接收指向编码为任务元数据(TMD)并存储在存储器中的处理任务的指针。指向TMD的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。可被编码为TMD的处理任务可包括在所要处理的数据阵列内的索引,以及定义数据将被如何处理(例如,什么程序将被执行)的状态参数和命令。任务/工作单元207从前端212接收任务并确保在每一个TMD所指定的处理发起前,将GPC208配置为有效状态。可以为每个TMD指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,TMD可包括控制是否将TMD添加到处理任务列表(或指向处理任务的指针列表)的头部或尾部的参数,从而提供除优先级以外的另一级别的控制。
存储器接口214包括D个分区单元215,每个分区单元215均直接耦合到一部分并行处理存储器204,其中D≥1。如所示的,分区单元215的数量一般等于动态随机存取存储器(DRAM)220的数量。在其他实施例中,分区单元215的数量也可以不等于存储器设备的数量。本领域的技术人员应该理解DRAM220可以用其他合适的存储设备来替代并且可以是一般常规的设计。因此省略了详细描述。诸如帧缓冲区或纹理映射图的渲染目标可以跨DRAM220加以存储,这允许分区单元215并行写入每个渲染目标的各部分以有效地使用并行处理存储器204的可用带宽。
任意一个GPC208都可以处理要被写到并行处理存储器204内的任意DRAM220的数据。交叉开关单元210配置为路由每个GPC208的输出到任意分区单元215的输入或到另一个GPC208用于进一步处理。GPC208通过交叉开关单元210与存储器接口214通信,以对各种外部存储器设备进行读取或写入。在一个实施例中,交叉开关单元210具有到存储器接口214的连接以和I/O单元205通信,以及到本地并行处理存储器204的连接,从而使得在不同GPC208内的处理内核能够与系统存储器104或对于PPU202而言非本地的其他存储器通信。在图2所示的实施例中,交叉开关单元210直接与I/O单元205连接。交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务流。
另外,GPC208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色、顶点着色、几何着色、和/或像素着色程序)等等。PPU202可将数据从系统存储器104和/或本地并行处理存储器204转移到内部(片上)存储器中,处理所述数据,并且将结果数据写回到系统存储器104和/或本地并行处理存储器204,其中这样的数据可以由其他系统部件访问,所述其他系统部件包括CPU102或另一个并行处理子系统112。
PPU202可配备有任意容量(amount)的本地并行处理存储器204,包括没有本地存储器,并且可以以任意组合方式使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)实施例中,PPU202可以是图形处理器。在这样的实施例中,将不提供或几乎不提供专用的图形(并行处理)存储器,并且PPU202会以排他或几乎排他的方式使用系统存储器。在UMA实施例中,PPU202可集成到桥式芯片中或处理器芯片中,或作为具有高速链路(例如,PCI-EXPRESS)的分立芯片提供,所述高速链路经由桥式芯片或其他通信手段将PPU202连接到系统存储器。
如上所述,在并行处理子系统112中可以包括任意数量的PPU202。例如,可在单个插卡上提供多个PPU202、或可将多个插卡连接到通信路径113、或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此相同或不同。例如,不同的PPU202可能具有不同数量的处理内核、不同容量的本地并行处理存储器等等。在存在多个PPU202的情况下,可并行操作那些PPU从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形式因素来实现,包括台式电脑、笔记本电脑或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等等。
多个并发任务调度
可以在GPC208上并发执行多个处理任务并且处理任务在执行期间可以生成一个或多个“子”处理任务。任务/工作单元207接收任务并动态调度处理任务和子处理任务以由GPC208执行。
图3A为根据本发明一个实施例的图2的任务/工作单元207的框图。任务/工作单元207包括任务管理单元300和工作分布单元340,以及状态304(下面结合图4A-4B详细描述其内容)。任务管理单元300基于执行优先级级别来组织所要调度的任务。对于每个优先级级别,任务管理单元300将指向与任务相对应的TMD322的指针列表存储在调度器表321中,其中所述列表可以实现为链表。可以将TMD322存储在PP存储器204或系统存储器104中。任务管理单元300接受任务并将任务存储在调度器表321中的速度与任务管理单元300调度任务以执行的速度是解耦的。因此,任务管理单元300可以在调度任务之前收集若干任务。如本文所进一步详细描述的,每个TMD322均包括与在PPU202内处置TMD322的方式相关的状态324。
工作分布单元340包括具有槽的任务表345,每个槽均可以被用于正在执行的任务的TMD322所占用。当任务表345中有空闲槽时,任务管理单元300可以调度任务以执行。当没有空闲槽时,未占用槽的较高优先级任务可以驱逐占用槽的较低优先级任务。当任务被驱逐时,该任务被停止,并且如果该任务的执行没有完成,则将指向该任务的指针添加到所要调度的任务指针列表以使得任务的执行稍后将恢复。在一些实施例中,恢复任务的位置存储在任务的TMD322中。当生成子处理任务时,在任务的执行期间,将指向该子任务的指针添加到所要调度的任务指针列表。可以由在处理集群阵列230中执行的TMD322生成子任务。如本文所进一步描述的,工作分布单元340还包括流多处理器(SM)状态342,其存储状态数据用于包括在PPU202中的每个SM310。
不同于由任务/工作单元207从前端212接收的任务,子任务从处理集群阵列230接收。子任务不被插入帧缓冲区或传输到前端。当生成子任务或将用于子任务的数据存储在存储器中时不通知CPU102。通过帧缓冲区提供的任务与子任务之间的另一个区别是通过帧缓冲区提供的任务由应用程序来定义而子任务是在任务执行期间自动生成的。
任务处理概述
图3B为根据本发明一个实施例的在图2的PPU202之一内的GPC208的框图。每个GPC208均可配置为并行执行大量线程,其中术语“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令、多数据(SIMD)指令发出技术用于在不提供多个独立指令单元的情况下支持大量线程的并行执行。在其他实施例中,单指令、多线程(SIMT)技术用于使用配置为向GPC208中的每一个内的处理引擎集发出指令的共有指令单元来支持大量一般来说同步的线程的并行执行。不同于所有处理引擎通常都执行相同指令的SIMD执行机制,SIMT执行通过给定线程程序允许不同线程更容易跟随分散执行路径。本领域普通技术人员应该理解SIMD处理机制代表SIMT处理机制的功能子集。
经由将处理任务分布到流多处理器(SM)310的管线管理器305来有利地控制GPC208的操作。管线管理器305还可配置为通过为由SM310所输出的处理数据指定目的地来控制工作分布交叉开关330。
在一个实施例中,每个GPC208均包括M个SM310,其中M≥1,每个SM310均配置为处理一个或多个线程组。另外,如本领域已知的,每个SM310均有利地包括可以管线化的相同的功能执行单元集(例如执行单元和加载-存储单元-作为Exec单元302和LSU303在图3C中示出),其允许在前一个指令完成之前发出新指令。可提供功能执行单元的任意组合。在一个实施例中,功能单元支持各种各样的操作,包括整数和浮点运算(例如加法和乘法)、比较操作、布尔操作(AND、OR、XOR)、移位和各种代数函数的计算(例如平面插值、三角函数、指数函数和对数函数等等);以及相同的功能单元硬件可均衡的用来(be leveraged to)实施不同的操作。
如本文之前所定义的,传输到特定GPC208的一系列指令构成线程,以及跨SM310内的并行处理引擎(未示出)的某一数量的并发执行线程的集合在本文中称为“warp”或“线程组”。如本文所使用的,“线程组”是指对不同输入数据并发执行相同程序的一组线程,所述组的一个线程被指派到SM310内的不同处理引擎。线程组可以包括比SM310内的处理引擎数量少的线程,在这种情况下一些处理引擎将在该线程组正在被处理的周期期间处于闲置状态。线程组还可以包括比SM310内的处理引擎数量多的线程,在这种情况下处理将在连续的时钟周期内发生。因为每个SM310均可以并发支持多达G个线程组,结果是在任意给定时间在GPC208中可以执行多达G*M个线程组。
此外,多个相关线程组可以在SM310内同时活动(在执行的不同阶段)。该线程组集合在本文中称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中并发执行线程的数量并且通常是SM310内的并行处理引擎数量的整数倍,以及m是SM310内同时活动的线程组的数量。CTA的大小一般由编程者以及可用于CTA的硬件资源诸如存储器或寄存器的容量来确定。
每个SM310均包含一级(L1)高速缓存(图3C所示)或使用用于实施加载和存储操作的SM310外部的相应L1高速缓存中的空间。每个SM310都还有权访问在所有GPC208之间共享并且可用于在线程之间转移数据的二级(L2)高速缓存。最后,SM310还有权访问片外“全局”存储器,所述“全局”存储器可以包括例如并行处理存储器204和/或系统存储器104。应该理解,PPU202外部的任意存储器均可用作全局存储器。此外,一点五级(L1.5)高速缓存335可以包括在GPC208内,其配置为接收并保持由SM310所请求的经由存储器接口214从存储器获取的数据,包括指令、标准(uniform)数据和常数数据,并将所请求的数据提供给SM310。在GPC208中具有多个SM310的实施例有利地共享了高速缓存在L1.5高速缓存335中的共有指令和数据。
每个GPC208均可以包括配置为将虚拟地址映射到物理地址中的存储器管理单元(MMU)328。在其他实施例中,MMU328可以驻留在存储器接口214内。MMU328包括用于将虚拟地址映射到像素块(tile)的物理地址的页表条目(PTE)集和可选地包括高速缓存线索引。MMU328可以包括地址转换后备缓冲区(TLB)或可以驻留在多处理器SM310或L1高速缓存或GPC208内的高速缓存。物理地址经处理以分布表面数据访问位置来允许高效请求在分区单元215之间交错。高速缓存线索引可用于确定用于高速缓存线的请求是否命中或未命中。
在图形和计算应用中,GPC208可配置为使得每个SM310均耦合到用于实施纹理映射操作例如确定纹理样本位置、读出纹理数据以及过滤该纹理数据的纹理单元315。从内部纹理L1高速缓存(未示出)或者在一些实施例中从SM310内的L1高速缓存读出纹理数据并根据需要从在所有GPC208之间共享的L2高速缓存、并行处理存储器204或系统存储器104中获取纹理数据。为了经由交叉开关单元210将所处理的任务提供给另一个GPC208用于进一步处理或为了将所处理的任务存储在L2高速缓存、并行处理存储器204或系统存储器104中,每个SM310均将所处理的任务输出到工作分布交叉开关330。preROP(预光栅操作)325配置为从SM310接收数据、将数据引导到分区单元215内的ROP单元以及针对颜色混合实施优化、组织像素颜色数据和实施地址转译。
应该理解本文所述的内核架构是示例性的并且各种变化和修改都是可能的。任意数量的处理单元例如SM310或纹理单元315、preROP325均可以包括在GPC208内。进一步地,如图2所示,PPU202可以包括任意数量的GPC208,所述GPC208有利地在功能上彼此相似以使得执行行为不取决于哪个GPC208接收特定处理任务。进一步地,每个GPC208有利地均使用单独的和各异的处理单元、L1高速缓存来独立于其他GPC208操作以为一个或多个应用程序执行任务。
本领域普通技术人员应该理解图1、2、3A和3B所描述的架构决不限制本发明的范围并且在不脱离本发明范围的情况下本文所教导的技术可以在任意经适当配置的处理单元上实现,所述处理单元包括但不限于一个或多个CPU、一个或多个多核CPU、一个或多个PPU202、一个或多个GPC208、一个或多个图形或专用处理单元等等。
在本发明的实施例中,使用PPU202或计算系统的其他处理器以使用线程阵列执行通用计算是可取的。为线程阵列中的每个线程均指派在线程的执行期间对于线程可访问的唯一的线程标识符(“线程ID”)。可被定义为一维或多维数值的线程ID控制线程处理行为的各方面。例如,线程ID可用于确定线程将要处理输入数据集的哪部分和/或确定线程将要产生或写输出数据集的哪部分。
每线程指令序列可包括定义代表性线程和线程阵列的一个或多个其他线程之间的协作行为的至少一个指令。例如,每线程指令序列可能包括在序列中的特定点处挂起用于代表性线程的操作执行直到诸如其他线程的一个或多个到达该特定点的时间为止的指令、用于代表性线程将数据存储在其他线程的一个或多个有权访问的共享存储器中的指令、用于代表性线程自动读出和更新存储在其他线程的一个或多个基于它们的线程ID有权访问的共享存储器中的数据的指令等等。CTA程序还可以包括计算数据将从其读出的共享存储器中的地址的指令,该地址是线程ID的函数。通过定义合适的函数并提供同步技术,可以以可预测的方式由CTA的一个线程将数据写入共享存储器中的给定位置并由同一个CTA的不同线程从该位置读出数据。因此,数据在线程之间共享的任意期望形式可以得到支持,以及CTA中的任意线程可以与同一个CTA中的任意其他线程分享数据。如果存在数据在CTA的线程之间的共享,则其范围由CTA程序确定;因此,应该理解在使用CTA的特定应用中,CTA的线程可能会或可能不会真正互相分享数据,这取决于CTA程序,术语“CTA”和“线程阵列”在本文作为同义词使用。
图3C为根据本发明一个实施例的图3B的SM310的框图。SM310包括配置为经由L1.5高速缓存335从存储器接收指令和常数的指令L1高速缓存370。warp调度器和指令单元312从指令L1缓冲370接收指令和常数并根据该指令和常数控制本地寄存器堆304和SM310功能单元。SM310功能单元包括N个exec(执行或处理)单元302和P个加载-存储单元(LSU)303。
SM310提供具有不同级别的可访问性的片上(内部)数据存储。特殊寄存器(未示出)对于LSU303可读但不可写并且用于存储定义每个线程的“位置”的参数。在一个实施例中,特殊寄存器包括每线程(或SM310内的每exec单元302)一个的存储线程ID的寄存器;每个线程ID寄存器仅由各自的exec单元302可访问。特殊寄存器还可以包括附加寄存器,其对于执行由TMD322所代表的同一个处理任务的所有线程(或由所有LSU303)可读,其存储CTA标识符、CTA维数、CTA所属网格(grid)的维数(或队列位置,如果TMD322编码队列任务而不是网格任务的话)、以及CTA被指派到的TMD322的标识符。
如果TMD322是网格TMD,则TMD322的执行会启动和执行固定数量的CTA以处理存储在队列525中的固定量的数据。将CTA的数量指定为网格宽度、高度和深度的乘积。可以将固定量的数据存储在TMD322中或TMD322可以存储指向将由CTA所处理的数据的指针。TMD322还存储由CTA所执行的程序的开始地址。
如果TMD322是队列TMD,那么使用TMD322的队列特点,这意味着将要被处理的数据量不一定是固定的。队列条目存储用于由指派到TMD322的CTA所处理的数据。队列条目还可以代表在线程执行期间由另一个TMD322所生成的子任务,从而提供嵌套并行性。通常线程或包括线程的CTA的执行被挂起直到子任务的执行完成。在一些实施例中,被挂起的线程或CTA保存它们的程序状态、将数据写到表示线程或CTA的继续部分的队列TMD并且随后退出,以便允许其它线程或CTA运行。可以将队列存储在TMD322中或与TMD322分开存储,在该情况下TMD322存储指向该队列的指针。有利地,当代表子任务的TMD322正在执行时可以将由子任务所生成的数据写到队列。队列可以实现为循环队列以使得数据的总量不限于队列的大小。
属于网格的CTA具有指示网格内各自CTA的位置的隐含网格宽度、高度和深度参数。在初始化期间响应于经由前端212从设备驱动程序103所接收的命令来写特殊寄存器并且在处理任务的执行期间特殊寄存器不改变。前端212调度每个处理任务用于执行。每个CTA均与特定TMD322相关联用于一个或多个任务的并发执行。此外,单个GPC208可以并发执行多个任务。
绑定到任务的参数存储器(未示出)存储可由该任务的任意线程(或任意LSU303)读取但不可由其写入的运行时间参数(常数)。在一个实施例中,设备驱动程序103在引导SM310开始执行使用参数的任务之前将这些参数提供给参数存储器。任意CTA内的任意线程(或SM310内的任意exec单元302)均可以通过存储器接口214访问全局存储器。可以将全局存储器的各部分存储在L1高速缓存320中。
每个线程均将本地寄存器堆304用作暂存空间;每个寄存器被分配以专用于一个线程,并且在本地寄存器堆304的任意一个中的数据仅对于寄存器被分配到的线程可访问。本地寄存器堆304可以实现为物理上或逻辑上分为P个通道的寄存器堆,每个通道具有一定数量的条目(其中每个条目可以存储例如32位字)。将一个通道指派到N个exec单元中和P个下载-存储单元LSU303的每一个,并且利用用于执行同一个程序的不同线程的数据来填充不同通道中的相应条目以帮助SIMD执行。可以将通道的不同部分分配到G个并发线程组中的不同线程组,以使得本地寄存器堆304中的给定条目仅对于特定线程可访问。在一个实施例中,保留本地寄存器堆304内的某些条目用于存储线程标识符,这实现特殊寄存器之一。此外,标准L1高速缓存375存储用于N个exec单元302和P个下载-存储单元LSU303的每个通道的标准或常数值。
共享存储器306对于单个CTA内的线程可访问;换言之,共享存储器306中的任意位置对于同一个CTA内的任意线程(或对于SM310内的任意处理引擎)可访问。共享存储器306可以实现为具有允许任意处理引擎对共享存储器中的任意位置读取或写入的互连的共享寄存器堆或共享片上高速缓存存储器。在其他实施例中,共享状态空间可能映射到片外存储器的每CTA区域上并被高速缓存在L1高速缓存320中。参数存储器可以实现为在实现共享存储器306的同一个共享寄存器堆或共享高速缓存存储器内的指定部分,或者实现为LSU303对其具有只读访问权限的单独的共享寄存器堆或片上高速缓存存储器。在一个实施例中,实现参数存储器的区域还用于存储CTA ID和任务ID,以及CTA和网格维数或队列位置,这实现特殊寄存器的各部分。SM310中的每个LSU303均耦合到统一地址映射单元352,统一地址映射单元352将为在统一存储器空间中所指定的加载和存储指令所提供的地址转换为每个相异存储器空间中的地址。因此,指令可以用于通过指定统一存储器空间中的地址来访问本地、共享或全局存储器空间中的任意一个。
每个SM310中的L1高速缓存320可以用于高速缓存私有的每线程本地数据还有每应用全局数据。在一些实施例中,可以将每CTA共享数据高速缓存在L1高速缓存320中。LSU303经由存储器和高速缓存互连380耦合到共享存储器306和L1高速缓存320。
计算任务的调度和执行
图4A-4B示出了根据本发明的一个实施例的,用于将任务指派给图3A-3C的SM310的方法。尽管结合图1-3C的系统描述了方法步骤,但本领域普通技术人员将理解配置为以任何顺序实施该方法步骤的任何系统均在本发明的范围内。
如图所示,方法400在步骤402开始,其中WDU340确定是否一个或多个TMD322包括在图3A的任务表345中。在步骤404,WDU340将包括在多个SM中的第一SM(例如,包括在PPU202内的SM310)设置为当前SM。在步骤406,WDU340将包括在任务表345中的第一TMD322设置为当前TMD。
在步骤408,WDU340确定是否当前TMD驻留在其中的任务表345槽已经接收到解除分配请求。在步骤408,如果WDU340确定当前TMD驻留在其中的任务表槽已经接收到解除分配请求,那么当前TMD不应该是任何SM310。相应地,方法400前进到步骤428,其中WDU340将包括在任务表345中的下一个TMD322设置为当前TMD。进而,方法400前进回到上述步骤408。
相反,在步骤408,如果WDU340确定当前TMD驻留在其中的任务表槽并未接收到解除分配请求,那么方法400前进到步骤410。
在步骤410,WDU340确定当前TMD是否包括CTA中尚未发出的工作。在步骤410,如果WDU340确定当前TMD不包括CTA中尚未发出的工作,那么方法400前进到上述步骤428。否则,方法400前进到步骤412。
在一个实施例中,每个TMD322均包括当该TMD322正被调度用于执行时,由例如任务管理单元300和工作分布单元340所设置的准静态状态。每个TMD322均还包括当执行该TMD322时被更新的动态状态,例如当发生用于TMD322的CTA启动和完成时。
存在包括在TMD322中的很多状态部件,其与在PPU202内处置TMD322的方式相关。在一个实施例中,TMD322包括用于跟踪包括在尚未完成的TMD322中的工作项的数目的状态。在一些情况下,连同指定在最终启动CTA用于执行之前所允许等待阈值时间量以积累最小所需数目的工作项的状态(以下称为“合并超时(coalescing timeout)”)一起,TMD322还可包括指定需要包括在被发出到SM310的每个CTA中的工作项的最小数目的状态(以下称为“合并规则(coalescing rules)”)。当TMD指定M个工作项/每CTA时,则由每个CTA读取N个项。例如,可能有多个将工作项写到队列TMD的TMD,其中队列TMD的每个CTA均处理N个工作项。这就将N个分离的工作项“合并”到一个CTA中。然而,多个TMD有可能并不生成被N所整除的数目的工作项,其导致留下未完成的部分工作项集。为了规避以上所述,在一个实施例中,TMD包括允许利用M个工作项来启动CTA的超时值,其中M<N。把M的值当做CTA的输入,并且写入与CTA相关联的指令以处理M个工作项或者N个工作项,其取决于M的值。
TMD322还包括指定TMD322执行优先级级别的状态,所述执行优先级级别例如在1-10的数字范围内的优先级级别,其中最低的数字表示最高的执行优先级级别。TMD322还包括指示TMD322驻留在其中的任务表345中的槽在由任务管理单元300调度后是否是有效槽——也就是其中尚未请求对TMD322的解除分配的状态。如以下结合图4A-4B所详细描述的,TMD322还可包括用于SM亲和规则(affinity rule)的状态,其指定可将TMD322指派到PPU202中的哪个SM310上。每个TMD322均还可包括指示是否TMD322仅当任务/工作单元207正操作于“节流模式”时才可执行的状态,所述“节流模式”涉及有权访问由包括在PPU202中的SM310可访问的所有共享存储器的单个CTA。在一个实施例中,当WDU340在节流和非节流模式之间切换时,切换模式的状况(status)存储在状态304中并且由WDU340进行更新。每个TMD322均还可包括指定TMD322为序列任务并且因此在任意给定时间可使至多一个CTA“正在处理(in flight)”(即,正由SM310所执行)的状态。
在步骤412,WDU340确定是否任务表345中的任何TMD322指示节流模式属性。在步骤412,如果WDU340确定任何TMD指示节流模式属性,则方法400前进到步骤414以确定在任务/工作单元207内是否激活了节流模式。在步骤414,如果WDU340确定在任务/工作单元207内未激活节流模式,则方法400前进到步骤450。如图所示,在步骤450,WDU340等待直到所有未完成的TMD322均被执行,即当激活时未指示节流模式的TMD322。随后方法400前进到步骤452,其中WDU340将节流状态发送到SM310的每一个。在一个实施例中,用于每个SM310的节流状态均既包括指示SM310可访问的共享存储器的一部分的大小的值,还包括共享存储器该部分开始处的基址。因此,当使能较少的SM310时,对每个SM310来说,指示共享存储器的一部分的大小的值增加。相反,当使能较多的SM310时,对每个SM310来说,指示共享存储器的一部分的大小的值减少。
在步骤454,WDU340激活节流模式,于是方法400前进回到步骤402。WDU340继续在节流模式下操作直到步骤412为假,即直到WDU340确定不再有包括在任务表345中的TMD322指示节流模式属性。相应地,WDU340在步骤413停用节流模式,于是方法400在步骤416处重新开始。
在步骤416,WDU340确定当前TMD是否为序列任务。在步骤416,如果WDU340确定当前TMD是序列任务,那么方法400前进到步骤418,其中WDU340确定当前TMD是否具有正在处理的CTA,即当前正由SM310所执行的CTA。在步骤418,如果WDU340确定当前TMD具有正在处理的CTA,那么方法400前进到上述步骤428。否则,方法400前进到如下所述的步骤420。
现在返回参考步骤416,如果WDU340确定当前TMD不是序列任务,那么方法400前进到步骤419。在步骤419,WDU340确定当前TMD322的启动配额,如果有的话,是否被满足。在一个实施例中,每个TMD322均既包括启动配额使能位,也包括启动配额值。当启动配额使能位设置为“真”时,WDU340确定是否已经启动相当于启动配额值的若干CTA。相应地,在步骤419,如果WDU340确定TMD322的启动配额,如果有的话,已被满足,那么方法400前进到步骤460。
在步骤460,WDU340解析任务表345并且选择具有与当前TMD相同的优先级的TMD322,于是WDU340将所选择的TMD322设置为当前TMD322。随后方法400前进到步骤402。
现在返回参考步骤419,如果WDU340确定TMD322的启动配额未被满足,或对于TMD322未指定启动配额,那么方法前进到步骤420。
在步骤420,WDU340确定当前TMD的亲和规则或节流模式参数是否禁止将当前TMD指派给当前SM。在步骤420,如果WDU340确定当前TMD的亲和规则或节流模式参数禁止将当前TMD指派给当前SM,那么方法400前进到步骤428,如上所述。否则,在步骤424,WDU340将当前TMD添加到与当前SM相对应的任务列表。
在步骤426,WDU340确定在任务表中是否包括附加的TMD322。在步骤426,如果WDU340确定在任务表345中包括附加的TMD322,那么方法400前进到步骤428,如上所述。这样,包括在任务表345中的每个TMD322均与当前SM相比较以确定哪一个TMD322最有资格被指派给当前SM,如以下在步骤434中所述。
然而,在步骤426,如果WDU340确定在任务表345中不包括附加的TMD322,那么所有TMD322均已经与当前SM相比较,并且因此方法400前进到步骤430。在步骤430,WDU340基于与包括在任务列表中的每个TMD322相关联的执行优先级值来执行初级类别的任务列表。在步骤432,WDU340基于与包括在任务列表中的每个TMD322相关联的时间戳值来执行次级类别的任务列表,其中时间戳值表示TMD322插入到任务表345中的时间。在一个实施例中,时间戳值维护在状态304中或者可作为列包括在任务表345内。
在一些实施例中,代替时间戳,WDU340维护包括在任务表345中的槽的分类列表,其中每次分配或解除分配新任务时分别插入或删除在列表中的条目。因此,槽的分类列表保持为有组织的并且仅在每次分配或删除任务时被重新分类,使得具有最高优先级值的最旧的TMD322可被容易地识别并且指派给当前SM,如以下在步骤434所述。
在步骤434,WDU340将具有最高优先级值和最旧时间戳值的TMD322指派给当前SM。在一个实施例中,当TMD322在步骤434被指派给当前SM时,当前SM具有由WDU340设置并且存储在SM状态342中的与其相关联的状态。此后,当在当前SM上执行与指派给当前SM的TMD322相对应的CTA时,WDU340修改状态,如以下结合图5所详细描述的。在一个实施例中,状态包括若干属性,其包括指示有资格的TMD是否被指派给当前SM的“TASK_ASSIGN”。状态还可包括“STATE_SYNC”属性,其指示WDU340是正在等待发出TMD322状态更新到当前SM,还是正在等待当前SM确认状态更新,如以下在步骤438所进一步详细描述的。状态还可包括“CTA_LAUNCH”属性,其指示当前SM准备好从步骤434的TMD322接收并且执行CTA(受限于具有接收和执行CTA的能力的当前SM)。其他状态可用于导出用于当前SM的CTA可用性值,如以下结合图5所述,其表示WDU340可立即启动到当前SM的附加的CTA的数量(即,在WDU340从当前SM接收到任何更多CTA完成信息之前)。
在步骤436,WDU340确定不是当前TMD的TMD322是否之前被指派给当前SM。在步骤436,如果WDU340确定不是当前TMD的TMD322之前被指派给当前SM,那么方法400前进到步骤438,其中WDU340将与当前TMD相关联的状态数据发送给当前SM。否则,方法400前进到步骤440。
在步骤440,WDU340确定在多个SM310中是否包括附加的SM310。在步骤440,如果WDU340确定在多个SM310中包括附加的SM310,那么方法400前进到步骤442,其中WDU340将包括在多个SM310中的下一个SM310设置为当前SM。然而,如果WDU340在步骤440确定在多个SM中不包括附加的SM,那么方法400前进回到步骤402,并且根据本文的技术重复方法400。
因此,在方法400的结束处,如果包括在任务表345中的TMD322存在的话,则取决于例如所述TMD322的状态数据,已对0个或多个SM310指派了TMD322。结合持续地将不同的TDM322指派给不同的SM310,工作分布单元340还配置为持续地选择SM,应向所述SM发出来自指派给一个SM的TMD322的CTA,下面结合图5对其加以描述。
图5示出了根据本发明的一个实施例的,用于选择SM310以接收与任务相关的工作的方法500。尽管结合了图1-3C的系统来描述方法步骤,但是本领域技术人员将理解,配置为以任何顺序实施方法步骤的任何系统都落在本发明的范围之内。
如图所示,方法500在步骤502开始,其中WDU340从包括在PPU202中的每个SM310接收以下指示:如果有与SM310相关联的TMD322的话,SM310是否有资格从该TMD322接收CTA。在一个实施例中,该指示以“ready(准备就绪)”状况的形式进行传送,其源自于与SM310相关联的并且存储在图3A的SM状态342中的状态。在一个示例中,如果SM310已经被指派了TMD322(例如,根据以上结合图4A-4B的所述的方法步骤400)并且与TMD322相关联的状态已经发送到SM310并且由其确认(例如,根据方法400的方法步骤438),则SM310被确定为准备就绪。还可基于WDU340是否正操作在以上结合图4A-4B所述的节流模式来确定SM310为使能或禁用。指派给SM310的TMD322要求本文所述的节流模式是活动的并且任务/工作单元207实际上正操作在节流模式。可基于指派给SM310的TMD322是否满足任何合并规则来进一步确定SM310为准备就绪。例如,指派给SM310的TMD322可指示在CTA发出到SM310之前,最少8个未完成的工作项必须包括在例如与TMD322相关联的工作项队列中。而且,为了规避包括在TMD322中的未完成工作项的数量大于0但不会超过每CTA的未完成工作项的阈值最小值数量的情况,可实现如以上结合图4A-4B所述的合并超时。假设TMD322和/或SM310满足结合步骤502所述的附加的资格要求,则当合并超时发生时,SM310成为有资格从TMD322接收CTA。
在步骤506,WDU340确定负载平衡模式或循环模式是否是活动的。在一个实施例中,由存储在任务/工作单元207的状态304中的单个位值来管理活动模式。
在步骤508,WDU340从有资格的SM310中的每一个接收CTA可用性值。在一个实施例中,CTA可用性值是指示SM310所具有的接受和执行附加CTA的总体能力的数值。该数量由每个SM310计算,并且基于例如正由SM310所执行的CTA的当前数量、最近指派给SM的任务的每CTA资源需求以及SM310可用的空闲资源的总量等等。
在步骤510,WDU340基于CTA可用性值来执行一类有资格的SM310。在步骤512,WDU340确定是否两个或两个以上SM310共享同一个最高CTA可用性值。在步骤512,如果WDU340确定两个或两个以上SM310共享同一个最高CTA可用性值,那么方法500前进到步骤514,其中WDU340基于固定的SM优先级列表来选择这两个或两个以上SM310中的一个。在一个实施例中,固定的优先级列表包括在任务/工作单元207的状态304中。
现在返回参考步骤512,如果WDU340确定两个或两个以上SM310不共享同一个最高CTA可用性值,那么方法500前进到步骤516,其中WDU利用最高CTA可用性值来选择SM310。
在步骤518,WDU340向所选择的SM310发出指派给所选择的SM310的TMD322的CTA。随后方法500前进回到步骤502,其中重复方法步骤500使得只要存在至少一个指派给一个或多个SM310的TMD322,则WDU340就持续地将CTA发出到该一个或多个SM310并且包括尚未由任何SM310所执行的工作。
现在返回参考步骤506,如果WDU340确定任务/工作单元207的活动模式指示了循环模式,那么方法500前进到步骤520。在步骤520,WDU340从在步骤502所确定的有资格的SM310中选择数字上的下一个SM310。在一个实施例中,WDU340维护CTA被发出给其的最后一个SM的状态304中的识别值。这样,WDU340可通过持续地向具有数字上的下一个SM识别值的SM发出CTA并且相应地更新状态304中的识别值来实现循环技术。
可将本发明的一个实施例实现为用于与计算机系统一起使用的程序产品。程序产品的程序定义了实施例的功能(包括本文所述的方法)并且可被包含在各种各样的计算机可读存储介质上。示例性的计算机可读存储介质包括但不限于:(i)永久地将信息存储在其上的非可写存储介质(例如,诸如由CD-ROM驱动器可读的光盘只读存储器(CD-ROM)、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器的计算机内的只读存储器设备);以及(ii)将可更改信息存储在其上的可写存储介质(例如,软盘驱动器内的软盘、硬盘驱动器或者任何类型的固态随机存取半导体存储器)。
上文已经参考特定实施例描述了本发明。然而,本领域普通技术人员将理解,在不脱离如在所附的权利要求中所阐述的本发明的更宽的精神和范围的情况下可做出各种修改和改变。因此,前述描述和附图视为示例性的而不是限制性的意义。

Claims (12)

1.一种用于选择包括在多个处理器中的第一处理器以接收与计算任务相关的工作的计算机实现的方法,所述方法包括:
分析所述多个处理器中的每个处理器的状态数据以识别已被指派一个计算任务并且有资格接收与所述一个计算任务相关的工作的一个或多个处理器;
从识别为有资格的所述一个或多个处理器的每一个接收指示所述处理器接收新工作的能力的可用性值;
基于从所述一个或多个处理器所接收的所述可用性值来选择第一处理器以接收与所述一个计算任务相关的工作;以及
经由协作线程阵列(CTA)向所述第一处理器发出与所述一个计算任务相关的所述工作。
2.根据权利要求1所述的计算机实现的方法,其中当与所述一个计算任务相关联的所述状态数据已由处理器所接收并确认时,处理器被识别为有资格的。
3.根据权利要求1所述的计算机实现的方法,其中当所述一个计算任务与数目大于或等于由所述一个计算任务所指示的每CTA工作项的阈值数目的未完成工作项相关联时,处理器被识别为有资格的。
4.根据权利要求1所述的计算机实现的方法,其中当已出现超时期,并且与所述一个计算任务相关联的未完成工作项的数目不超过由所述一个计算任务所指示的每CTA工作项的阈值数目时,处理器被识别为有资格的。
5.根据权利要求1所述的计算机实现的方法,其中当所述一个计算任务指示节流模式应被激活并且所述多个处理器正操作在所述节流模式中时,处理器被识别为有资格的,以及其中在所述节流模式中,所述第一处理器包括在所述多个处理器的受限子集中并且在所述受限子集内的每个处理器均被允许访问大于存储器第二部分的存储器第一部分,所述存储器第二部分通常在非节流模式中处理计算任务时对所述多个处理器中的每个处理器可用。
6.一种用于将计算任务指派给包括在多个处理器中的第一处理器的计算机实现的方法,所述方法包括:
分析多个计算任务中的每个计算任务以识别有资格指派给所述第一处理器的一个或多个计算任务,其中每个计算任务均列出在第一表中并且与优先级值和指示所述计算任务添加到所述第一表的时间的分配顺序相关联;
基于所述优先级值和所述分配顺序中的至少一个来从所识别的一个或多个计算任务中选择第一计算任务;以及
指派所述第一计算任务给所述第一处理器用于执行。
7.根据权利要求6所述的计算机实现的方法,其中当与计算任务相关联的解除分配请求尚未发出时,所述计算任务被识别为有资格的。
8.根据权利要求6所述的计算机实现的方法,其中当计算任务包括尚未经由协作线程阵列(CTA)发出到所述多个处理器中的任何所述处理器的工作时,所述计算任务被识别为有资格的。
9.根据权利要求6所述的计算机实现的方法,其中当必须在节流模式中对计算任务进行处理时,所述计算任务被识别为有资格的,以及其中在所述节流模式中,所述第一处理器包括在所述多个处理器的受限子集中并且在所述受限子集内的每个处理器均被允许访问大于存储器第二部分的存储器第一部分,所述存储器第二部分通常在非节流模式中处理计算任务时对所述多个处理器中的每个处理器可用。
10.根据权利要求6所述的计算机实现的方法,其中当计算任务要求在任何给定时间仅能执行一个CTA并且没有与所述计算任务相关联的CTA当前正在由所述多个处理器中的任何所述处理器所执行时,所述计算任务被识别为有资格的。
11.根据权利要求6所述的计算机实现的方法,其中当与计算任务相关联的亲和规则不禁止与所述计算任务相关联的任何所述CTA由所述第一处理器所执行时,所述计算任务被识别为有资格的。
12.根据权利要求6所述的计算机实现的方法,其中当与计算任务相关联的所执行的CTA的数目尚未达到阈值时,所述计算任务被识别为有资格的。
CN2013100186186A 2012-01-18 2013-01-18 计算任务的调度和执行 Pending CN103218259A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/353,150 US9069609B2 (en) 2012-01-18 2012-01-18 Scheduling and execution of compute tasks
US13/353,155 2012-01-18
US13/353,155 US9715413B2 (en) 2012-01-18 2012-01-18 Execution state analysis for assigning tasks to streaming multiprocessors
US13/353,150 2012-01-18

Publications (1)

Publication Number Publication Date
CN103218259A true CN103218259A (zh) 2013-07-24

Family

ID=48693327

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013100186186A Pending CN103218259A (zh) 2012-01-18 2013-01-18 计算任务的调度和执行

Country Status (3)

Country Link
CN (1) CN103218259A (zh)
DE (1) DE102013100169A1 (zh)
TW (1) TW201351276A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104182853A (zh) * 2014-09-12 2014-12-03 河海大学常州校区 一种引航员指派模型建立及其求解方法
CN109522101A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
CN109804351A (zh) * 2016-10-11 2019-05-24 微软技术许可有限责任公司 对异步计算作业的增强治理
CN110096341A (zh) * 2018-01-31 2019-08-06 辉达公司 执行资源的动态分区

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032407B (zh) * 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065953A1 (en) * 2000-05-08 2002-05-30 Alford G. Christian Priority in a portable thread environment
CN101339523A (zh) * 2007-07-05 2009-01-07 国际商业机器公司 多处理器环境中的流水线处理方法和设备
CN101466041A (zh) * 2009-01-16 2009-06-24 清华大学 一种用于多核处理器的多视点视频编码的任务调度方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065953A1 (en) * 2000-05-08 2002-05-30 Alford G. Christian Priority in a portable thread environment
CN101339523A (zh) * 2007-07-05 2009-01-07 国际商业机器公司 多处理器环境中的流水线处理方法和设备
CN101466041A (zh) * 2009-01-16 2009-06-24 清华大学 一种用于多核处理器的多视点视频编码的任务调度方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104182853A (zh) * 2014-09-12 2014-12-03 河海大学常州校区 一种引航员指派模型建立及其求解方法
CN104182853B (zh) * 2014-09-12 2017-11-17 河海大学常州校区 一种引航员指派模型建立及其求解方法
CN109804351A (zh) * 2016-10-11 2019-05-24 微软技术许可有限责任公司 对异步计算作业的增强治理
CN109804351B (zh) * 2016-10-11 2023-07-14 微软技术许可有限责任公司 对异步计算作业的增强治理
CN109522101A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
CN110096341A (zh) * 2018-01-31 2019-08-06 辉达公司 执行资源的动态分区
CN110096341B (zh) * 2018-01-31 2023-07-11 辉达公司 执行资源的动态分区

Also Published As

Publication number Publication date
DE102013100169A1 (de) 2013-07-18
TW201351276A (zh) 2013-12-16

Similar Documents

Publication Publication Date Title
CN103207774B (zh) 用于解决线程发散的方法和系统
CN103365631B (zh) 用于存储器访问的动态库模式寻址
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
CN103425533A (zh) 用于管理嵌套执行流的方法和系统
TWI490782B (zh) 來源運算元收集器快取的方法和裝置
CN103226481A (zh) 自动从属任务启动
CN103777926A (zh) 多线程处理单元中的高效存储器虚拟化
CN103309702A (zh) 用于并行线程子集的一致加载处理
CN104050033A (zh) 用于有索引的屏障的硬件调度的系统和方法
CN103778072A (zh) 多线程处理单元中的高效存储器虚拟化
CN103729167A (zh) 用于改进多线程处理单元中的性能的技术
CN103777925A (zh) 多线程处理单元中的高效存储器虚拟化
US9069609B2 (en) Scheduling and execution of compute tasks
CN103226463A (zh) 用于使用预解码数据调度指令的方法和装置
CN103279379A (zh) 用于在没有指令解码的情况下调度指令的方法和装置
CN103294753A (zh) 无锁先入先出
CN104050032A (zh) 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法
CN103885893A (zh) 用于访问内容寻址存储器的技术
CN103885902A (zh) 用于经由纹理硬件实施存储器访问操作的技术
CN103559088A (zh) 维持公平性和顺序的资源管理子系统
CN103218309A (zh) 多级指令高速缓存预取
CN103294536A (zh) 控制用于处理任务的工作分布
CN103425534A (zh) 在许多应用之间共享的图形处理单元
CN103257931A (zh) 成形的寄存器堆读取
CN103176848A (zh) 计算工作分布参考计数器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130724