CN102918501A - 用于分析多线程应用的性能的方法和系统 - Google Patents

用于分析多线程应用的性能的方法和系统 Download PDF

Info

Publication number
CN102918501A
CN102918501A CN2011800285227A CN201180028522A CN102918501A CN 102918501 A CN102918501 A CN 102918501A CN 2011800285227 A CN2011800285227 A CN 2011800285227A CN 201180028522 A CN201180028522 A CN 201180028522A CN 102918501 A CN102918501 A CN 102918501A
Authority
CN
China
Prior art keywords
parallel
state
thread
multithreading
task
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.)
Granted
Application number
CN2011800285227A
Other languages
English (en)
Other versions
CN102918501B (zh
Inventor
A.佩古辛
A.库里列夫
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.)
Intel Corp
Original Assignee
Intel 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
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102918501A publication Critical patent/CN102918501A/zh
Application granted granted Critical
Publication of CN102918501B publication Critical patent/CN102918501B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

提供确定多线程应用的特定问题的分析模型的方法和系统。在本发明的一个实施例中,多线程应用使用多个线程以用于执行,以及基于每个线程的当前状态,每个线程被分配给多个状态中的相应状态。通过这样做,基于对于每个线程而言在多个状态之间转移的数目,确定多线程应用的特定问题。在本发明的一个实施例中,分析模型使用工作者线程转移计数器或事件以对于多线程应用的每个并行区域或算法来确定哪个问题已经发生以及它对于并行区域或算法的可伸缩性有多少影响。

Description

用于分析多线程应用的性能的方法和系统
技术领域
本发明涉及多线程应用,并且更具体地但不排他地,涉及确定使用多线程框架的多线程应用的特定问题的分析模型。
背景技术
多线程框架,例如开放多处理(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)等等。例如,在本发明的一个实施例中,当执行多线程应用的并行开销可与来自多线程应用的并行执行的性能好处相比或者超过该性能好处时,使用多线程框架来执行多线程应用是低效的。
图2示出根据本发明的一个实施例的平台200的模块。平台或系统200具有多个处理器和/或多核心处理器,并且操作系统(OS)250在所述多个处理器的至少一个处理器上或者在多核心处理器的一个核心上执行。OS 250具有可以用来在平台200上执行多线程应用210的本地线程255的池。
资源管理器240管理本地线程255的池并控制线程对于执行的可用性。任务调度器230调度要由来自本地线程255的池的可用线程执行的任务。并行线程库220包含可以使用本地线程255由用于并行执行的多线程应用210参考的或使用的功能。
在本发明的一个实施例中,多线程应用210使用并行线程库220或多线程框架,所述多线程框架包括但不限于开放多处理(OpenMP)、Intel® 线程构建块(TBB)、Intel® Cilk++、用于吞吐量计算的Intel® C++(Ct)、Microsoft®并行模式库(PPL)和任何其他多线程框架。
在本发明的一个实施例中,并行线程库220具有确定多线程应用210具有次优并行算法以及使用分析模型来确定次优并行算法的一个或多个性能问题的逻辑。在本发明的另一实施例中,所述逻辑是Intel®并行放大器软件的一部分。在本发明的又一实施例中,所述逻辑可以是平台200的任何模块的一部分。
虽然平台200的模块被描绘为分开的块,但是一个模块的操作可以由另一模块执行。例如,在一个实施例中,OS 250可以执行资源管理器240的功能。在另一实施例中,并行线程库220也可以与OS 250相集成。相关领域的普通技术人员将容易认识到,可以执行模块或功能的不同组合而不影响本发明的工作。
图3示出根据本发明的一个实施例的基于工作者线程生存周期状态机的分析模型300。当执行多线程应用时,招致或需要并行开销以便执行多线程应用的并行执行。并行开销包括但不限于线程维护、在工作者线程之间的作业分配等等。并行开销在本发明的一个实施例中被分类成活动的和非活动的并行开销。
在本发明的一个实施例中,在过多的活动的并行开销会影响多线程应用的并行执行的情况下有两种情景。当一个或多个工作者线程花费太多的它们的生存期从它们的本地队列中取作业单元或任务时,活动的并行开销的第一情景发生。第一情景是由于多线程应用的并行区域的粒度被设置为太精细或太小的水平。当一个或多个工作者线程花费太多的它们的生存期在其他任务队列中或在全局作业管理者队列中寻找任务时,即工作者线程除了它自己的本地队列之外还从另一源中挪用任务时,活动的并行开销的第二情景发生。
类似地,在本发明的一个实施例中,在过多的非活动的并行开销会影响多线程应用的并行执行的情况下有两种情景。当一个或多个工作者线程因为它们已完成它们的任务但是不能帮助仍在忙于执行它们的任务的剩余工作者线程而变为空闲时,非活动的并行开销的第一情景发生。所述一个或多个工作者线程的过多等待造成非活动的并行开销。
当没有足够的作业或任务创建来充满或利用所有可用工作者线程时,非活动的并行开销的第二情景发生。工作者线程连续地从执行一个任务转移到搜索另一任务并且当没有可用任务时进入空闲状态。当新任务可用时,所有可用线程再次变为活动的。对于新任务没有分配的可用线程反复进行连续转移以搜索另一任务并且当没有可用任务时进入空闲状态。
在本发明的一个实施例中,使用分析模型300在多线程应用的并行区域的执行期间识别活动的和非活动的并行开销的四种情景。活动的和非活动的并行开销的四种情景中的一个或多个可以在多线程应用的并行区域内发生。分析模型300具有工作者线程生存周期状态机,其具有描述工作者线程的当前状态的四个状态。每个工作者线程在它的生存期期间被分配给四个状态之一。
第一状态是用户代码执行状态310,其中每个线程在它处于执行多线程应用的并行区域的一部分的当前状态时被分配给用户代码执行状态310。当执行调度器旁路316时,工作者线程保持在用户代码执行状态310。理想地,每个工作者线程应当保持在用户代码执行状态310以使活动的和非活动的并行开销最小化。
第二状态是本地队列查找状态320,其中每个线程在它处于在它的本地队列中搜索作业或任务的当前状态时被分配给本地队列查找状态320。每个线程在它完成它的当前任务之后进入本地队列查找状态320,并且在它的本地任务队列中搜索新任务。
第三状态是全局任务搜索状态330,其中每个线程在它处于在另一任务队列或在全局队列中搜索任务的当前状态时被分配给全局任务搜索状态330。每个线程当它在本地队列查找状态320期间在它的本地队列中不能找到任务时进入全局任务搜索状态330。
第四状态是等待状态340,其中每个线程在它处于非活动或空闲状态的当前状态时被分配给等待状态340。每个线程当它在全局任务搜索状态330期间不能找到任务时进入等待状态340。当新任务变为可用时,处于等待状态340的每个线程回到全局任务搜索状态330以寻找新任务。状态转移路径312、314、316、322、332、334、336和338示出每个线程在分析模型300的四个状态之间的状态转移。
在本发明的一个实施例中,在多线程应用的并行区域执行期间测量或计算每个线程在分析模型300的四个状态之间的状态转移的数目。在本发明的一个实施例中,整个多线程应用被执行以确定每个线程在分析模型300的四个状态之间的状态转移的数目。在本发明的另一实施例中,多线程应用的仅仅一部分被执行以确定每个线程在分析模型300的四个状态之间的状态转移的数目。要被执行的多线程应用的部分是基于但不限于测量时段、多线程应用的总运行时间的百分比等等。
为了识别在多线程应用的并行区域的执行期间存在活动的和非活动的并行开销的四种情景中的哪个情景,在本发明的一个实施例中使用每个线程在分析模型300的四个状态之间的状态转移的经测量数目。在本发明的另一实施例中,使用在分析模型300的四个状态之间的状态转移的频率。例如,在本发明的一个实施例中,所述频率是从状态转移的经测量数目与测量时段的持续时间的比来确定的。
在本发明的一个实施例中,当对于每个线程而言任务或作业执行的频率超过阈值时,识别或确定活动的并行开销的第一情景。在本发明的一个实施例中,确定由每个工作者线程所执行的任务的数目。由每个工作者线程所执行的任务的数目是通过把从它的本地队列中取的任务的数目与从另一任务队列或全局队列中取的任务的数目相加来确定的。对于每个线程而言任务或作业执行的频率是通过由每个工作者线程所执行的任务的数目与测量时段的持续时间的比来确定的。
对于每个线程而言从它的本地队列中取的任务的数目是从如在分析模型300中所示的、从用户代码执行状态310到本地队列查找状态320的状态转移路径312的出现的数目来确定的。对于每个线程而言从另一任务队列或全局队列中取的任务的数目是从本地队列查找状态320到全局任务搜索状态330的状态转移和反复进行全局任务搜索状态330的出现的数目来确定的。
当识别活动的并行开销的第一情景时,把关于活动的并行开销的原因是由于每个工作者线程花费太多的它的生存期从本地队列中取任务(即多线程应用的并行区域的任务的粒度太精细)的报告发送给用户。
当对于每个线程而言从另一任务队列或全局队列中取的任务的数目与从它的本地队列中取的任务的数目的比超过阈值时,识别或确定活动的并行开销的第二情景。在本发明的一个实施例中,阈值被设置为1,即当与从它的本地队列中取的任务相比每个线程正在执行从其他线程挪用的更多的任务时,第二情景发生。
当识别活动的并行开销的第二情景时,把关于活动的并行开销的原因是由于每个工作者线程花费太多的时间在另一队列中或在全局队列中寻找任务(即多线程应用的并行区域具有线性衍生问题)的报告发送给用户。
在本发明的一个实施例中,当从全局任务搜索状态330到全局任务搜索状态330和到等待状态340的状态转移的频率超过特定阈值时,识别或确定非活动的并行开销的第二情景。这在分析模型300中通过重复或反复进行全局任务搜索状态330的状态转移路径336和从全局任务搜索状态330到等待状态340的状态转移路径332来示出的。
当识别非活动的并行开销的第二情景时,把关于非活动的并行开销的原因是因为并行区域的任务的数目小于可用的或自由的工作者线程的数目(即多线程应用的并行区域的不足的作业或任务创建)的报告发送给用户。
在本发明的一个实施例中,当从全局任务搜索状态330到全局任务搜索状态330和到等待状态340的状态转移的频率没有超过特定阈值时并且当非活动的并行开销已经超过阈值时,识别或确定非活动的并行开销的第一情景。当识别非活动的并行开销的第一情景时,把关于活动的并行开销的原因是因为一个或多个工作者线程已完成它们的任务但是不能帮助剩余工作者线程(即线程的过多等待)的报告发送给用户。
当识别非活动的并行开销的第一情景时,把关于非活动的并行开销的原因是并行性的粒度太粗的报告发送给用户。这意味着,工作被划分成太大的块,这限制所创建的块的数目,其又限制并行性。
当活动的和非活动的并行开销的一个或多个情景被识别时,在本发明的一个实施例中它允许基于生成的特定报告来校正多线程应用的特定并行区域。这允许多线程应用的并行执行的改进。本发明的实施例允许用户解释分析模型300的结果以基于报告或结论来改正多线程应用中的错误。在本发明的一个实施例中,除了对于每个情景的特定报告以外,还给出解决特定问题或情景的启示或建议。
分析模型300是基于工作者线程生存周期状态的,而不是基于任务的。这允许使用确定活动的和/或非活动的并行开销的原因的类似方法来分析基于任务的和非任务的多线程框架。在本发明的一个实施例中,分析模型可被集成到Intel®并行放大器软件中。
对于活动的和/或非活动的并行开销的四种情景的描述并不意味着是限制性的。相关领域的普通技术人员将容易认识到,可以识别其他情景而不影响本发明的工作。类似地,分析模型300中的四个状态并不意味着是限制性的。相关领域的普通技术人员将容易认识到,可以添加其他状态而不影响本发明的工作。
图4示出根据本发明的一个实施例的分析多线程应用的性能的步骤的流程图400。在步骤410,流程400识别多线程代码或应用的并行区域。在步骤415,流程400检查是否已找到并行区域。如果是的话,则流程400转到步骤420以对于每个识别的并行区域确定活动的和非活动的并行开销。如果否的话,则流程400结束。
在步骤425,流程400检查活动的和非活动的并行开销是否超过阈值。在本发明的一个实施例中,把单个阈值与活动的和非活动的并行开销进行比较。在本发明的另一实施例中,把分开的阈值分别与活动的和非活动的并行开销进行比较。如果是的话,则流程400转到步骤430以对于多线程代码或应用的每个并行区域确定并行开销的原因。如果否的话,则流程400结束。
图5A示出根据本发明的一个实施例的对于多线程应用的每个并行区域确定并行开销的原因的步骤的流程图500。为了清楚起见,参照图3来描述图5A。
在步骤510,所述流程设置监视时段并复位所有的状态转移路径计数器。在本发明的一个实施例中,对于状态转移路径312、314、316、322、332、334、336和338中的每个保持计数器。在步骤515,流程500在设置的监视时段内执行多线程应用的每个并行区域。在所述执行期间,当多线程应用的每个并行区域的每个线程在分析模型300中的四个状态310、320、330和340之间转移时,递增相应状态转移路径计数器。
在步骤520,流程500确定对于每个工作者线程而言任务或作业执行的频率。在步骤525,流程500确定对于每个工作者线程而言任务执行的频率是否超过阈值。例如,在本发明的一个实施例中,对于与多线程应用的执行相比不重要的TBB并行开销而言,任务可能必须是大于5000个CPU节拍。假设在以2吉赫(GHz)的时钟速度运行的CPU上执行多线程应用,400,000个任务应当以每秒每个线程来执行。阈值在本发明的一个实施例中被设置为每秒400,000个任务。
如果在步骤525中阈值被超过,则流程500转到步骤530以报告并行区域的特定问题。在本发明的一个实施例中,步骤530报告:活动的并行开销是由于每个工作者线程花费太多的它的生存期从本地队列中取任务。如果在步骤525中阈值没有被超过,则流程500转到步骤535。
在步骤535,流程500确定从另一任务队列或全局队列中取的任务(即挪用的任务)的数目与从对于每个线程而言它的本地队列中取的任务的数目的比。在步骤540,流程500确定所述比是否超过阈值。如果是的话,则流程500转到步骤545以报告并行区域的特定问题。在本发明的一个实施例中,步骤545报告:对于活动的并行开销的原因是由于每个工作者线程花费太多的时间寻找在另一任务队列中或在全局队列中的任务。如果否的话,流程500转到图5B中的步骤5B。
图5B示出根据本发明的一个实施例的对于多线程应用的每个并行区域确定并行开销的原因的步骤的流程图550。流程550从步骤5B转到步骤560。在步骤560,流程550确定非活动的并行开销是否超过阈值。如果否的话,则流程550结束。如果是的话,流程550转到步骤565以确定从全局任务搜索状态330到全局任务搜索状态330和到等待状态340的状态转移的频率。例如,在本发明的一个实施例中,流程550确定对于状态转移路径336和332的状态转移路径计数器的总和与设置的监视时段的持续时间的比。从这个比获得对于每个线程而言从全局任务搜索状态330到全局任务搜索状态330和到等待状态340的状态转移的频率。
在步骤570,流程550确定对于每个工作者线程而言从全局任务搜索状态330到全局任务搜索状态330和到等待状态340的状态转移的频率是否超过阈值。如果是的话,则流程550转到步骤575以报告并行区域的特定问题,并且流程550结束。在本发明的一个实施例中,步骤575报告:对于非活动的并行开销的原因是因为并行区域的任务的数目小于可用的或自由的工作者线程的数目。
如果否的话,则流程550转到步骤580以报告并行区域的特定问题,并且流程550结束。在本发明的一个实施例中,步骤580报告:对于非活动的并行开销的原因是因为一个或多个工作者线程已完成它们的任务但是不能帮助剩余工作者线程。
图4、5A和5B中所示的步骤并不意味着是限制性的。相关领域的普通技术人员将容易认识到,可以使用图4、5A和5B中所示的步骤的其他序列而不影响本发明的工作。例如,在本发明的一个实施例中,图4、5A和5B中所示的一些步骤被并行地执行。在本发明的一个实施例中,对于步骤425、525、540、565和575所需的阈值可以基于来自特定并行线程库或多线程框架的开发者的推荐来确定。在本发明的另一实施例中,对于步骤425、525、540、565和575所需的阈值可以基于执行分析模型300中四个状态310、320、330和340中的每个状态的成本来确定。
图6示出根据本发明的一个实施例的实施在这里公开的方法的系统。系统600包括但不限于台式计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、因特网装置、或任何其他类型的计算设备。在另一实施例中,用来实施在这里公开的方法的系统600可以是片上系统(SOC)的系统。
处理器610具有执行系统600的指令的处理核心612。处理核心612包括但不限于取指令的预取逻辑、译码指令的译码逻辑、执行指令的执行逻辑等等。处理器610具有对系统600的指令和/或数据进行高速缓存的高速缓冲存储器616。在本发明的另一实施例中,高速缓冲存储器616包括但不限于第1级、第2级、和第3级高速缓冲存储器或在处理器610内的高速缓冲存储器的任何其他配置。
存储器控制中心(MCH)614执行使处理器610能够访问包括易失性存储器632和/或非易失性存储器634的存储器630并与该存储器630通信的功能。易失性存储器632包括但不限于同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)、和/或任何其他类型的随机存取存储器设备。非易失性存储器634包括但不限于NAND闪速存储器、相变存储器(PCM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、或任何其他类型的非易失性存储器设备。
存储器630存储要由处理器610执行的信息和指令。存储器630还可以存储临时变量或其他中间信息,同时处理器610正在执行指令。芯片组620经由点对点(PtP)接口617和622而与处理器610连接。芯片组620使处理器610能够连接到系统600中的其他模块。在本发明的一个实施例中,接口617和622根据诸如Intel® QuickPath Interconnect(QPI)等等之类的PtP通信协议来操作。
芯片组620连接到显示设备640,显示设备640包括但不限于液晶显示器(LCD)、阴极射线管(CRT)显示器、或任何其他形式的视觉显示设备。在本发明的一个实施例中,处理器610和芯片组620被合并成SOC。另外,芯片组620连接到一个或多个总线650和655,所述一个或多个总线650和655互连各种模块674、660、662、664和666。如果在总线速度或通信协议上存在失配,则可以把总线650和655经由总线桥672互连在一起。芯片组620与非易失性存储器660、存储设备662、键盘/鼠标664和网络接口666相耦合,但不限于非易失性存储器660、存储设备662、键盘/鼠标664和网络接口666。在本发明的一个实施例中,固态驱动器102是存储设备662。
存储设备662包括但不限于固态驱动器、硬盘驱动器、通用串行总线闪速存储器驱动器、或任何其他形式的计算机数据存储介质。网络接口666使用任何类型的公知网络接口标准来实施,包括但不限于以太网接口、通用串行总线(USB)接口、外设部件互连(PCI)直通接口、无线接口和/或任何其他合适类型的接口。无线接口根据IEEE 802.11标准及其相关家族、家庭插头AV(HPAV)、超宽带(UWB)、蓝牙、WiMax、或任何形式的无线通信协议来操作,但不限于IEEE 802.11标准及其相关家族、家庭插头AV(HPAV)、超宽带(UWB)、蓝牙、WiMax、或任何形式的无线通信协议。
虽然图6中所示的模块被描绘为系统600内分开的块,但是由这些块中的一些执行的功能可以被集成在单个半导体电路内,或者可以使用两个或更多个分开的集成电路来实施。例如,虽然高速缓冲存储器616被描绘为处理器610内分开的块,但是高速缓冲存储器616可以分别被结合在处理器核心612内。在本发明的另一实施例中,系统600可以包括多于一个处理器/处理核心。
在这里公开的方法可以以硬件、软件、固件、或它们的任何其他组合来实施。虽然描述了所公开的主题的实施例的例子,但是相关领域的普通技术人员将容易认识到,可以替换地使用实施所公开的主题的许多其他方法。在前面的描述中已经描述了所公开的主题的各种方面。为了解释起见,阐述了特定的数目、系统和配置以便提供对于本主题的透彻理解。然而,对于具有本公开的益处的相关领域的技术人员而言下述是显然的,即本主题可以在没有特定细节的情况下被实践。在其他实例中,公知的特征、部件、或模块被省略、简化、组合、或分割以免模糊所公开的主题。
在这里使用的术语“能够操作”是指,设备、系统、协议等等当设备或系统处于断电状态时能够操作或适于操作以用于它的期望功能。所公开的主题的各种实施例可以以硬件、固件、软件、或它们的组合来实施,并且可以参照或结合程序代码来描述,诸如指令、函数、过程、数据结构、逻辑、应用程序、用于设计的模拟、仿真和制造的设计表示或格式之类的程序代码当由机器访问时导致机器执行任务、定义抽象数据类型或低级别硬件上下文、或产生结果。
在附图中所示的技术可以使用在一个或多个计算设备(例如通用计算机或计算设备)上存储和执行的代码和数据来实施。这样的计算设备使用机器可读介质(例如机器可读存储介质(例如磁盘、光盘、随机存取存储器、只读存储器、闪速存储器设备、相变存储器))和机器可读通信介质(例如电、光、声或其他形式的传播信号(例如载波、红外信号、数字信号等等))来存储和传送(内部地和通过网络与其他计算设备)代码和数据。
虽然已经参照说明性实施例描述了所公开的主题,但是该描述并不打算在限制性的意义上被解释。说明性实施例的各种修改以及本主题的其他实施例(其对于所公开的主题所涉及的领域的技术人员而言将是显然的)被认为处于所公开的主题的范围内。

Claims (23)

1.一种分析在多线程框架上执行的多线程应用的性能的方法,包括:
确定所述多线程应用的并行区域的并行开销是否超过阈值;以及
响应于关于所述多线程应用的并行区域的并行开销超过阈值的确定,确定所述并行区域的并行开销的一个或多个原因。
2.根据权利要求1所述的方法,其中,所述并行开销包括活动的并行开销和非活动的并行开销,以及其中确定所述多线程应用的并行区域的并行开销是否超过阈值包括:确定所述多线程应用的并行区域的活动的并行开销和/或非活动的并行开销是否超过阈值。
3.根据权利要求2所述的方法,其中,确定所述并行区域的并行开销的一个或多个原因包括:
基于设置的监视时段来执行所述并行区域。
4.根据权利要求3所述的方法,其中,所述并行区域的执行使用一个或多个工作者线程,以及其中确定所述并行区域的并行开销的一个或多个原因还包括:
响应于每个线程执行所述并行区域的一个或多个任务之一,将所述一个或多个工作者线程中的每个分配给用户代码执行状态;
响应于每个线程在本地队列中寻找任务,将所述一个或多个工作者线程中的每个分配给本地队列查找状态,其中所述任务是所述并行区域的一个或多个任务的一部分;
响应于每个线程在另一队列中或在全局队列中寻找另一任务,将所述一个或多个工作者线程中的每个分配给全局任务搜索状态,其中所述另一任务是所述并行区域的一个或多个任务的一部分;以及
响应于每个线程处于空闲状态,将所述一个或多个工作者线程中的每个分配给等待状态。
5.根据权利要求4所述的方法,其中,确定所述并行区域的并行开销的一个或多个原因还包括:
确定对于所述一个或多个工作者线程中的每个而言在所述本地队列、所述另一队列和所述全局队列中任务的执行的频率是否超过另一阈值;以及
响应于关于任务执行的频率超过另一阈值的确定,报告每个工作者线程正在花费太多的它的生存期从所述本地队列中取任务以作为所述并行区域的并行开销的一个或多个原因之一。
6.根据权利要求4所述的方法,其中,确定所述并行区域的并行开销的一个或多个原因还包括:
确定在所述本地队列中任务的执行与在所述另一队列和所述全局队列中任务的执行的比是否超过另一阈值;以及
响应于关于在所述本地队列中任务的执行与在所述另一队列和所述全局队列中任务的执行的比超过另一阈值的确定,报告每个工作者线程正在花费太多的时间寻找在所述另一本地队列中的另一任务或寻找在所述全局队列中的另一任务,以作为所述并行区域的并行开销的一个或多个原因之一。
7.根据权利要求4所述的方法,其中,确定所述并行区域的并行开销的一个或多个原因还包括:
确定对于所述一个或多个工作者线程中的每个而言从所述全局任务搜索状态到所述全局任务搜索状态和到所述等待状态的状态转移的频率是否超过另一阈值;
响应于关于对于所述一个或多个工作者线程中的每个而言从所述全局任务搜索状态到所述全局任务搜索状态和到所述等待状态的状态转移的频率超过另一阈值的确定,报告所述并行区域的一个或多个任务小于所述一个或多个工作者线程,以作为所述并行区域的并行开销的一个或多个原因之一;以及
响应于关于对于所述一个或多个工作者线程中的每个而言从所述全局任务搜索状态到所述全局任务搜索状态和到所述等待状态的状态转移的频率没有超过另一阈值的确定以及关于所述多线程应用的并行区域的非活动的并行开销超过阈值的确定,报告所述一个或多个工作者线程中的至少一个已完成它们的任务但是不能帮助所述一个或多个工作者线程中的剩余工作者线程,以作为所述并行区域的并行开销的一个或多个原因之一。
8.根据权利要求1所述的方法,其中,所述多线程框架至少部分地与开放多处理(OpenMP)、Intel® 线程构建块(TBB)、Intel® Cilk+-、用于吞吐量计算的Intel® C++(Ct)和Microsoft®并行模式库(PPL)之一相兼容。
9.一种装置,包括:
并行线程库;
操作系统,其使用所述并行线程库来执行多线程应用;
逻辑,其:
确定所述多线程应用包括次优并行算法;以及
使用线程生存周期状态机来确定所述次优并行算法的一个或多个性能问题。
10.根据权利要求9所述的装置,其中,确定所述多线程应用包括次优并行算法的所述逻辑确定所述次优算法的并行开销可与所述多线程应用的性能增益相比或者大于所述性能增益。
11.根据权利要求9所述的装置,其中,所述次优并行算法的一个或多个性能问题包括次优粒度、不足的并行松弛度、以及过多的任务挪用中的一个或多个。
12.根据权利要求9所述的装置,其中,所述线程生存周期状态机包括:执行状态,其中所述执行状态包括第一多个线程,所述第一多个线程中的每个处于执行所述次优并行算法的多个作业之一的状态;
本地队列查找状态,其中所述本地队列查找状态包括第二多个线程,所述第二多个线程中的每个处于搜索本地队列中的作业的状态,其中所述作业是所述次优并行算法的多个作业的一部分;
全局作业搜索状态,其中所述全局作业搜索状态包括第三多个线程,所述第三多个线程中的每个处于寻找在另一队列中或在全局队列中的另一作业的状态,其中所述另一作业是所述次优并行算法的多个作业的一部分;以及
等待状态,其中所述等待状态包括第四多个线程,所述第四多个线程中的每个处于空闲状态。
13.根据权利要求9所述的装置,其中,使用线程生存周期状态机来确定所述次优并行算法的一个或多个性能问题的所述逻辑:
在确定的时段内执行所述次优并行算法;
确定所述执行状态到所述本地队列查找状态的转移的数目与所述本地队列查找状态到所述全局作业搜索状态的转移和重复所述全局作业搜索状态的数目的总和;
确定所述总和与所述确定的时段的持续时间的比超过第一阈值;以及
识别所述次优并行算法的粒度太精细以作为所述次优并行算法的一个或多个性能问题中的第一问题。
14.根据权利要求13所述的装置,其中,使用线程生存周期状态机来确定所述次优并行算法的一个或多个性能问题的所述逻辑还:
确定所述本地队列查找状态到所述全局作业搜索状态的转移和重复所述全局作业搜索状态的数目与所述执行状态到所述本地队列查找状态的转移的数目的比超过第二阈值;以及
识别所述次优并行算法的线性衍生以作为所述次优并行算法的一个或多个性能问题中的第二问题。
15.根据权利要求14所述的装置,其中,使用线程生存周期状态机来确定所述次优并行算法的一个或多个性能问题的所述逻辑还:
确定所述全局作业搜索状态到所述全局作业搜索状态和到所述等待状态的转移的数目是否超过第三阈值;响应于关于所述全局作业搜索状态到所述全局作业搜索状态和到所述等待状态的转移的数目超过第三阈值的确定,识别所述次优并行算法的过多等待以作为所述次优并行算法的一个或多个性能问题中的第三问题;以及
响应于关于所述全局作业搜索状态到所述全局作业搜索状态和到所述等待状态的转移的数目没有超过第三阈值的确定以及关于所述次优并行算法的非活动的并行开销超过第四阈值的确定,识别所述次优并行算法的不足的作业创建以作为所述次优并行算法的一个或多个性能问题中的第四问题。
16.根据权利要求9所述的装置,其中,所述并行线程库至少部分地与开放多处理(OpenMP)、Intel® 线程构建块(TBB)、Intel® Cilk+-、用于吞吐量计算的Intel® C++(Ct)和Microsoft®并行模式库(PPL)之一相兼容。
17.根据权利要求9所述的装置,其中,所述逻辑是所述并行线程库的一部分。
18.一种具有在其上存储的指令的机器可读存储介质,所述指令在被执行时使得处理器执行下列方法:
基于每个线程的当前状态,将多个线程中的每个分配给多个状态中的相应状态;以及
至少部分地基于对于每个线程而言在所述多个状态之间转移的数目,确定多线程应用的并行区域的一个或多个问题。
19.根据权利要求18所述的介质,其中,所述多个状态包括:
执行状态,其中响应于每个线程处于执行所述多线程应用的并行区域的一部分的当前状态,将每个线程分配给所述执行状态;
本地队列查找状态,其中响应于每个线程处于搜索在本地队列中的作业的当前状态,将每个线程分配给所述本地队列查找状态,其中所述作业是所述多线程应用的并行区域的多个作业的一部分;
全局作业搜索状态,其中响应于每个线程处于寻找在另一队列中或在全局队列中的另一作业的当前状态,将每个线程分配给所述全局作业搜索状态,其中所述另一作业是所述多线程应用的并行区域的多个作业的一部分;以及
等待状态,其中响应于每个线程处于非活动的当前状态,将每个线程分配给所述等待状态。
20.根据权利要求18所述的介质,其中,至少部分地基于对于每个线程而言在所述多个状态之间转移的数目而确定多线程应用的并行区域的一个或多个问题包括:
在确定的时段内执行所述多线程应用的并行区域;
确定所述执行状态到所述本地队列查找状态的转移的数目与所述本地队列查找状态到所述全局作业搜索状态的转移和重复所述全局作业搜索状态的数目的总和;
确定所述总和与所述确定的时段的持续时间的比超过第一阈值;以及
识别所述次优并行算法的粒度太精细以作为所述次优并行算法的一个或多个性能问题中的第一问题。
21.根据权利要求20所述的介质,其中,至少部分地基于对于每个线程而言在所述多个状态之间转移的数目而确定多线程应用的并行区域的一个或多个问题包括:
确定所述本地队列查找状态到所述全局作业搜索状态的转移和重复所述全局作业搜索状态的数目与所述执行状态到所述本地队列查找状态的转移的数目的比超过第二阈值;以及
识别所述次优并行算法的线性衍生以作为所述次优并行算法的一个或多个性能问题中的第二问题。
22.根据权利要求21所述的介质,其中,至少部分地基于对于每个线程而言在所述多个状态之间转移的数目而确定多线程应用的并行区域的一个或多个问题包括:
确定所述全局作业搜索状态到所述全局作业搜索状态和到所述等待状态的转移的数目是否超过第三阈值;以及
响应于关于所述全局作业搜索状态到所述全局作业搜索状态和到所述等待状态的转移的数目超过第三阈值的确定,识别所述多线程应用的并行区域的过多等待以作为所述多线程应用的并行区域的一个或多个性能问题中的第三问题。
23.根据权利要求22所述的介质,其中,至少部分地基于对于每个线程而言在所述多个状态之间转移的数目而确定多线程应用的并行区域的一个或多个问题包括:
确定对于所述一个或多个工作者线程中的每个而言所述全局任务搜索状态到所述全局任务搜索状态和到所述等待状态的转移的数目是否超过另一阈值;
响应于关于所述全局作业搜索状态到所述全局作业搜索状态和到所述等待状态的转移的数目超过第三阈值的确定,识别所述多线程应用的并行区域的过多等待以作为所述多线程应用的并行区域的一个或多个问题中的第三问题;以及
响应于关于所述全局作业搜索状态到所述全局作业搜索状态和到所述等待状态的转移的数目没有超过第三阈值的确定以及关于所述多线程应用的并行区域的非活动的并行开销超过第五阈值的确定,识别所述多线程应用的并行区域的不足的作业创建以作为所述多线程应用的并行区域的一个或多个性能问题中的第四问题。
CN201180028522.7A 2010-05-25 2011-05-20 用于分析多线程应用的性能的方法和系统 Expired - Fee Related CN102918501B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/787,240 2010-05-25
US12/787,240 US9183109B2 (en) 2010-05-25 2010-05-25 Method and system for analyzing the performance of multi-threaded applications
US12/787240 2010-05-25
PCT/US2011/037403 WO2011149784A2 (en) 2010-05-25 2011-05-20 Method and system for analyzing the performance of multi-threaded applications

Publications (2)

Publication Number Publication Date
CN102918501A true CN102918501A (zh) 2013-02-06
CN102918501B CN102918501B (zh) 2016-05-11

Family

ID=45004683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180028522.7A Expired - Fee Related CN102918501B (zh) 2010-05-25 2011-05-20 用于分析多线程应用的性能的方法和系统

Country Status (7)

Country Link
US (1) US9183109B2 (zh)
EP (1) EP2577457A4 (zh)
JP (1) JP5745038B2 (zh)
KR (1) KR101475746B1 (zh)
CN (1) CN102918501B (zh)
AU (1) AU2011258570B2 (zh)
WO (1) WO2011149784A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103457997A (zh) * 2013-07-01 2013-12-18 曙光信息产业(北京)有限公司 数据传输方法以及数据传输系统
CN106649067A (zh) * 2016-12-28 2017-05-10 深圳先进技术研究院 一种性能和能耗预测方法及装置
CN107533479A (zh) * 2015-04-01 2018-01-02 微软技术许可有限责任公司 功率知晓调度和功率管理器
CN110249303A (zh) * 2017-02-16 2019-09-17 华为技术有限公司 用于减少引用计数开销的系统和方法
CN113286174A (zh) * 2021-05-21 2021-08-20 浙江商汤科技开发有限公司 视频抽帧方法、装置、电子设备、计算机可读存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183109B2 (en) 2010-05-25 2015-11-10 Intel Corporation Method and system for analyzing the performance of multi-threaded applications
US9135586B2 (en) * 2010-10-28 2015-09-15 Sap Se System for dynamic parallel looping of repetitive tasks during execution of process-flows in process runtime
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
WO2014014944A2 (en) * 2012-07-16 2014-01-23 Sony Corporation Managing multi-threaded operations in a multimedia authoring environment
US9317415B2 (en) * 2013-06-03 2016-04-19 Google Inc. Application analytics reporting
US10719350B2 (en) * 2017-10-10 2020-07-21 Sap Se Worker thread manager
JP7091203B2 (ja) * 2018-09-19 2022-06-27 キオクシア株式会社 メモリシステムおよび制御方法
CN111176806B (zh) * 2019-12-05 2024-02-23 中国银联股份有限公司 一种业务处理方法、装置及计算机可读存储介质
US11698816B2 (en) * 2020-08-31 2023-07-11 Hewlett Packard Enterprise Development Lp Lock-free work-stealing thread scheduler
CN113360266B (zh) * 2021-06-23 2022-09-13 北京百度网讯科技有限公司 任务处理方法和装置
CN115904644A (zh) * 2021-09-30 2023-04-04 伊姆西Ip控股有限责任公司 任务调度方法、电子设备和计算机程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692174A (en) * 1995-10-05 1997-11-25 International Business Machines Corporation Query parallelism in a shared data DBMS system
US6658449B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5177688A (en) * 1989-12-01 1993-01-05 Texas Instruments Incorporated Assembly line balancer
US5297274A (en) * 1991-04-15 1994-03-22 International Business Machines Corporation Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor
JPH0540742A (ja) * 1991-08-07 1993-02-19 Hitachi Ltd 並列処理方法
US5777882A (en) * 1996-09-26 1998-07-07 Xerox Corporation Control system for mailboxing arrangement
US20020059544A1 (en) 1999-02-04 2002-05-16 Boucher Michael L. Methods and systems for determining and displaying activities of concurrent processes
JP2004054680A (ja) * 2002-07-22 2004-02-19 Fujitsu Ltd 並列効率計算方法
US7370326B2 (en) * 2004-04-02 2008-05-06 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
US7818723B2 (en) 2004-09-07 2010-10-19 Sap Ag Antipattern detection processing for a multithreaded application
US7703094B2 (en) 2004-12-30 2010-04-20 Intel Corporation Adaptive and dynamic filtering of threaded programs
US7945911B1 (en) * 2005-06-03 2011-05-17 Oracle America, Inc. Barrier synchronization method and apparatus for work-stealing threads
US7558271B2 (en) * 2005-10-21 2009-07-07 International Business Machines Corporation Method and apparatus for adaptive bandwidth control with defined priorities for different networks
US7739662B2 (en) 2005-12-30 2010-06-15 Intel Corporation Methods and apparatus to analyze processor systems
JP4908363B2 (ja) 2007-09-25 2012-04-04 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
JP4381459B1 (ja) * 2008-06-27 2009-12-09 株式会社東芝 情報処理装置、粒度調整方法およびプログラム
US8161234B2 (en) * 2008-12-30 2012-04-17 Intel Corporation Dynamically switching command types to a mass storage drive
US8875143B2 (en) * 2009-12-31 2014-10-28 Bmc Software, Inc. Utility-optimized scheduling of time-sensitive tasks in a resource-constrained environment
US9183109B2 (en) 2010-05-25 2015-11-10 Intel Corporation Method and system for analyzing the performance of multi-threaded applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692174A (en) * 1995-10-05 1997-11-25 International Business Machines Corporation Query parallelism in a shared data DBMS system
US6658449B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103457997A (zh) * 2013-07-01 2013-12-18 曙光信息产业(北京)有限公司 数据传输方法以及数据传输系统
CN107533479A (zh) * 2015-04-01 2018-01-02 微软技术许可有限责任公司 功率知晓调度和功率管理器
CN106649067A (zh) * 2016-12-28 2017-05-10 深圳先进技术研究院 一种性能和能耗预测方法及装置
CN106649067B (zh) * 2016-12-28 2019-07-02 深圳先进技术研究院 一种性能和能耗预测方法及装置
CN110249303A (zh) * 2017-02-16 2019-09-17 华为技术有限公司 用于减少引用计数开销的系统和方法
CN113286174A (zh) * 2021-05-21 2021-08-20 浙江商汤科技开发有限公司 视频抽帧方法、装置、电子设备、计算机可读存储介质
CN113286174B (zh) * 2021-05-21 2022-11-08 浙江商汤科技开发有限公司 视频抽帧方法、装置、电子设备、计算机可读存储介质

Also Published As

Publication number Publication date
WO2011149784A3 (en) 2012-04-19
CN102918501B (zh) 2016-05-11
WO2011149784A2 (en) 2011-12-01
JP2013526754A (ja) 2013-06-24
US20110296420A1 (en) 2011-12-01
KR20130018901A (ko) 2013-02-25
EP2577457A2 (en) 2013-04-10
AU2011258570B2 (en) 2014-06-12
US9183109B2 (en) 2015-11-10
JP5745038B2 (ja) 2015-07-08
EP2577457A4 (en) 2016-01-06
KR101475746B1 (ko) 2014-12-30
AU2011258570A1 (en) 2012-12-06

Similar Documents

Publication Publication Date Title
CN102918501B (zh) 用于分析多线程应用的性能的方法和系统
KR102482122B1 (ko) 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체
Memeti et al. Using meta-heuristics and machine learning for software optimization of parallel computing systems: a systematic literature review
Koch et al. Could we use a million cores to solve an integer program?
CN104025053A (zh) 使用集体操作建模的消息传递接口调谐
Geist et al. Major computer science challenges at exascale
Huang et al. Search strategy for scheduling flexible manufacturing systems simultaneously using admissible heuristic functions and nonadmissible heuristic functions
Garcia Pinto et al. A visual performance analysis framework for task‐based parallel applications running on hybrid clusters
US10083066B2 (en) Processing data by using simultaneous multithreading
Wu et al. A path relinking enhanced estimation of distribution algorithm for direct acyclic graph task scheduling problem
Chen et al. Variation-aware evaluation of MPSoC task allocation and scheduling strategies using statistical model checking
Jin et al. Thread Group Multithreading: Accelerating the Computation of an Agent-Based Power System Modeling and Simulation Tool--C GridLAB-D
Brunst et al. First experiences in performance benchmarking with the new SPEChpc 2021 suites
Ruan et al. A comparative study of large-scale cluster workload traces via multiview analysis
Feljan et al. Task allocation optimization for multicore embedded systems
Naik et al. A review of adaptive approaches to MapReduce scheduling in heterogeneous environments
Schmitt et al. CASITA: A tool for identifying critical optimization targets in distributed heterogeneous applications
Kulkarni et al. Performance analysis of parallel algorithm over sequential using OpenMP
Lin et al. Analyzing job completion reliability and job energy consumption for a heterogeneous MapReduce cluster under different intermediate-data replication policies
Vega et al. STOMP: Agile evaluation of scheduling policies in heterogeneous multi-processors
Jiang et al. An optimized resource scheduling strategy for Hadoop speculative execution based on non-cooperative game schemes
Lyerly et al. An Openmp runtime for transparent work sharing across cache-incoherent heterogeneous nodes
Poovey et al. Parallel pattern detection for architectural improvements
Iordan et al. Tuning the victim selection policy of Intel TBB
CN116755782B (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160511

Termination date: 20200520

CF01 Termination of patent right due to non-payment of annual fee