[发明专利]用于分析多线程应用的性能的方法和系统有效
申请号: | 201180028522.7 | 申请日: | 2011-05-20 |
公开(公告)号: | CN102918501A | 公开(公告)日: | 2013-02-06 |
发明(设计)人: | A.佩古辛;A.库里列夫 | 申请(专利权)人: | 英特尔公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/38 |
代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 马永利;李浩 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 分析 多线程 应用 性能 方法 系统 | ||
技术领域
本发明涉及多线程应用,并且更具体地但不排他地,涉及确定使用多线程框架的多线程应用的特定问题的分析模型。
背景技术
多线程框架,例如开放多处理(OpenMP)、Intel? 线程构建块(TBB)、Intel? Cilk++、用于吞吐量计算的Intel? C++(Ct)、以及Microsoft?并行模式库(PPL),允许并行性以改进多线程应用的性能。多线程应用的优点可以在具有多个中央处理单元(CPU)或者具有带有多个核心的CPU的计算机系统上被观察到,因为多线程应用的每个线程使用CPU/核心之一以用于并行执行。
然而,如果多线程框架被不正确地使用以执行多线程应用,则并行性的优点可能被损害。图1A示出并行循环的现有技术代码100。函数foo()的粒度被设置为1。取决于函数foo()花费多长时间来执行,并行性的优点可能被损害,因为1的粒度太精细。
图1B示出具有动态调度的并行循环的现有技术代码130。函数foo()的粒度被设置为3。动态调度需要分布式开销,并且取决于函数foo()花费多长时间来执行,并行性的优点可能被损害,因为3的粒度太精细。
图1C示出从仅仅一个线程衍生(spawn)或创建工作任务的现有技术代码150。取决于变量N被设置为多大,现有技术代码150可能具有线性衍生问题,所述线性衍生问题具有相当大的活动的挪用(stealing)开销。例如,当变量N被设置为大于100时,这一执行比具有递归衍生的另一执行在规模(scale)上坏得多。
现有技术代码100、130和150示出其中多线程应用可能被不正确地或低效地使用的可能情景。
附图说明
根据本主题的下列详细描述,本发明的实施例的特征和优点将变得明显,其中:
图1A示出并行循环的现有技术代码;
图1B示出具有动态调度的并行循环的现有技术代码;
图1C示出从仅仅一个线程衍生或创建工作任务的现有技术代码;
图2示出根据本发明的一个实施例的平台的模块;
图3示出根据本发明的一个实施例的基于工作者线程生存周期状态机的分析模型;
图4示出根据本发明的一个实施例的分析多线程应用的性能的步骤的流程图;
图5A示出根据本发明的一个实施例的对于多线程应用的每个并行区域确定并行开销的原因的步骤的流程图;
图5B示出根据本发明的一个实施例的对于多线程应用的每个并行区域确定并行开销的原因的步骤的流程图;以及
图6示出根据本发明的一个实施例的实施在这里公开的方法的系统。
具体实施方式
在这里描述的本发明的实施例在附图中作为例子而不是作为限制被示出。为了说明的简单和清楚起见,在附图中示出的元件不一定是按比例绘制的。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,在被认为适当的情况下,附图标记已在附图中被重复以指示对应的或类似的元件。在本说明书中对本发明的“一个实施例”或“实施例”的提及是指,结合该实施例所描述的特定的特征、结构、或特性被包括在本发明的至少一个实施例中。因此,在整个说明书中的各种位置中出现的短语“在一个实施例中”不一定都是指相同的实施例。
本发明的实施例提供确定使用多线程框架的多线程应用的特定问题的分析模型。在本发明的一个实施例中,多线程应用使用多个线程以用于执行,并且基于每个线程的当前状态,每个线程被分配给多个状态中的相应状态。通过这样做,基于对于每个线程而言在多个状态之间转移的频率,确定多线程应用的特定问题。在本发明的一个实施例中,分析模型使用工作者线程转移计数器或事件以对于多线程应用的每个并行区域或算法来确定哪个问题已经发生以及它对于并行区域或算法的可伸缩性有多少影响。
在本发明的一个实施例中,如果从用户的观点来看来自多线程应用的并行执行的性能好处是不重要的或不可接受的,则使用多线程框架或并行线程库来执行多线程应用是低效的或成问题的。性能好处包括但不限于更快的执行时间、更小数量的CPU节拍(tick)等等。例如,在本发明的一个实施例中,当执行多线程应用的并行开销可与来自多线程应用的并行执行的性能好处相比或者超过该性能好处时,使用多线程框架来执行多线程应用是低效的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201180028522.7/2.html,转载请声明来源钻瓜专利网。