用于使用虚拟任务对多核处理器进行性能分析的关系建模的制作方法

文档序号:6340954阅读:153来源:国知局
专利名称:用于使用虚拟任务对多核处理器进行性能分析的关系建模的制作方法
用于使用虚拟任务对多核处理器进行性能分析的关系建模
背景技术
本发明一般涉及多核处理器,具体涉及多核机器的性能分析。现代的通用和图形处理器可包括一个或多个核。这些处理器可运行大量的线程。因此,在给定任务量以及可能运行的不同线程的数量的情况下,分析处理器的性能可能涉 及复杂的任务。通常,痕迹(trace)是在处理器上运行的任务之间的时间顺序的图形描述。基于 软件的痕迹分析使软件设计者能够理解任务间的操作顺序。然而,多核处理器可能需要更复杂的分析。附图简述

图1是本发明的一个实施例的示意图;图2是描绘图1所示的实施例所使用的程序的流程图;图3是根据本发明的一个实施例的基于任务的关系模型的可视化;图4是根据本发明的一个实施例产生的父/子关系的可视化;图5是根据本发明的另一实施例的依赖关系的可视化;以及图6是根据一个实施例的虚拟任务可视化的描绘图;图7是根据一个实施例的另一虚拟任务可视化的描绘图;以及图8是一个实施例的流程图。详细描述根据本发明的一些实施例,代码组块调用任务之间的除时间顺序之外的关系可以 被可视化。任务是用于调度和执行的任何普通工作单元。它可以是具有开始和结束的代码 的任何部分。它的持续时间可被定义为用于执行该任务的循环数量。痕迹是任务之间的连接。关系模型根据父-子、同属、依赖性以及生产者和消费者 给出任务之间的关系。也可使用其他关系。第一任务和由第一任务产生的第二任务之间存在父/子关系。当第一任务依赖第 二任务来执行时,第一和第二任务存在依赖关系。生产者/消费者关系意味着第一任务创 建数据并将其放置在缓冲器中,然后第二任务使用来自缓冲器中的该数据。原语是关系一方的任何实体。任务是一种类型的原语。另一种原语被称为参数。 参数可以是缓冲器、名-值对、字符串、或与任务有关系的任何类型的标准数据类型或结 构。也可使用其他原语。参照图1,性能分析工具10可包括控件12,该控件12可以是处理器。该处理器可 以是多核处理器。在一个实施例中,该处理器可以是图形处理器,而在一个实施例中,该处 理器可以是单指令多数据(SIMD)多核处理器。控件12被耦合到存储器14,该存储器14可 储存该工具的图形用户界面(GUI) 16或前端、编码原语和原语之间的关系的多个序列或应 用编程接口(API) 18、以及提供可用功能的工具箱的库20。该控件可耦合到输入/输出22 以允许用户输入信息以及接收输出。显示器24可用于使包括任务的原语之间的关系可视 化。
性能分析工具10可被软件开发人员用于通过了解原语(诸如在该软件内的任务)之间的关系来提高他们的软件性能。通过理解这些关系,软件开发人员可了解如何提高软 件的性能。一般而言,软件开发人员开发两个版本的代码。代码的一个版本是仅执行需要的 功能(诸如游戏)的代码。代码的另一版本内包括API 18,在一些实施例中,API 18创建 原语关系的可视化(但是,在其他实施例中,在没有可视化的情况下二进制输出可被用于 进一步分析)。具有API版本的代码被称为操纵代码。将操纵代码流送到前端图形用户界 面16使设计者能够看到代码的进展。它显示了在代码中运行的线程、在线程内的任务、以 及最重要的那些任务之间的功能关系。参照图2,通过应用编程接口 18实现的序列由接收线程选择开始,如框22所示。 接着,如框24所示,选择原语标识符。在框26,该标识符被登记。而后,在框28,向原语分 配标识符。此时,设计者于是输入选定原语与其他原语之间的关系。所选原语被称为“这个” 原语,而与这个原语有关系的原语被称为“那些”原语。在一些实施例中,序列18自动隐含超出那些通过设计者所输入的一些关系。举例 而言,如果第一任务是第二任务的父,则意味着这第二任务是该父的子。同样,如果第一任 务与第二任务相关并且第二任务与第三任务相关,则意味着该第一任务与第三任务也相关 并隐含该关系的本质。这可被称为传递关系或其他关系所隐含的关系。在一些实施例中, 传递关系的使用减少了用户数据输入的负担。此外,可能有一个或N个扇出关系。举例而 言,在一些实施例中,单个父可产生任何数量的子,且所有那些子不需要另行编码。此外,序列18向各个原语标识符提供时间戳。它也提供任何任务开始与结束的时 间作为输出。因此,在一个实施例中,它可将一连串的线程显示为图表中的行。每个行可包 括线程中任务的序列。此外,嵌套任务也可通过可视化表示,诸如将嵌套任务显示为延伸出 在其中执行该嵌套任务的任务。用户可点击特定任务,且响应于该任务选择,可以图形化地 显不其关系。相对基于时间的跟踪系统,系统10可以是基于关系的。任务和不同缓冲器间的时 间关系没有任务之间的关系重要。在一些实施例中,示出了任务内的关系,甚至在一些实施 例中这些任务无相对时序。因此,在该线程内,任务的时间顺序可显示,但在一些实施例中, 不同线程中的任务的时间顺序可能不显示。在一些实施例中,相对于时间关系,功能关系可 以被可视化。功能关系是任务之间的除时间顺序之外的任何关系。在一个实施例中,各个任务可以由矩形表示,矩形在χ方向的长度是执行该功能 需要的时长的函数。在一些实施例中,可使用鼠标点击和拖动的技术选择多个任务以显示 那些选定任务和任何其他任务之间的关系。因此,作为简单示例,参照图3,存在四个原语,包括三个任务36、38和42以及一个 缓冲器40形式的参数。箭头44、52、50以及48示出了这些任务之间的关系。例如,顶点任 务38可将其结果放置在缓冲器40中,并且那些结果可由任务42使用。因此,任务38是生 产者而任务42是消费者。由于顶点任务38由绘图任务36创建,因此箭头52表示该顶点 任务是绘图任务36的子。同样,像素任务42依赖于顶点任务38执行,因此箭头46表示该 依赖性。因此,在一些情况下,任务之间可以有多重关系。此外,也存在多个对象类型。
回到图2,在框28,在向原语分配标识符后,接着输入这个原语的关系,如框30所 示。虽然在此描述了手动技术,但也可构想自动技术,在自动技术中代码分析导致在无需用 户干预的情况下就可自动输入关系。而后,在菱形32中,检查确定是否还有原语需要编码。如果有,则该流程重复。否 贝1J,菱形34处的检查确定是否还有线程需要编码。如果有,则该流程重复。否则,该流程结 束。图4示出了父/子关系的可视化示例。在一个实施例中,可视化可以是具有鼠标 可选任务或原语描述的图形用户界面。在该示例中,仅示出四个线程。对于每个线程,任务 由矩形表示。在这种情况下,用户已选择了第二线程中的父任务B。作为响应,父/子关系的可 视化自动生成。换句话说,箭头从任务B延伸到第三线程中的一连串任务C,任务C是任务 B的子。此外,箭头从第三线程中的任务C延伸至第四线程中的任务C,该任务C是父任务 B的孙。图5是依赖关系的可视化。图5对应于图4,除了现在用户选择的任务B依赖于任 务A、C、D和E。S卩,任务B依赖来自任务A的输入,如由标记为“传入依赖性”的箭头所表 示。任务C、D和E依赖标记为“传出依赖性”的任务B的输出。因此,可视化显示了不同线 程的任务之间的功能关系。在一些诸如渲染通道(rendering pass)的图形应用中,在此之前所描述的技术不 能启用任务可视化。然而,渲染通道可以是由程序执行的操作的有用度量,且可以是用于在 应用开发人员水平进行概况分析的理想工具。因为图形应用编程接口不包含实际上表示渲染通道的显函数,由于渲染通道在一 连串的API调用中隐式创建,所以它不能使用在此之前所描述的技术来编码。因此,这样隐 式创建的任务可利用虚拟任务来可视化。作为更具体的示例,以下调用示例可在Direct X API中进行SetRenderTarget(I)Draw (draw_args_l)Draw (draw_args_2)SetRenderTarget (2)Draw(draw_args_3)在该代码中发生的是绘图1和绘图2是第一渲染目标操作的部分,而绘图3是第 二渲染目标操作的部分。该操作在硬件中执行,且仅造成操作本身的命令是绘图命令。设 置渲染目标的命令仅仅是状态设定,而不产生操作本身。为解决这个问题,在一些实施例中 可使用虚拟任务。虚拟任务可在设置渲染目标调用中被创建SetRenderTarget(X) {
TAL_BeginVirtualTask("RenderTarget");
TAL_SetCurrentTaskID(x->renderTargetID);
TAL_EndVirtualTask()
}在常规任务的情况下,由于任务的持续时间可能是感兴趣的,所以开始和结束调 用的时间戳被记录。然而,在以上设定渲染目标的示例中,实际任务一完成就结束;相反,它 是稍后完成的真实操作的占位符。为将实际持续时间给予虚拟任务,其他非隐式创建的或实际编码任务可能与虚拟 任务相关联。举例而言,当创建一绘图调用任务时,该绘图调用任务是实际虚拟任务的子。 就该虚拟任务的概念而言,设定渲染目标的持续时间可被给予一持续时间,从而呈现给用 户渲染目标虚拟任务的列表并基于它们所有的相关任务计算它们的持续时间。然后,通过利用虚拟任务的子任务中的最小的和最大的子任务,虚拟任务可在时 间线上被可视化,如图6中所示。根据父-子关系,可产生如图6所示的可视化。举例而言, 渲染目标1的基本任务可被绘制成绘图1和绘图2的子,而渲染目标2可被示为绘图3的 子。因而,渲染目标1和渲染目标2获取一持续时间,即使该持续时间基本是相关绘图调用 的持续时间,诸如设定渲染目标1情况下的绘图1和绘图2以及设定渲染目标2情况下的 绘图3。虚拟任务也可用于显示更多有关复杂任务的信息,以使在没有详细信息的情况下 完成基本概况分析。在渲染目标示例中,仅虚拟任务(渲染目标2、渲染目标3)可以在应用 运行中显示,如图7所示。在大量线程的情况下,在有些情况下,图7可比图6所示描述得 更清楚,。例如,在128个不同线程的情况下,它们各个本身包含几十万个任务,设定渲染目 标2执行最长,而设定渲染目标3可能依赖于设定渲染目标2的完成。这一见解可使设计 者能够或者停止概况分析而立刻采取行动,也许通过允许设定渲染目标2和3共同执行,或 者通过优化设定渲染目标2,既然已知这是耗费时间的。参照图8,用于输入虚拟任务的序列60可以是一个模块或API 18的一部分,如图 2所示。最初,虚拟任务开始,如框62所示,如同它是一个真实的任务。而后,也如同该虚拟 任务是真实任务,在框64设定当前任务标识符。接着,在框66,该任务与另一任务相关联。 例如,设定渲染目标虚拟任务可与一个或多个绘图调用相关联,如例如图6所示。该关联提 供虚拟任务持续时间。最后,虚拟任务结束(框68)。简而言之,虚拟任务可用于为复杂、高度并行软件建立概况分析工具。没有它们, 概况分析工具不可能显示得比执行API的机制更多,这在一些情况下会妨碍获得简单且关 键的性能。在一些实施例中,利用虚拟任务,得到一抽象允许这样的问题从开始时更清楚, 从而实现更高产以及高效的自上而下的概况分析。本文中所描述的图形处理技术可在各种硬件体系结构中实现。例如,图形功能可 被集成在芯片组中。替代地,可使用分立的图形处理器。作为另一实施例,图形功能可由包 括多核处理器的通用处理器实现。在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例” 或“在一实施例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与 所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可包含在本申请的权 利要求中。 虽然已经关于有限个实施例描述了本发明,但本领域技术人员将会理解从中得出 的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修 改和变化。
权利要求
1.一种方法,包括接收在多核处理器中隐式创建的任务的标识;以及使所述隐式创建的任务与实际编码任务相关联。
2.如权利要求1所述的方法,其特征在于,包括提供实际编码和隐式创建的任务之间 的关系的可视化。
3.如权利要求1所述的方法,其特征在于,包括指示所述任务之间的关系。
4.如权利要求3所述的方法,其特征在于,指示所述任务之间的关系包括指示所述隐 式创建任务的持续时间。
5.如权利要求3所述的方法,其特征在于,包括提供所述关系的可视化。
6.如权利要求1所述的方法,其特征在于,包括使用实际编码任务的持续时间来表示 所述隐式创建任务的持续时间。
7.如权利要求6所述的方法,其特征在于,包括使用一个以上实际编码任务的持续时 间来表示所述隐式创建任务的持续时间。
8.如权利要求1所述的方法,其特征在于,包括接收设定渲染目标的标识作为所述隐 式创建任务。
9.如权利要求8所述的方法,其特征在于,包括使所述设定渲染目标与至少一个绘图 调用相关联。
10.如权利要求9所述的方法,其特征在于,包括显示所述设定渲染目标作为所述绘图 调用的子。
11.一种存储指令的计算机可读介质,所述指令由计算机执行以接收在多核处理器中隐式创建的任务的标识;以及使所述隐式创建任务与实际编码任务相关联。
12.如权利要求11所述的介质,其特征在于,进一步存储用于提供所述实际编码和隐 式创建的任务之间的关系的可视化的指令。
13.如权利要求11所述的介质,其特征在于,进一步存储用于指示所述任务之间的关 系的指令。
14.如权利要求13所述的介质,其特征在于,进一步存储用于指示所述隐式创建任务 的持续时间的指令。
15.如权利要求13所述的介质,其特征在于,进一步存储用于提供所述关系的可视化 的指令。
16.如权利要求11所述的介质,其特征在于,进一步存储用于使用所述实际编码任务 的持续时间来表示所述隐式创建任务的持续时间的指令。
17.如权利要求16所述的介质,其特征在于,进一步存储用于使用一个以上实际编码 任务的持续时间来表示所述隐式创建任务的持续时间的指令。
18.如权利要求11所述的介质,其特征在于,进一步存储用于接收设定渲染目标的标 识作为所述隐式创建任务的指令。
19.如权利要求18所述的介质,其特征在于,进一步存储用于使所述设定渲染目标与 至少一个绘图调用相关联的指令。
20.如权利要求19所述的介质,其特征在于,进一步存储用于显示所述设定渲染目标作为所述绘图调用的子类的指令。
21.一种装置,包括 多核处理器;以及耦合到所述处理器的存储器,所述存储器存储用于接收多核处理器中隐式创建任务的 标识并使所述隐式创建任务与实际编码任务相关联的指令。
22.如权利要求21所述的装置,其特征在于,所述存储器存储用于提供所述实际编码 和隐式创建的任务之间的关系的可视化的指令。
23.如权利要求21所述的装置,其特征在于,所述装置用于指示所述任务之间的关系。
24.如权利要求21所述的装置,其特征在于,所述装置是图形处理器。
25.如权利要求24所述的装置,其特征在于,所述装置是单指令多数据多核处理器。
26.如权利要求21所述的装置,其特征在于,所述装置用于指示所述隐式创建任务的 持续时间。
27.如权利要求26所述的装置,其特征在于,所述装置用于提供所述持续时间的可视化。
28.如权利要求27所述的装置,其特征在于,所述装置用于使用所述实际编码任务的 持续时间来表示所述隐式创建任务的持续时间。
29.如权利要求28所述的装置,其特征在于,所述装置用于使用一个以上实际编码任 务的持续时间来表示所述隐式创建任务的持续时间。
全文摘要
本发明提供一种使用虚拟任务对多核处理器进行性能分析的关系建模方法。关系模型可被用于为多核处理器中的多个线程的每一个编码原语。原语可包括任务和参数,诸如缓冲器。类似于设定渲染目标的隐式创建任务可通过使那些隐式创建任务与实际编码任务相关联来可视化。
文档编号G06F9/455GK102110012SQ20101061807
公开日2011年6月29日 申请日期2010年12月22日 优先权日2009年12月23日
发明者C·J·科迈克, M·伯罗斯, N·杜卡, S·A·特金 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1