CN104380344A - 用于并行依赖图评估的可视化工具 - Google Patents
用于并行依赖图评估的可视化工具 Download PDFInfo
- Publication number
- CN104380344A CN104380344A CN201480000181.6A CN201480000181A CN104380344A CN 104380344 A CN104380344 A CN 104380344A CN 201480000181 A CN201480000181 A CN 201480000181A CN 104380344 A CN104380344 A CN 104380344A
- Authority
- CN
- China
- Prior art keywords
- node
- joint block
- dependency graph
- concurrency
- performance
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/328—Computer systems status display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/61—Scene description
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2016—Rotation, translation, scaling
Abstract
揭露了用于在并行依赖图生成性能可视化的系统和流程。并行依赖图的运行时评估数据可被收集,包含图中的节点起始时间和停止时间。可视化工具可以处理该数据,以生成性能可视化以及其他分析特性。性能可视化可以示出并行依赖图评估随着时间推移的并发性水平。性能可视化可以通过根据节点起始时间、停止时间以及在给定时间的并发性水平绘制节点块来生成。性能可视化可以使角色技术总监、角色装配员、程序员和其他用户评估在计算机动画中的并行依赖图的并行性是如何表达的。
Description
相关申请交叉引用
本申请要求于2013年3月12日在美国专利和商标局提交的美国专利申请号13/797,895的优先权,其全部内容通过引用合并到本申请中。
技术领域
本申请总体涉及到运算处理的可视化工具,并且更具体地,涉及到计算机动画的并行依赖图评估状态的可视化的计算机系统和进程。
背景技术
可视化工具可用于显示计算机程序的性能图示。例如,传统的可视化工具可提供热图以协助程序员,找出导致更长的程序运行时和减少的用户满意度的最费时的、冗长的进程或函数。然后程序员可以专注于优化最费时的、冗长的进程或函数从而在减少运行时并提高用户满意度上生成最大的影响。
然而,传统的可视化工具对于串行进程有帮助,但其对需并行运转进程的多线程程序不太有帮助、甚至可能误导。要利用能处理两个、四个、八个、十二个、十六个或更多的并行进程的多核处理器处理的优势,程序员,尤其,需设计可以同时运行多个线程的程序,从而减少运行时并提高整体性能。传统的可视化工具可以识别每个核上运行的冗长的进程,但优化这些进程,在事实上,对程序的整体运行时有很少或没有影响,从而误导程序员并浪费时间。
例如,冗长进程可以与一串串行从属进程同时运行,该串串行从属进程运行所需时间比同时运行的冗长进程的更长。传统的可视化工具会建议优化冗长进程以降低整体运行时,其实,这对整体运行时没有影响。因为同时运行的串行从属进程,尽管每个的持续时间短,但合在一起的持续时间较长。在这种情况下,优化应被引导到串行从属进程上努力,但是目前的可视化工具,不会得出这样的结论。
优化是关注点,特别在有关电脑动画领域,其中数十万的动画帧需要被处理以创造出现时的具有复杂和详细的场景的动画电影。角色技术总监、角色装配员等,可以开发依赖图来渲染、动画,或以其他方式描述场景中的动画。依赖图可以由互相联系的节点组成,其中每一个可以是独立的运算单元,通过一个或多个输入属性取入数据,对数据执行某种运算,并生成一个或多个输出属性。图中的连接可以代表数据从一个节点流到下一个,每个节点在接收到的数据上执行某种运算并生成输出。节点可以具有多个输入和多个输出,以及其他属性。
许多节点可以同时在多个处理器内核运算,但运算节点链,都取决于最后一个,需要大量的处理时间。因此,优化努力应该被引导到那些直接影响评估依赖图时间的节点链。然而,传统的可视化工具,会使得角色技术总监、角色装配员等,把重点放在优化非关键节点,而不是直接影响依赖图的评估时间的关键节点。
因而,需要用于并行依赖图(以及其他的多线程计算机进程)的可视化工具。
发明概述
揭露了用于在并行依赖图生成性能可视化的系统和流程。接收包含并行依赖图的多个节点多个运行时评估条目的数据文件。运行时评估条目包含结点标识和运行时期间。基于数据文件中的若干并发执行的节点,确定并行依赖图中节点的并发性级别。为并行依赖图中任一节点生成节点块。根据每个相关节点的并发性级别和运行时期间确定节点块的尺寸和位置。根据相关节点的并发性级别和运行时期间生成具有确定尺寸和位置的一些或全部节点块的性能可视化。
接收性能可视化中的特定节点块的特性的请求。响应于接收到的特定节点块的特性的请求,提供特定节点块的相应的节点标识符、起始时间和停止时间。确定及提供特定节点块的上游来源和下游后代。改变特定节点块的上游来源和下游后代的显示属性。响应于接收到特定节点块的特性请求,提供特定节点块的相应的上游来源和下游后代。基于依赖图中运行时期间最长的节点链来确定并行依赖图中的关键路径的节点。性能可视化的节点块位置可以基于并行依赖图中关键路径的节点确定。基于关键路径的节点块的显示属性也可改变。
附图说明
通过参考结合所附附图进行的下面的说明,能够最佳地理解本申请,其中相似的部件可由相似的标记表示。
图1描述了一个示例性的计算机生成的动画场景。
图2示例性地描述了可视化工具,它可用于优化计算机动画的并行依赖图的评估。
图3示例性地描述了具有互连节点的并行依赖图。
图4示例性地描述了计算机生成的动画场景。
图5描述了并行依赖图评估的示例性的性能可视化。
图6示例性地描述了从动画电影的场景的并行依赖图生成的性能可视化。
图7A描述了生成一个并行依赖图评估的性能可视化的典型进程。
图7B描述了用于生成在并行依赖图强调节点关键路径的性能可视化的典型进程。
图8示例性地描述了一个运算系统。
发明详述
提供了下面的说明书以使本领域普通技术人员能够实现和利用各个实施方案。具体的设备、技术和应用的描述仅作为实施例被提供。对本文所描述的实施例的各种改进对于本领域普通技术人员而言将是显而易见的,并且本文限定的一般性原理可应用于其它实施例和应用,而不偏离本技术的精神和范围。因此,所公开的技术不旨在局限于本文描述和图示的实施例,而是与权利要求相一致的范围相符合。
关于用于在电脑动画的并行依赖图的性能可视化的可视化工具的实施例在下面将做进一步描述。作为电脑动画制作的一部分,角色技术总监、角色装配员等,可开发依赖图,这可用于渲染、活化,或以其他方式描述动画电影中的一个场景。依赖图可以由相互连接的节点组成,其中每一个是一个单独的运算单元,通过一个或多个输入属性取入数据,对数据执行某种运算,并生成一个或多个输出属性。在多个处理器内核中,多个依赖图的节点可以同时来运算。
示例性的可视化工具可以包含计算机程序,其从并行依赖图的运行时分析数据生成性能可视化、统计等。该数据可以包含在并行依赖图中的节点的识别信息,伴随每个节点的运行执行的起始时间和停止时间。示例性的可视化工具可以分析数据并生成性能可视化,以图形方式描述并行依赖图评估的并发性水平(例如,在并行依赖图中并行性是如何表达的或者并行依赖图如何使用多处理内核)。该工具还可以生成统计数据和用于分析并行依赖图的各种不同的图形示例。
软件程序员、程序设计师、技术总监等可以使用性能可视化、统计及图形示例来可视化数据流和分析并行依赖图的性能,尤其是并行依赖图是如何为并行执行构建的。优化可以针对那些在性能可视化中描述了的可直接影响整体运行时的节点。相应地,并行依赖图的排序或结构可被修改以表达更多的并行性、并通过集中在有额外并行能力的性能可视化的区域降低总体运行时。类似地,新节点可以被插入到并行依赖图的区域,其中的性能可视化描述了在评估期间的空闲并行能力。
动画电影的单帧可能需要上千个节点来描述,所以通过表达并行性来优化性能对计算机动画是至关重要的。描述了并发性的性能可视化工具可特别有助于角色技术总监、性格装配员等,以提高并行依赖图的性能,从而减少电脑动画制作过程的运行延误。由于这样的工具对计算机动画有特别的影响,在此揭示的各种实施方式使用计算机动画领域的并行依赖图为示例。但各个实施方式可被用于分析任何类型的多线程计算机程序或进程中,这些实施方式应当相应地被认为具有超出计算机动画领域的适用性。
图1示例性的描述了计算机生成的动画场景。值得注意的是,该场景包含可对应于在渲染场景中的大量运算时间的大量细节(例如,详细的脸部表情、毛皮、胡须、狮子的鬃毛等)。图2示例性地描述了可视化工具201可被用于优化生成图1这样场景的计算机动画的进程。并行依赖图203可以由多个节点组成,该节点对场景上的输入数据执行运算,以生成输出属性,其(至少部分地)生成的动画场景205。参照图3,并行依赖图的一个实施例将在下面做更详细地描述。可从并行依赖图203收集评估数据,并作为可视化工具201的输入。例如,并行依赖图203的每个节点的起始时间和停止时间可以被收集并被接收以作为可视化工具201的输入。可视化工具201可以分析评估数据、并生成性能可视化207,此外,描述了在并行依赖图203如何表示并行性。参考图5与图6,下面将进一步具体描述示例性的性能可视化。同样,参考图7A和图7B,用于生成并行依赖图评估的性能可视化的示例性进程将在下面做进一步详细描述。
性能可视化207可由技术总监、角色装配员、软件程序员等,来修改和优化并行依赖图203。例如,性能可视化207可以包含一个并行性明显不足的领域,表明在该领域通过更好地表达并行性以改善评估时间的可能性。同样地,性能可视化207会显示在下面的并行依赖图203中的特定节点将直接有助于更长的评估时间,这表明通过修改所识别的节点以改进评估时间的可能性。然后技术总监、角色装配员等,可以基于性能可视化207中显示的信息修改并行依赖图203来优化并行依赖图203、减少生成动画场景205的评估时间。
图3示例性地描述了并行依赖图300可生成如图4一样的计算机生成的动画场景。并行依赖图300由流动数据连接多个节点组成。输入302和304可以是,例如,描述一个动画角色(例如:图4中的狮子)随时间变化的动作数据、场景(例如:图4中窗帘、地毯等)的背景,或节点306和320执行运算的各种任意特征以生成的输出属性。例如,节点306可以是动画图4中狮子手臂的动作节点或变形节点。输入302可以是时间、角度、方向、矢量、曲线,非均匀理性基础曲线尺,或节点306接收处理的各种其他输入属性中的任意,例如,在图4中狮子的手臂从一个位置运动到另一个位置。
如图3所示,节点306所生成的输出被接收作为两个节点308和316的输入,表明节点308、316需要节点306的输出来执行其运算,例如,节点308和316可以对应于图4中狮子的手臂毛皮和爪子,并且可以使用节点306的输出、以生成在图4中所描述了的详细的皮毛和爪子的位置。同样地,节点308的输出被接收作为两个节点310和314的输入,而节点316的输出被接收作为节点318的输入。节点314生成输出332,而节点310的输出被接收作为节点312的输入,其生成输出330。如图所示,节点318生成输出334。因此,沿着节点306开始的链的各个节点和输出可以呈现在图4中所示的狮子的各种属性。
类似地,节点320的输出被接收作为节点322的输入,其输出被接收作为节点324的输入。节点320可以对应于图4中所示的部分可见的海豹(连同其装饰性颈部)的动作或变形。节点324的输出随后输入到两个节点326和328,从而分别生成输出336和338。沿着由节点320开始的链的各个节点和输出可因此呈现出图4中所示的部分可见的海豹的各种属性。在其它实施例中,输出330、332、334、336和338可以是任何种类的用于渲染、动画、或以其他方式修改动画角色或场景的数据。虽然输入和输出在图300中以单线描述了,输入和输出可以由多个元素组成。重要的是,如图所示,多个节点依赖于其他上游节点的输出以执行其运算。例如,节点322在执行运算和生成它的输出前,需等到节点320生成其输出。在实践中,当一个节点的属性或输入变化时,它的输出可以标记为“脏”(“dirty”),这意味着所有缓存值是陈旧的、需要重新运算的。脏值的目的地也同样标记为脏,这样依赖图的新的输入通过所有受影响的连接和节点产生传播的脏状态,需要反过来处理受影响的脏节点以获取更新的输出。
因为多个节点可以同时运算,示例性的并行依赖图300描述了并发处理的可能性。例如,节点306或节点320可以同时运算,因为它们具有独立的输入,并在其他方面无关联。在图4的例子中,对应于狮子角色的动作的节点306可与对应于海豹角色的动作的节点320同时运算。类似地,节点312、314、318、326和328都可以被同时运算,因为它们在执行运算之前不依赖于彼此的输出。相反,然而,图300还描述了节点如何依赖于其他的节点,以及节点的链可以变得很大,并需要大量运算时间。例如,在节点312执行其运算前,节点306、308和310必须依次完成其运算。在图4的例子中,直到狮子的四肢的位置由上游节点决定前,狮子的毛皮不会生成。节点312依赖的这些上游节点可以被称为它的来源或出处。下游节点可以被称为节点的后代(例如,节点308的下游依赖后代包含节点310、312和314)。作为并行依赖图成长到成百或上千个节点(这在计算机动画上是典型的),复杂性加剧,而且它变得越来越难以追踪与了解节点如何相互关联,特别是难以确定延迟的源头。
图5示例性地描述了性能可视化500,其可以从多线程进程运行时评估的分析生成,如并行依赖图300的评估。在图示的例子中,性能可视化500可以用图描述并行依赖图300的评估随着时间的推移的并行水平。性能可视化500可以为如图5中所示图形的形式。但在并行依赖图的评估过程中,许多用于描述了并发性级别的其它的变量也需被考虑。在一个实施例中,垂直轴可表示并发性水平,而水平轴可以表示时间,这可是绝对的、相对的、近似的、或另一种变型。性能可视化500表明在时间为零(或开始运算并行依赖图的绝对时间)时,由节点块506和520表示的两个节点同时开始。虽然轴可被自定义为特定的组织或应用,在这里,性能可视化500被配置以描述,如果只有一个节点被运算,就有零并发性级别,而同时运行的附加节点递增则并发性级别递增一个、两个,依此类推。
性能可视化500用尺寸化和定位化的块来表示节点和节点的运算时间,以说明随时间的并发性。每个节点块可以被水平地定位,使得节点块的前缘对应于起始运算的时间点,这在一些实施例中可以是当所有需要的节点的输入变得空闲的时间,操作系统中预定的相应的进程运行的时间,或类似的时间。每个节点块的水平尺寸可以对应于它的运行持续时间,使得每个节点块的后缘对应于节点运算的停止时间,即该节点的运算输出变得空闲的时间,或进程传递到下一个节点的时间,或类似的时间。虽然节点块被示为矩形、层叠块,在其他实施例中,它们可以是不同的形状、可视化的布局也可以被修改(例如,轴可被转换)。
加入虚线530和532以作为参考、显示如何从性能可视化500容易地确定依赖关系。如图所示,节点块508和516的前缘紧密的挨着节点块506的后缘。在一个实施方案中,这样的接近可以被理解为一种潜在的依赖关系。例如,节点块506、508和516可以分别对应于图3所示的节点306、308和316。如该图3所示,节点308和316依赖于节点306,因此图5中虚线530强调起始和停止时间如何相互关联的可以指示节点块之间的依赖关系。类似地,虚线532描述了节点块524、526和528之间的潜在的依赖关系。在一个实例中,这些节点块可分别对应于图3中的节点324、326和328,其中确认节点326和328是依赖于节点324,因而需要节点324的输出才可以执行其自己的运算。还描述了其他依赖性,如节点块510至节点块512,节点块516至节点块518及连续排位的节点块520、522,和524。然而在其他实例中,节点可依赖于一个以上的其它节点,也可以实施其它方法以表达依赖关系,例如突出的或着色的节点块以描述了关系、列出依赖关系,作图线显示依赖性,或其他技术。
因此,角色技术总监、装配员等可以从性能可视化500的布局容易地识别随着节点运行持续时间内节点之间的许多潜在的依赖关系,并且可以使用这些依赖和运行时来确定运行时图形的哪个目标节点或部分可以被优化,以提高整体的运行时性能。例如,程序员或其他用户会专注在性能可视化500部分、并可直观地识别需大量时间的节点块、大量时间节点块链和节点块链的设置,跟随依赖关系,以确定应该优化的节点、或者可以被重新配置的区域,以节约处理时间。因此,基于起始时间和持续运行时(或停止时间)的尺寸化和水平定位的节点块的性能可视化的实施例可以有利地提供节点运行的快速视觉提示和在并行依赖图底层的相关节点依赖性。
如上所述,性能可视化500也给出了垂直放置节点块的实施例,以图形方式描述了并发性水平,或者并行性如何在依赖图的底层表达的。在一个实施例中,节点块可被水平地定位,如上文所描述的,以对应于处理的起始时间和持续时间。为确定图中的垂直位置,节点块可被分配给可用的最低级、不重叠的并发性水平。例如,参照图7A和图7B,下面将做进一步更详细的描述,进程700或者进程720可被用来生成性能可视化和节点块的布局。生成性能可视化500时,可视化工具可在并发性级别为零处已放置节点块520。当试图插入节点块506到图形,节点块520将与节点块506重叠,所以可视化工具将增加节点块506的并发性级别并确定其在图示的性能可视化500的位置。在另一个实施例中,可视化工具可以识别重叠的时间,或相当于并发运行的节点,从接收到的运行评估数据(例如,包含运行时评估条目的数据文件)。例如,可视化工具也可比较运行评估数据文件中所确定的节点的起始和停止运行时、以确定重叠的发生。当重叠存在时,可视化工具可以分配给数据文件中每个节点一个特定的并发性级别,使得相应的节点块可垂直放置而不重叠。
图5和性能可视化500还说明了并发性如何随时间变化,以及后续节点块的位置如何可相应随时间改变。例如,性能可视化500的底层的并行依赖图在运行时可已被生成,对应于节点块506和520的两个节点可同时开始运算。对应于节点块506的节点运算完成后,然而,由节点块508和516所示的两个新节点开始运算,总共三个并发执行的节点。类似地,对应于节点块508的节点运算完成后,得到对应于节点块510和514的两个新运算节点,总共四个并发执行的节点。因此,增加独立于另外的执行节点的新节点,并发性级别和垂直位置可被增加以既避免重叠,并用图解说明在并行依赖图的底层并发性。
在一个实施例中,节点块可以不在垂直位置中流递减,这可在性能可视化得到未填充空余空间,如后面的节点块514。如图所示,在完成对应于节点块524(由虚线532标记)的节点运算后,生成了两个额外的节点块526和528。此时,对应于节点块514的节点仍然运算,为避免重叠,节点块528被定位在并发性级别为四级。然而,对应于节点块514的节点完成运算后,产生并发性级别为两级的未填充空白。在性能可视化500,节点块528在其运行时期间没有部分地降低,而是仍然在并发性级别为四级。在其它实施例中,然而,一些用户可更喜欢的所有空白充满维持瞬间准确并发性级别。在这些实施例中,节点块528可以在节点块514终止时被分割,并且节点块528的其余部分可立即跟着节点块514确定位置,从而反映出在此时并发性级别已经递减到三级(或4个并发执行的节点)。本领域的普通技术人员将认识到,许多变化是可能的,并且性能可视化工具和性能可视化可以被自定义,以适应特定的组织和特定用户的需要或喜好。
用户分析并行依赖图可对并行依赖图中的关键路径特别感兴趣。关键路径可以是完成运算所需最长时间的节点路径或链,或者换句话说,在并行依赖图中的最长的路径-由运行持续时间测量得到。因为运算关键路径的时间可比在并行依赖图的任何其他路径较长,关键路径也可以对应于整个并行依赖图的整体运算或评估时间。在动画中,例如,运算节点的关键路径的时间可以表示的时间量为并行依赖图来完成活化、渲染,或者以其它方式处理一个场景中的动画场景或角色。节点的关键路径可因此直接对应于动画程序的响应性或效率,使得较长的关键路径具有较长的运算时间,可能会生成令人沮丧的延迟。由于关键路径直接影响动画效率或动画响应程序,角色技术总监、角色装配员,以及其他用户可因此宁愿专注于关键路径上的优化(可争辩地,应该着重于有影响处努力)。为帮助用户在某个方向优化,性能可视化可以被配置为强调关键路径(例如,改变对应于关键路径上节点的节点块的显示属性)。
图5中性能可视化500描述了通过将关键路径节点块放在最低的垂直位置来强调关键路径的一个方法。如图所示,对应于节点块526的节点是最后一个完成的运算。这表明节点块526是在关键路径上,及在节点块526之前的来源或出处节点的部分或全部。在这个例子中,追溯导致节点块的526的路径描述了该节点块524、522和520也在关键路径上(例如,如图3中所示,节点326依赖于节点324,322和320)。换句话说,用于评估可视化50的并行依赖图的最短时间量由对应于节点块520、522、524和526的节点(例如,运算节点320、322、324和326)的运算时间决定。在这个例子中,通过将这些节点块的并发性级别置为零来强调节点的关键路径,因此很容易初排关键路径节点块,以找出可优化的区域。在其他例子中,节点块的其它显示属性可以被改变,例如,对应于关键路径节点的节点块可以相对于其它节点加阴影或不同的颜色,连接线可以被绘制来识别路径,节点块可以包含文本、关键路径的细节,或任何可被用来强调对应于关键路径节点的节点块的其它各种图像手段。
性能可视化工具可用各种不同的方式确定哪些节点是在关键路径,包含通过起始时间、从最后节点开始来完成和顺序排列派生节点,在每个接合处选择具有与路径中的当前节点的起始时间相应的停止时间的下一个派生节点。在其他实例中,性能可视化工具可以通过尝试并行依赖图中每条路径,合计各路径的运行时以确定最长的路径作为节点的关键路径。尝试并行依赖图的路径可从运行时评估数据文件完成,例如,通过求和每个不同节点的路径的运行持续时间,从起始时间、停止时间,多个节点的分支及到更少节点的组合来确定每个不同的路径。例如,其中两个节点的输出连接到一个共同的后代节点,最后完成运算的派生节点将被包含在该节点潜在的关键路径的运行总和,因为包含派生节点的路径要长。相反,在某个节点的输出分支到两个后代节点,两个独立的路径必须被跟踪和总结,因为任一路径可以是最长的。许多其他用于确定节点的关键路径的方法可被考虑,其中任一都可被用来确定在性能可视化中哪些节点块是突出的。
在图5所示的实施例中,用户审阅性能可视化500可以注意到,优化对应于节点块520、522、524和526的节点可以改善相应的依赖图的整体运行。应当指出,然而,典型的分析程序可建议优化对应于节点块516的节点将是优选的,因为该节点的运行时显著长于任何其它节点。然而,优化对应于节点块516的节点不会降低整体运行时,因为通过这些优化作为关键路径的节点可以保持不变。因此,如本文所讨论的性能可视化可以有利地引导用户做更有意义的优化,比典型分析程序所建议的优化更能改善整体的运行时性能。
图6示例性地描述了从动画电影的场景的并行依赖图评估生成性能可视化600。性能可视化600描述了根据用户的需要和喜好,生成并行依赖图的可视性能的许多可能的变化。性能可视化600包含数以千计的不同的节点块,其中有许多是可以通过在图中的那些部分放大而显现的细纵纹。性能可视化600包含最多十二个并发性级别,有一个基本的并行依赖图在12核处理器上运行。值得注意的是,在图中的一些点,13个不同的节点块在进程中同时进行。当然,对一个12核处理器,最多12个运算可以同时进行处理,但是,超过12的线程可并行处理,并且操作系统可以在任何处理器内核的交替的基础上调度不同线程。换句话说,一个节点可能会在进程中,偶尔受到暂停或延误,而其他进程会占用的处理器内核。这些暂停或延迟可与众多的并发线程作为操作系统本身可能会占用处理器内核来执行调度任务或其他操作系统任务。在许多实例中,程序员更喜欢以允许操作系统调度器来确定线程在多个处理器内核中的最佳线程分配,并且在性能可视化600中,偶尔的暂停和线程重叠是可接受的结果。
性能可视化600还描述了一个性能可视化的实施例,不同的阴影和颜色可显示许多不同的特征。在一个实施例中,对应于一种类型的运算的节点块可类似地着阴影或颜色,如所有变形相关的节点块着相同的阴影。在另一个实施例中,节点块可对应于动画的场景中的特定元素来着阴影或颜色。例如,在具有多个角色的场景,对应于动画每个角色的节点块可着阴影或颜色,以确定哪些节点块对应于该角色。背景动画元素也可着与其他元素不同的阴影或颜色。在图1和图4所示的动画场景的例子中,各个角色(狮子、长颈鹿、斑马和海豹)节点块可着不同的颜色。类似地,对应于这些场景的背景节点块同样可着不一样颜色(例如,窗帘、地毯、墙壁,等等)。
在另一实施例中,对应于一个角色的不同部分的节点块可着不同的阴影或颜色,比如不同颜色的面部动画节点块、臂部动画节点块、内核或枝干动画节点块、毛发动画节点块、腿动画节点块、手和手指的动画节点块,和类似物。在图1和图4的动画场景的例子中,例如,对应狮子脸的节点块可生成不同于对应狮子臂部的节点块的阴影或颜色。同样,对应狮子爪子的节点块可生成不同于对应狮子毛皮和鬃毛的节点块阴影或颜色。这些元素可根据用户的需要和喜好被区别开来,着阴影或着色方法可以定制。在一些实施例中,性能可视化可从用户选择的不同显示偏好被实时地改变。例如,根据需要,用户最初可用色彩区分节点的运算式显示性能可视化,后来根据角色来区分改变它,并再次根据角色的部分来区分改变它。在图1和图4的电脑动画的例子,例如,一个用户最初可让不同的角色用不同的颜色显示(例如,狮子,斑马,长颈鹿,海豹等)和切换到让不同的内核和主体部分用不同的颜色显示(例如,枝干胳膊、腿、爪、头部等)。在一些实施例中,一个图形密钥可以被覆盖在显示器上,嵌入在图中,作为一个弹出选项,或者提供特定元素相关联特定的颜色或阴影(例如,角色名称的相关联颜色的表,运算节点类型的阴影)。
性能可视化600还说明了计算机资源如何限制或并行依赖图的结构在并发级别为零可能会导致空的白色区域,或者在其他实施例中,对应到关键路径的特定节点的特定节点块如何被突出或强调。如图所示,沿着并发性级别零,有几个空白空格区域。在一个实施例中,该间隙可与机器资源限制相关。例如,在具有12个处理器内核的计算机中,第13进程可能会被迫等待直到12进程已经完成运行,第13进程才被安排、并开始在处理器上运行。一个并行依赖图的一个节点可以具有13或更多的下游的依赖关系。如果12个依赖关系已经占据了12个处理器,其余的依赖关系可能会被迫等待。如果剩余的依赖关系中的一个是在关键路径上的关键节点,沿着并发性级别为零可能会出现间隙,直到关键路径的节点进行处理。因此,当关键路径的节点等待可用资源时,间隙可出现在并发性级别为零处。如图6示,间隙可能会频繁出现,其中许多节点正在处理,所有的处理器内核更可被占用,从而迫使关键路径的节点等待机器资源变为可利用的。
在其它实施例中,相对于关键路径上的所有节点,仅关键路径的串行节点块可以被放置在图的最低级别处。特别地,出现在并发性级别为零的第一个节点块可直接依赖于先前并行运行的多个节点的不同输入;换言之,在相应的节点开始运算之前,其他几个独立的、并行的节点必须完成运算并提供它们的输出属性。类似地,在性能可视化600并发性级别为零中所示的一些节点块的节点可以分出多个节点,从而导致跟随表示并行度的节点块的白色空间;换句话说,相应的节点的输出属性是并行的多个其他节点的输入。
在某些情况下,用户可能会对已经表达并行性的关键路径区域(可包含性能可视化600沿并发性级别为零的空格)不感兴趣,而是更愿意把重点放在关键路径上的串行节点。这样的串行节点可在其中一个节点直接取决于唯一在先节点上,或在一个节点的输出直接馈送到唯一其它节点处存在。因此,在性能可视化600中示出的,关键路径节点块强调并定位在最低的垂直水平可以仅包含对应于关键路径的串行节点的节点块,其中并行性不在运算关键路径的属性上表示。因此,所示的节点块可以对应于每个都对整体运行有直接影响的关键节点。因此,如果针对降低关键路径上串行节点的运行时或修改底层并行依赖图来表示沿并行运算关键路径输出属性的串行部分的优化工作可对整体的运行时生成重大影响。
在一些实施方案中,性能可视化的关键路径可以被强调(例如,关键路径节点块的显示属性可以被改变),通过将相应的节点块放置在上述图中的最低水平。在其它实施例中,相应的节点块可以代替被复制和描绘,例如,无论是在图中的最低水平,并与其他并发性级别附近的源或后代节点块相一致,在其它实施例中,关键路径节点块的其他显示属性可被改变,例如,关键路径节点块可以以不同的颜色、不同形状、不同文本、或类似的来高亮显示或在图中另有强调。
虽然性能可视化500和600被示为静态图形,性能可视化可以是交互式显示,或者可以通过提供一个可视化工具用于与可视化的用户交互来访问。许多交互可以用鼠标、键盘、触摸屏、手势或类似的运用。在一个实施例中,用户可以放大图的任何部分,更好地让他们看到不同的节点块具体细节,或缩小、给人以更大角度的概况。用户也可以绕着显示屏拖动图形以聚焦可视化的特定部分,按任何方向滚动图形视图或窗口,或根据需要水平或垂直拉伸的图形视图。在一些实施例中,鼠标指针或其他位置指示器机构可以被表示为一组的十字准线-延伸至轴或穿过整个显示器的相交的线,以允许用户比较起始和停止时间、并发性级别,等等。十字线(时间和/或并发性级别)的交叉点的位置可在屏幕上的文本框、页眉、页脚、图形键,或其他显示以文字报告。
在一些实施例中,用户可以通过简单地指示一个鼠标指针或者其他位置指示符到节点块请求关于特定节点块的信息(例如,将鼠标放在一个节点块、将十字线放在节点块上、等)。然后,可视化工具可以提供各种有关特定节点块的信息,如节点名称或标识信息、启始时间、停止时间、运行时、派生节点、后代节点、节点类型,动画角色的名字、动画角色的一部分,等。信息可以显示在弹出的文本框或覆盖在显示器一部分的固定的文本框。在其它例子中,信息可以显示在显示窗口或图形的页眉或页脚。在另外一些实例中,用户可通过在屏幕上的特定按键或按钮请求信息。
改变显示属性特点(例如,突出或强调)的派生和后代节点也可以被引入性能可视化。例如,识别或选择特定的节点块可导致一些或全部相应派生节点块和后代节点块被不同地突出、着阴影或着色,否则设置有别于其他节点块,在可视化单独描绘,或其他。也可以提供按键或其他命令来请求可视化工具修改图形来改变一组特定的节点块(如相关的上游来源或下游后代节点块)的显示属性。
图7A描述了用于生成并行依赖图评估的性能可视化示例性流程700。流程700可以在工作站计算机、膝上型计算机、平板计算机、移动手持式计算机、服务器,跨多个工作站、跨多个服务器、互联网上,或者在各种其他运算设备上执行。尽管流程700可通过各种设备和/或程序执行,为了说明的目的来进行,流程700将被描述为通过一个可视化工具,它可以被计算编程来执行特定功能。
在步骤702,可视化工具可以接收并行依赖图的运行时评估的数据文件。在一个实施例中,数据文件可被记录计算机时钟起始时间和并行依赖图的评估期间每个节点的停止时间的监视工具生成。例如,数据文件可以包含运行时的评估项目表列出的并行依赖图中的每个节点、每个节点起始运算的时间、及每个节点停止运算的时间。每个节点可以任意的多种方式,如唯一的标识号、节点名称、节点运算类型、受影响的动画元素,或类似物来识别。启动时间可以是节点被调度运行、当节点的输入变得可用、当节点开始运算等的计算机时钟时间。停止时间可以是当节点被终止、当节点的输出变成可用的、当节点停止运算等的计算机的时钟时间。
运行时评估的数据文件也可以包含每个节点的处理器内核识别(即,为每个运行评估条目)。例如,对于一个12核处理器,数据文件可以指示哪个或哪几个处理器(1至12)执行的每个节点的运算。在一些情况下,节点自己可以是包含并行处理的多线程进程,因此,多个处理器可以被用来并行地执行节点运算,这些处理器的部分或全部可以在数据文件中被识别。在其他情况下,操作系统可将节点运算从一个处理器转移到另一个处理器,并且两个处理器都可以在数据文件中被识别(以及执行节点运算任何额外的处理器,如果有的话)。
包含在数据文件中的信息也可以根据特定的组织和用户的需要和喜好定制。例如,在一些实施例,数据文件可包含每个节点的上游来源和下游后代的列表,(即对每个运行时评估条目)、确定运算类型的标签、具有并行依赖图的信息的其他文件指针或链接、当评估已完成的时间标记、在评估期间的网络信息、存储器存取延迟信息、用户运行评估,或任何用于分析和/或改善性能、对技术总监、装配员等有用的各种其它识别信息。
在步骤704中,可视化工具可确定执行节点的并发性水平。在一个实施例中,可视化工具可以通过运行评估数据文件进行扫描(通过每个运行时评估条目),在各节点的起始时间递增一个并发计数,并且在每个节点的停止时间递减并发计数。该工具可以跟踪如何并发性级别的变化,因为它跨越时间,它可以指定数据文件中的每一个节点的并发性级别。在一个实施例中,该工具可以从完成运算的最后一个节点来向上工作到开始的第一个节点,在每个停止的时间递增一个并发性级别,并在每个起始时间递减并发性级别。在其它实施例中,如上所述,该工具可详细研究数据文件并为其分配并发性级别、以避免最终性能可视化的重叠。确定执行节点的并发性水平也可以根据用户的喜好或特定实现用其他方式实现。
在步骤706,性能可视化工具可以生成在并行依赖图的节点块每个节点。在一个实施例中,该工具可以填充在图中每个节点块和其相关联的信息,如水平位置、垂直位置、尺寸、颜色、形状、文字和标识信息等。在一些实施例中,生成节点块可以包含使节点块被存储在表示图的存储器中,或引起节点块被绘制或显示在图上。在其它实施例中,生成节点块可以包含创建新的节点块对象,每个对象具有描述尺寸大小和位置应该如何放置的特性,以及其他标识信息,如节点名称或标识等。在其它实施例中,生成节点块可以包含在可视化图形中添加新的特征来描述如何在图形中呈现或在制备用于显示的图形可视化中以其他方式组织节点块的数据。其他实施方式可以包含组织节点块信息、准备用于显示的其他步骤。
在步骤708,性能可视化工具可基于步骤704确定的并发性级别和每个相应的节点的运行时确定每个节点块的尺寸和位置。如图6所示,每个节点块可具有对应于该相应节点的运行持续时间的宽度。同样,每个节点块的位置至少部分基于步骤704确定的每个节点的并发性级别。每个节点块的前缘可对应于它的起始时间,并且后缘对应其停止时间。其垂直位置可以基于并发性级别,以确保节点块不重叠,这也可说明在下面的并行依赖图中并行度是如何被表示的。
在步骤710,性能可视化工具可以生成性能可视化(如图5和图6所示),其包含在步骤708中确定的每个节点块所具有的尺寸和位置。在一个实施例中,生成性能可视化可以包含生成在存储器中的显示图,其包含在每个位置的节点块。在其它实施例中,生成性能可视化可以包含使性能可视化被示在显示装置上,其中包含根据填充图形的特定视图所需要的一个或更多节点块。在其它实施例中,生成性能可视化可以包含将数据存储在存储器中,与其他图形信息相结合,为显示可视化做准备。
图7B描述了用于生成性能可视化、强调在并行依赖图的节点的关键路径中的示例性流程720。流程720可以一些包含与流程700中相同的步骤,并且这两个流程可以根据用户的需要被组合或改变。
在步骤722,可视化工具可收到如流程700步骤702的并行依赖图运行时评估的数据文件。在步骤724,可视化工具可以生成一个新的性能可视化外形(例如,对象、图形、文件、占位符等)。在一些实施方案中,生成新的性能可视化形可以包含创建用于存储(临时或永久)的性能可视化数据的新的性能可视化的文件,在其它实施例中,生成新的性能可视化形可包含在存储器中生成空白的图形,或在某些情况下,在预期填充图形显示节点块。在其他实施例中,生成新的性能可视化外形可包含要在存储器中生成具有某些特性的性能可视化对象,其中新节点块和其他图形特性可被添加到该信息被处理或要求的对象。在某些实施例中,此步骤可以完全省略或推迟到要在显示设备上显示可视化。生成一个新的性能可视化外形还可以基于用于特定组织及其需求的特定系统上的特定实现来以各种其他方式定制。
在步骤726,该可视化工具可如流程700的步骤704确定执行节点的并发性水平。在步骤728,可视化工具可通过并行依赖图确定关键路径。在一个实施例中,该工具可以在遍历数据文件确定并发性级别的同一时间确定关键路径。例如,从完成运算的最后一个节点开始,该工具可以及时向后遍历数据文件、沿途确定并发性级别,以及跟踪完成运算的最后一个节点的来源或后代(如上面所讨论的,一些派生节点还作为关键路径的一部分)。在其它实施例中,该工具可通过遍历并行依赖图中的每个路径中以确定最长运行时的路径,在一些情况下,遍历数据文件中的路径由相应的起始时间和停止时间标记。在一些实施例中,该工具可以分析持续时间和依赖性、使用其它方法来确定哪些节点是在关键路径上运行时。在一些实例中,关键路径可以只包含串行关键路径的节点,其中并行性不沿着关键路径的依赖图表达。在其他实例中,在并行部分的最长的节点可以被识别为关键路径节点,或接触关键路径的所有节点可以被识别为关键路径节点。
在步骤730,就像在流程700的步骤706,性能可视化工具可以生成并行依赖图每个节点的节点块。在生成节点块的步骤730中,工具可以修改图、图的对象,软件对象、外形或在步骤724生成的类似物。在步骤732,性能可视化工具可以绘制节点块随时间的并发性、强调关键路径。在一个实施例中,绘制随着时间推移的节点块的并发性可以包含生成在存储器中的显示图,其包含每个位置的节点块。在其它实施例中,绘制随着时间推移的节点块的并发性可包含生成要显示在显示装置上的性能可视化,包含根据需要来填充该图形的特定视图的一个或多个节点块。在其他实施例中,绘制随时间的节点块并发性可包含存储数据在存储器中,与其他图形信息相结合,以为显示可视化做准备。强调关键路径可以包含上述任何一种方法,例如使用突出显示、阴影、颜色、位置或其他来强调关键路径节点块。
根据特定的实施方式中,一些流程700或720的步骤也可以省略、修改或组合在一起,并且顺序可以改变。另外,在一些实施例中,流程700或720之后可以使可视化显示在显示设备,其允许用户交互需要重新绘制可视化的部分,从而反过来跟据用户的请求来修改正在显示的内容、重复流程700或流程720的一些步骤。
许多其他的变形也可以在可视化工具和在生成性能可视化来实现。在一个实施例中,例如,节点块可以被标记为不同,以表明相应的节点是否是多线程。例如,多线程节点的节点块可以被标记为线、符号、颜色、阴影、文本,或其他,以与单线程节点的节点块区别开来。一个节点是否是多线程可以被硬编码、以作为运行时评估数据文件或并行依赖图的一部分,或者它可以从运行时评估数据推断。在一些实施例中,一个节点的多线程级别可以通过阴影、颜色、文本或其他以图形方式表示,以说明相对于其他多线程的节点,节点是如何以内在线状图案装饰的。
在一些实施方案中,也可生成不同的图形或可视化,如由处理器内核(例如1至12)识别的、随着时间推移而组织的节点块曲线图。例如,垂直轴,而不是并发性级别,可通过处理器内内核识别,对应于在处理器内核上的节点运算的核识别(或核id)的基础上,节点块可垂直定位。在某些情况下,多线程的节点可以分布在多个处理器内核,因此图形也可说明一些节点如何通过拉伸块垂直地跨越多个处理器的水平、或复制多个处理器内核的相似节点块,表现出并行性。在其它情况下,一个单一节点线程可以从一个核移动到另一个。图形可以说明线程迁移,在许多情况下需要被复制的缓存的值可以增加延迟。在一些实施例中,可视化工具可以包含按钮、菜单项、按键组合或类似的命令,用于显示处理器内核的id型图形。在对比并发性级别曲线图,处理器内核的id型图形可以垂直限于处理器内核的数量,所以该图也可描述了其他进程插入之后、占用的处理时间,一些节点被暂停、稍后被恢复(例如,其他节点的进程、操作系统的任务等)的缺口。
在另一个实施例中,本文所讨论的性能可视化或图形可以通过过滤显示修改,只显示某些节点块。例如,一个性能可视化工具可以包含按钮、复选框、菜单、按钮、按键命令、或其他选择显示节点块方法的命令。用户可以,例如,过滤显示,仅显示对应于特定功能、节点类型、角色、颜色、处理器内核、角色元素、动作、场景等的那些节点块。在图1和图4示例的计算机动画,例如,用户可只显示对应于狮子的那些节点块。用户还可以过滤显示,只显示关键路径或者涉及到关键路径的节点(如派生节点或后代节点,无论它们是否是在关键路径上)。类似地,用户可过滤显示,只显示与所选节点相关的结点块,如所选择的节点的派生节点块和后代节点块。如上所述,显示器还可被修改,以改变这里讨论的任何节点块的显示属性(例如,突出或强调)。
性能可视化或图形也可以被配置来显示对应节点的脏(dirty)状态。在一些实施例中,在并行依赖图中,脏节点可以被标记为脏的特定水平,如重型脏、偏脏、轻微脏或其他。脏度水平可以对应于重新评估节点如何显著地取决于,例如,输入属性的改变。例如,如果所有的输入属性的改变,并且节点的完整的重新评估是必需的,则该节点可以被认为是重脏。相反,如果只多输入中的一个属性发生了改变,并且重新评估是相对较小的,则该节点可以被认为是局部脏或轻微脏。性能可视化或图形可以被配置来说明节点的脏度水平,在它们通过特定方式重新运算前标记或标识节点块。例如,脏的水平可在节点块上使用阴影、颜色、符号、线条、文字等表示。可视化工具也可以用复选框、按钮、菜单选项、切换选项、按键命令或其他等,用于选择是否要在图形或性能可视化显示脏的状态。
可视化工具还可以结合其他工具来辅助角色技术总监、装配员,以及其他用户分析并行依赖图的性能,甚至模拟变化如何影响性能。在一个实施例中,用户可以在性能可视化中拖、放节点,来了解如何重新安排底层并行依赖图会影响评估性能。例如,用户可以识别串行节点块的冗长部分,和拖、放与串行节点块并行的其它节点(即在可视化重新放置后来的节点块以与串行部分并行出现)。类似地,如果底层的并行依赖图进行了修改以实现模拟插入新节点的可视化,用户可以在可视化插入从其他可视化取出的新的节点块或通过创建自定义块来模拟性能可视化如何示出。考虑到节点的依赖性,尽管拖放节点块是理论上的、并不总是看起来合理的,模拟变化的能力是非常有用的。用户能够更容易地了解到如果并行依赖图被以特定方式重新配置,这种变化会有显著的影响。另外,在现有的可视化插入新的节点块,描述了可用的处理时间可以被用来处理还没有成为特定并行依赖图一部分的节点。因此,允许用户修改性能可视化和模拟潜在变化可为用户分析并行依赖图、并确定在何处做优化努力提供额外的援助。
可视化工具也可以被配置来报告统计或诊断数据。在一个实施例中,可视化工具可以提供平均图表并发性,它可以被运算为并行运行的节点的平均数目。通过报告标准数,如平均并发性,不同的并行依赖图可以相互进行比较,不同的角色技术总监、装配员或其他用户可互相比较,甚至相互竞争,以达到统计测量到的最高平均并发性。该统计可以由用户请求或响应于任何本文所讨论的命令的方法来显示。在一些实施例中,不管所显示的内容,平均图表并发性可为整个并行依赖图运算。但在其它实施例中,平均图表并发性可为显示在可视化工具窗口中的部分性能可视化运算,考虑到并行依赖图的部分更精细的细节。
其他分析工具也可以被纳入到可视化工具,包含使用户能够在同一时间加载多个运行时评估的数据文件的时间、显示多个性能可视化或图形。在一个实施例中,当用户修改一个并行依赖图,他可以加载修改之前收集的数据文件、修改之后收集的数据文件,以了解修改如何影响性能。同样,图形可以生成描述从一个评估变化到其他的比率(例如,1比1、4比1,等等)。多个图形或可视化可以不同方法来布置,以方便比较,如并排对齐或上下方向对齐。在一些实施方案中,不相关的数据集可以被同时加载,并且用户能够同时查看和交互多个可视化和图形。例如,项目经理可载入每个相关项目的并行依赖图生成的多个数据文件,以允许不同的图形的快速比较和每个图形的统计。用户还可能够协调多个显示图形或可视化的交互,如在每一个曲线图上同一位置复制十字准线、协调图形修改,如缩放,使得它同时出现在多个图,或其他。在其它实施例中,多个可视化工具的实例可以是能够在同一台机器上运行,独立于其它。
其他可视化或图形视图也可以合并到可视化工具,以提供额外的分析帮助。在一个实施例中,提供了一个类别视图。类别视图可以生动地示出涉及到每个类别(如脸、衣柜、头发及其他)的全部节点的总计类运行时。节点块或其他图形可绘制,以比较花费在每个类别中的时间,如在一个轴上列出每个类别、在另一个轴上列出总的时间的条形图。也可以为其他类别类型提供类似的分类图,如帧、节点功能、角色、场景元素或其他,以允许视觉比较在每个类别中的不同元素的不同的总的运行时。在一个实施例中,选择一个特定条或在图形中识别(例如通过双击)一个特定的元素会引起显示包含对应于所选择的特定元素节点块的性能可视化。
在另一个实施例中,可以提供并发性直方图。直方图可以图形方式描述了一定数目的内核正在使用的时间,一定数目的节点被同时执行的时间。例如,可视化工具可以相加一个节点的执行时间、两个节点同时执行的时间、三个节点同时执行时间、等等。相加的时间然后可以尺寸化的直方图格式显示来说明特定数目节点或内核的处理时间。以这种方式,其中并行性更好来表示,对应于较多的并行执行的节点的柱状条应该比对应于较少并行执行节点的柱状条大得多。这样的并发性直方图图可从而为分析并行依赖图中并行性如何表达提供另一个参考。
可视化工具还可以提供识别并行依赖图中最费时的节点的方法。在一个实施例中,可视化工具可以提供所有的节点及其相应的运行时列表,并且该列表可以由运行时排序,使得具有最长的运行时的节点被列在第一位(或最后,如需要的话)。在另一个实施例中,可视化工具可以提供所有的节点和其对应的运行时的曲线图。这样的图可以具有对应于运行时的轴、另一轴列出每个节点。任选地,由运行时排序,使得具有最长运行时的节点与最短运行时的节点正好相对。图形可以包含线、点、符号或其他,经尺寸化和/或定位,以说明运行时。在一个实施例中,用户可以用鼠标或以其他方式选择运行时比较表或曲线中的特定节点,这可使得性能可视化中相应的节点块显示特性被改变(例如,突出显示或以其它方式强调),以使用户能够快速看到该节点块出现的地方。
应当指出的是,本文所述的以动画并行依赖图为参考的各种实施例也可以在任何其他的多线程计算机程序和进程中使用。在这样情况下的示例性的可视化工具可以包含生成性能可视化、统计及其他从一个多线程的计算机程序或进程的运行时分析数据等。该数据可以包含识别计算机程序中的各个线程、进程或子进程,以及每个线程、进程或子进程运行时执行的起始时间和停止时间的信息。示例性可视化工具可以分析数据并生成性能可视化,以图形方式显示了程序执行时的并发性水平(例如,如何在程序中很好的体现并行性或程序如何利用多个处理内核)。该工具还可以生成统计数据和各种不同的图形插图,用于分析多线程程序,正如本文所论述的并行的依赖图。
软件程序员、程序设计师、技术总监等可以使用性能可视化、统计及其他插图,以可视化数据流和分析程序的性能,尤其是程序的结构如何进行并行执行。优化可以被定向到这些线程、进程或子进程,直接影响如图所示的性能可视化的整体运行。此外,程序或进程的顺序或结构可被修饰以表达更多的并行性和通过关注有额外并行性能的区域来降低可视化总体运行时。同样,新进程或额外的线程可以被插入到多线程程序区域里,其中性能可视化示出了评估期间的空闲并行能力。因此,本文所讨论的用于并行依赖图的各种实施例和示例可以容易地扩展到任何其它多线程计算机程序或进程。
图8描述了一个示例性运算系统800,配置为执行上述进程中的任何一个。在这种情况下,运算系统800可包含,例如,处理器(它可以具有多个内核)、内存、存储器和输入/输出设备(例如,显示器、键盘、磁盘驱动器、因特网连接,等等)。然而,运算系统800可包含用于执行进程的一些或所有方面的电路或其它专门硬件。在一些运行设置中,运算系统800可以被配置为包含一个或多个单元的系统,其中的每一个被配置为执行软件和/或硬件中进程的某些方面。
图8示例性地描述了具有多个组件的运算系统800,其可被用来执行上述进程。主系统802包含主板804,主板804具有输入/输出(“I/O”)部分806,一个或多个中央处理单元(“CPU”)808(可以具有多个内核),以及存储器部分810,其可具有相关的闪存卡812。I/O部分806连接到显示器824、键盘814、磁盘存储单元816和媒体驱动单元818。媒体驱动单元818可以读/写永久性计算机可读存储介质820,其中可以包含程序822或数据。
至少根据上述进程的结果的一些值可以被保存以供后续使用。此外,永久性计算机可读存储介质可以通过计算机用于存储(例如有形地体现)一个或多个计算机程序,该程序用于执行上述进程中的任何一种。该计算机程序可以被写,例如,在一般的通用编程语言(如Pascal,C,C++)或一些专门的申请程序特定的语言。
这里详细描述了一些示例性的实施例。在不偏离本技术真正精神和范围的前提下,本领域技术人员可对各种实施例进行更改。例如,所公开的实施例的各部分可与其他实施例相组合。相应地,所有这些组合都包含在本文所公开的范围内。
Claims (23)
1.一种用于在计算机动画的并行依赖图生成性能可视化的计算机实现方法,其中所述方法包含:
接收包含并行依赖图的多个节点多个运行时评估条目的数据文件,其中,所述运行时评估条目包含结点标识和运行时期间;
基于所述数据文件中的若干并发执行的节点,确定所述并行依赖图中多个节点中至少两个节点的并发性级别;
为所述至少两个节点中任一生成节点块;
根据所述并发性级别和运行时期间确定节点块的尺寸和位置;和
生成具有确定尺寸和位置的一个或多个节点块的性能可视化。
2.根据权利要求1所述的计算机实现方法,其中所述运行时期间包含起始时间和停止时间。
3.根据权利要求2的计算机实现方法,其中确定节点块的尺寸和位置包含:
基于对应的所述起始时间和停止时间之差确定节点块的尺寸,以及
基于相应的所述起始时间、该时间对应节点所确定的并发性级别来确定所述节点块的位置。
4.根据权利要求2所述计算机实现方法,其中所述节点块的前缘对应于所述数据文件中的对应节点的起始时间,和结点块的后缘对应于所述数据文件中的对应节点的停止时间。
5.根据权利要求2所述的计算机实现的方法,其中确定所述节点块的尺寸和位置包含:
基于相应节点所确定的所述并发性级别确定所述节点块的垂直位置。
6.根据权利要求2所述的计算机实现的方法,其中进一步包含:
接收所述性能可视化中的特定节点块的特性的请求;和
响应于接收到的所述特定节点块的特性的请求,提供所述特定节点块的相应的节点标识符、起始时间和停止时间。
7.根据权利要求6所述的计算机实现的方法,其中还包含:
确定与相应的节点块相关联节点的上游来源和下游后代,以及
响应于接收到所述特定节点块的特性请求,提供特定节点块的相应的所述上游来源和下游后代。
8.根据权利要求7所述的计算机实现的方法,其中进一步包含:
使所述并行依赖图显示性能可视化;和
响应于接收到的所述特定节点块的特性请求,改变所述特定节点块的相应的上游来源和下游后代的显示属性。
9.根据权利要求6所述的计算机实现的方法,其中所述数据文件的运行时评估条目,进一步包含处理器内核的识别,并且其中所述方法进一步包含:
响应于接收到的所述特定节点块的特性请求,提供所述特定的节点块对应的处理器内核的识别。
10.根据权利要求1所述的计算机实现的方法,其中进一步包含:
给节点块分配一个与同时运行其他节点块的并发性级别不同的并发性级别;和
基于所分配的并发性级别确定节点块的位置。
11.根据权利要求1所述的计算机实现的方法,其中进一步包含:
使所述并行依赖图的性能可视化显示。
12.根据权利要求1所述的计算机实现的方法,其中进一步包含:
通过所述并行依赖图确定节点的关键路径;和
基于所述并行依赖图的节点的关键路径,确定所述性能可视化中的一个或多个节点块的位置。
13.根据权利要求12所述的计算机实现的方法,其中:通过并行依赖图确定节点的关键路径包含:
从所述数据文件中,确定运行时期间最长的节点链。
14.根据权利要求13所述的计算机实现的方法,还包含:
改变对应于所述关键路径上的节点的一个或多个节点块的显示属性。
15.一种用于生成计算机动画并行依赖图的性能可视化的、包含计算机可执行指令的永久性计算机可读存储介质,所述计算机可执行指令包含:
接收包含并行依赖图的多个节点多个运行时评估条目的数据文件,其中,运行时评估条目包含结点标识和运行时期间;
基于所述数据文件中的若干并发执行的节点,确定所述并行依赖图中多个节点中至少两个节点的并发性级别;
为所述至少两个节点中任一生成节点块;
根据所述并发性级别和运行时期间确定节点块的尺寸和位置;和
生成具有确定尺寸和位置的一个或多个节点块的性能可视化。
16.根据权利要求15所述的计算机可读存储介质,其中,确定节点块的尺寸和位置包含:
基于相应节点所确定的所述并发性级别确定所述节点块的垂直位置。
17.根据权利要求15所述的计算机可读存储介质,其中进一步包含:通过所述并行依赖图从所述数据文件中,确定运行时期间最长的节点链;
通过所述并行依赖图基于节点的关键路径确定性能可视化的一个或多个节点块的位置。
18.一种用于在计算机动画的并行依赖图生成性能可视化的系统,所述系统包含:
被配置为存储数据的存储器;和
计算机处理器,所述计算机处理器被配置为:
接收包含并行依赖图的多个节点多个运行时评估条目的数据文件,其中,所述运行时评估条目包含结点标识和运行时期间;
基于所述数据文件中的若干并发执行的节点,确定所述并行依赖图中多个节点中至少两个节点的并发性级别;
为所述至少两个节点中任一生成节点块;
根据所述并发性级别和运行时期间确定节点块的尺寸和位置;和
生成具有确定尺寸和位置的一个或多个节点块的所述并行依赖图的性能可视化。
19.根据权利要求18所述的系统,其中,确定节点块的尺寸和位置包含:
基于相应节点所确定的所述并发性级别确定所述节点块的垂直位置。
20.根据权利要求18所述的系统,所述计算机处理器进一步被配置为:
通过所述并行依赖图从所述数据文件中,确定运行时期间最长的节点链;
通过所述并行依赖图、基于节点的关键路径确定性能可视化的一个或多个节点块的位置。
21.一种用于生成多线程计算机程序的性能可视化的计算机实现方法,其中所述方法包含:
接收包含多线程计算机程序的多个进程的评估条目的数据文件,其中,所述运行时评估条目包含进程标识、起始时间和停止时间;
从所述数据文件中的若干并发执行的进程,确定所述多线程计算机程序中多个进程中至少两个进程的并发性级别;
为所述至少两个进程中任一生成进程块;
根据所述并发性级别和起始时间确定进程块的尺寸和位置;和
生成具有确定尺寸和位置的一个或多个进程块的多线程计算机程序的性能可视化。
22.根据权利要求21所述的计算机实现方法,其中确定进程块的尺寸和位置包含:
基于相应进程所确定的所述并发性级别确定所述进程块的垂直位置。
23.根据权利要求21所述的计算机实现方法,进一步包含:
通过所述多线程计算机程序从所述数据文件中,确定运行时期间最长的进程链为关键路径进程;
通过所述多线程计算机程序、基于进程的关键路径确定性能可视化的一个或多个进程块的位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/797,895 US9691171B2 (en) | 2012-08-03 | 2013-03-12 | Visualization tool for parallel dependency graph evaluation |
US13/797,895 | 2013-03-12 | ||
PCT/US2014/025013 WO2014165262A1 (en) | 2013-03-12 | 2014-03-12 | Visualization tool for parallel dependency graph evaluation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104380344A true CN104380344A (zh) | 2015-02-25 |
Family
ID=50276983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480000181.6A Pending CN104380344A (zh) | 2013-03-12 | 2014-03-12 | 用于并行依赖图评估的可视化工具 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9691171B2 (zh) |
EP (1) | EP2779098A3 (zh) |
CN (1) | CN104380344A (zh) |
WO (1) | WO2014165262A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022041024A1 (zh) * | 2020-08-27 | 2022-03-03 | 清华大学 | 并行程序可扩展性瓶颈检测方法和计算装置 |
CN116628351A (zh) * | 2023-07-26 | 2023-08-22 | 安徽思高智能科技有限公司 | 基于节点依赖的流程图分支推荐方法、设备及存储设备 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6287018B2 (ja) * | 2013-10-04 | 2018-03-07 | 富士通株式会社 | 可視化方法、表示方法、情報処理装置、可視化プログラム及び表示プログラム |
GB2521367A (en) * | 2013-12-17 | 2015-06-24 | Ibm | Adaptable and extensible runtime and system for heterogeneous computer systems |
US20150242533A1 (en) * | 2014-02-26 | 2015-08-27 | Keysight Technologies, Inc. | Method and Apparatus for Analyzing Data Flows |
JP6511860B2 (ja) * | 2015-02-27 | 2019-05-15 | 富士通株式会社 | 表示制御システム、グラフ表示方法およびグラフ表示プログラム |
US10008019B2 (en) | 2015-04-15 | 2018-06-26 | Autodesk, Inc. | Evaluation manager for 3D animation scenes |
US10297064B2 (en) * | 2015-09-21 | 2019-05-21 | Dreamworks Animation L.L.C. | Multi-representation dependency graphs |
US11119886B2 (en) * | 2016-02-17 | 2021-09-14 | Mitsubishi Electric Corporation | Software analysis apparatus, software analysis method, and computer readable medium |
US10546411B2 (en) * | 2016-03-31 | 2020-01-28 | Intel Corporation | Directed acyclic graph path enumeration with application in multilevel instancing |
US10332289B2 (en) * | 2017-03-15 | 2019-06-25 | Salesforce.Com, Inc. | Methods and systems for providing a visual feedback representation of performance metrics |
US10628909B2 (en) * | 2018-06-01 | 2020-04-21 | Apple Inc. | Graphics processing unit resource dependency viewer |
US20230196240A1 (en) * | 2021-12-21 | 2023-06-22 | Servicenow, Inc. | Multi-Dimensional Process Mining and Analysis |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256339A1 (en) * | 2007-04-11 | 2008-10-16 | Freescale Semiconductor, Inc. | Techniques for Tracing Processes in a Multi-Threaded Processor |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
US20100214313A1 (en) * | 2005-04-19 | 2010-08-26 | Digitalfish, Inc. | Techniques and Workflows for Computer Graphics Animation System |
CN101916324A (zh) * | 2008-11-17 | 2010-12-15 | 迪士尼企业公司 | 用于动画的依赖图评估的系统和方法 |
US20110060704A1 (en) * | 2009-09-10 | 2011-03-10 | Microsoft Corporation | Dependency graph in data-driven model |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5168554A (en) * | 1989-10-13 | 1992-12-01 | International Business Machines Corporation | Converting trace data from processors executing in parallel into graphical form |
US6111582A (en) | 1996-12-20 | 2000-08-29 | Jenkins; Barry L. | System and method of image generation and encoding using primitive reprojection |
KR100248376B1 (ko) | 1997-10-28 | 2000-03-15 | 정선종 | 동적-비주얼 통합 병렬 디버깅 장치 및 디버깅 방법 |
US6226787B1 (en) | 1999-01-25 | 2001-05-01 | Hewlett-Packard Company | Visualization method and system for dynamically displaying operations of a program |
US6434714B1 (en) | 1999-02-04 | 2002-08-13 | Sun Microsystems, Inc. | Methods, systems, and articles of manufacture for analyzing performance of application programs |
WO2004072796A2 (en) | 2003-02-05 | 2004-08-26 | Arizona Board Of Regents | Reconfigurable processing |
US7698686B2 (en) | 2005-04-15 | 2010-04-13 | Microsoft Corporation | Method and apparatus for performance analysis on a software program |
US8015564B1 (en) | 2005-04-27 | 2011-09-06 | Hewlett-Packard Development Company, L.P. | Method of dispatching tasks in multi-processor computing environment with dispatching rules and monitoring of system status |
US7969434B2 (en) | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US8286135B2 (en) | 2006-10-17 | 2012-10-09 | Cray Inc. | Performance visualization including hierarchical display of performance data |
KR101607495B1 (ko) | 2008-07-10 | 2016-03-30 | 로케틱 테크놀로지즈 리미티드 | 디펜던시 문제의 효율적인 병렬 계산 |
US8531451B2 (en) | 2009-06-19 | 2013-09-10 | Microsoft Corporation | Data-driven visualization transformation |
US8692826B2 (en) | 2009-06-19 | 2014-04-08 | Brian C. Beckman | Solver-based visualization framework |
US8973010B2 (en) * | 2010-05-28 | 2015-03-03 | Varian Medical Systems International, AG | Scheduling image recognition tasks based on task dependency and phase |
US8566647B2 (en) * | 2010-12-20 | 2013-10-22 | Microsoft Corporation | Debugger presentation of parallel application threads |
US8869148B2 (en) * | 2012-09-21 | 2014-10-21 | International Business Machines Corporation | Concurrency identification for processing of multistage workflows |
-
2013
- 2013-03-12 US US13/797,895 patent/US9691171B2/en active Active
-
2014
- 2014-03-12 EP EP14159242.8A patent/EP2779098A3/en not_active Withdrawn
- 2014-03-12 CN CN201480000181.6A patent/CN104380344A/zh active Pending
- 2014-03-12 WO PCT/US2014/025013 patent/WO2014165262A1/en active Application Filing
-
2017
- 2017-06-09 US US15/619,284 patent/US10896112B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100214313A1 (en) * | 2005-04-19 | 2010-08-26 | Digitalfish, Inc. | Techniques and Workflows for Computer Graphics Animation System |
US20080256339A1 (en) * | 2007-04-11 | 2008-10-16 | Freescale Semiconductor, Inc. | Techniques for Tracing Processes in a Multi-Threaded Processor |
CN101916324A (zh) * | 2008-11-17 | 2010-12-15 | 迪士尼企业公司 | 用于动画的依赖图评估的系统和方法 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
US20110060704A1 (en) * | 2009-09-10 | 2011-03-10 | Microsoft Corporation | Dependency graph in data-driven model |
US8352397B2 (en) * | 2009-09-10 | 2013-01-08 | Microsoft Corporation | Dependency graph in data-driven model |
Non-Patent Citations (4)
Title |
---|
BROBERG, ET AL.: "VPPB - A Visualization and Performance Prediction Tool for Multithreaded Solaris Programs", 《IEEE PARALLEL PROCESSING SYMPOSIUM》 * |
BROBERG,MAGNUS,ET AL.: "Performance Optimization Using Extended Critical Path Analysis in Multithreaded Programs on Multiprocessors", 《JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING》 * |
MARTIN WATT ET AL.: "LibEE: A Multithreaded Dependency Graph for Character Animation", 《PROCEEDINGS OF THE DIGITAL PRODUCTION SYMPOSIUM ON,DIGIPRO》 * |
MICHAEL T. HEATH,JENNIFER E. FINGER: "ParaGraph: A Performance Visualization Tool for MPI", 《HTTPS://WWW.RESEARCHGATE.NET/PUBLICATION/250034000》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022041024A1 (zh) * | 2020-08-27 | 2022-03-03 | 清华大学 | 并行程序可扩展性瓶颈检测方法和计算装置 |
US11768754B2 (en) | 2020-08-27 | 2023-09-26 | Tsinghua University | Parallel program scalability bottleneck detection method and computing device |
CN116628351A (zh) * | 2023-07-26 | 2023-08-22 | 安徽思高智能科技有限公司 | 基于节点依赖的流程图分支推荐方法、设备及存储设备 |
CN116628351B (zh) * | 2023-07-26 | 2023-10-20 | 安徽思高智能科技有限公司 | 基于节点依赖的流程图分支推荐方法、设备及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
US10896112B2 (en) | 2021-01-19 |
US20140035922A1 (en) | 2014-02-06 |
EP2779098A3 (en) | 2017-10-11 |
WO2014165262A1 (en) | 2014-10-09 |
US20170278290A1 (en) | 2017-09-28 |
EP2779098A2 (en) | 2014-09-17 |
US9691171B2 (en) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104380344A (zh) | 用于并行依赖图评估的可视化工具 | |
US8438534B2 (en) | Transformation of data between hierarchical data formats | |
US6205575B1 (en) | Scenario presentation tool | |
US8683431B2 (en) | Applying rules to data | |
CN106507686B (zh) | 设计不同技术领域的复杂信息物理系统的具有其各种软件工件的软件架构的方法和系统 | |
US20110161371A1 (en) | Sql generation | |
US8140894B2 (en) | Transaction regions in graphical computer-implemented methods of processing data | |
US20110161946A1 (en) | Batch data processing | |
US8732596B2 (en) | Transformation of hierarchical data formats using graphical rules | |
US20110161917A1 (en) | Processing collections of data items | |
Gschwind et al. | A linear time layout algorithm for business process models | |
Kasyanov et al. | Visualization methods and algorithms for graph representation of functional programs | |
US8850404B2 (en) | Relational modeling for performance analysis of multi-core processors using virtual tasks | |
US8572551B2 (en) | Difference log production for model merging | |
US20100318655A1 (en) | Concurrent Processing With Untrusted Beings | |
US8826234B2 (en) | Relational modeling for performance analysis of multi-core processors | |
Järvi et al. | Property models: from incidental algorithms to reusable components | |
Meyer et al. | Visual monitoring of process runs: An application study for stored procedures | |
Frank | Techniques for visualization and interaction in software architecture optimization | |
KR20190143595A (ko) | 동시병행 일정 최적화 방법 및 시스템 | |
Rodgers et al. | Multi-level visualization of concurrent and distributed computation in Erlang | |
Kemper et al. | Visualizing the Dynamic Behavior of ProC/B Models. | |
Dooms et al. | Model-driven visualizations of constraint-based local search | |
EP0738964B1 (en) | Method for animating composite behavior of scenarios | |
Privitera | Creation of a web platform for event-flow visualization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150225 |