欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于分析多線程應(yīng)用的性能的方法和系統(tǒng)的制作方法

文檔序號:6360833閱讀:127來源:國知局
專利名稱:用于分析多線程應(yīng)用的性能的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及多線程應(yīng)用,并且更具體地但不排他地,涉及確定使用多線程框架的多線程應(yīng)用的特定問題的分析模型。
背景技術(shù)
多線程框架,例如開放多處理(OpenMP)、Intel 線程構(gòu)建塊(TBB)、Intel Cilk++、用于吞吐量計算的Intel C++(Ct)、以及Microsoft 并行模式庫(PPL),允許并行性以改進多線程應(yīng)用的性能。多線程應(yīng)用的優(yōu)點可以在具有多個中央處理單元(CPU)或者具有帶有多個核心的CPU的計算機系統(tǒng)上被觀察到,因為多線程應(yīng)用的每個線程使用CPU/核心之一以用于并行執(zhí)行。然而,如果多線程框架被不正確地使用以執(zhí)行多線程應(yīng)用,則并行性的優(yōu)點可能被損害。圖IA示出并行循環(huán)的現(xiàn)有技術(shù)代碼100。函數(shù)的粒度被設(shè)置為I。取決于函數(shù)Zbo (9花費多長時間來執(zhí)行,并行性的優(yōu)點可能被損害,因為I的粒度太精細。圖IB示出具有動態(tài)調(diào)度的并行循環(huán)的現(xiàn)有技術(shù)代碼130。函數(shù)Zb0 的粒度被設(shè)置為3。動態(tài)調(diào)度需要分布式開銷,并且取決于函數(shù)Zb0 (9花費多長時間來執(zhí)行,并行性的優(yōu)點可能被損害,因為3的粒度太精細。圖IC示出從僅僅一個線程衍生(spawn)或創(chuàng)建工作任務(wù)的現(xiàn)有技術(shù)代碼150。取決于變量#被設(shè)置為多大,現(xiàn)有技術(shù)代碼150可能具有線性衍生問題,所述線性衍生問題具有相當大的活動的挪用(stealing)開銷。例如,當變量#被設(shè)置為大于100時,這一執(zhí)行比具有遞歸衍生的另一執(zhí)行在規(guī)模(scale)上壞得多?,F(xiàn)有技術(shù)代碼100、130和150示出其中多線程應(yīng)用可能被不正確地或低效地使用的可能情景。


根據(jù)本主題的下列詳細描述,本發(fā)明的實施例的特征和優(yōu)點將變得明顯,其中
圖IA示出并行循環(huán)的現(xiàn)有技術(shù)代碼;
圖IB示出具有動態(tài)調(diào)度的并行循環(huán)的現(xiàn)有技術(shù)代碼;
圖IC示出從僅僅一個線程衍生或創(chuàng)建工作任務(wù)的現(xiàn)有技術(shù)代碼;
圖2示出根據(jù)本發(fā)明的一個實施例的平臺的模塊;
圖3示出根據(jù)本發(fā)明的一個實施例的基于工作者線程生存周期狀態(tài)機的分析模型;
圖4示出根據(jù)本發(fā)明的一個實施例的分析多線程應(yīng)用的性能的步驟的流程圖5A示出根據(jù)本發(fā)明的一個實施例的對于多線程應(yīng)用的每個并行區(qū)域確定并行開銷的原因的步驟的流程圖5B示出根據(jù)本發(fā)明的一個實施例的對于多線程應(yīng)用的每個并行區(qū)域確定并行開銷的原因的步驟的流程圖;以及
圖6示出根據(jù)本發(fā)明的一個實施例的實施在這里公開的方法的系統(tǒng)。
具體實施例方式在這里描述的本發(fā)明的實施例在附圖中作為例子而不是作為限制被示出。為了說明的簡單和清楚起見,在附圖中示出的元件不一定是按比例繪制的。例如,為了清楚起見,一些元件的尺寸可能相對于其他元件被夸大。此外,在被認為適當?shù)那闆r下,附圖標記已在附圖中被重復(fù)以指示對應(yīng)的或類似的元件。在本說明書中對本發(fā)明的“一個實施例”或“實施例”的提及是指,結(jié)合該實施例所描述的特定的特征、結(jié)構(gòu)、或特性被包括在本發(fā)明的至少一個實施例中。因此,在整個說明書中的各種位置中出現(xiàn)的短語“在一個實施例中”不一定都是指相同的實施例。本發(fā)明的實施例提供確定使用多線程框架的多線程應(yīng)用的特定問題的分析模型。在本發(fā)明的一個實施例中,多線程應(yīng)用使用多個線程以用于執(zhí)行,并且基于每個線程的當前狀態(tài),每個線程被分配給多個狀態(tài)中的相應(yīng)狀態(tài)。通過這樣做,基于對于每個線程而言在多個狀態(tài)之間轉(zhuǎn)移的頻率,確定多線程應(yīng)用的特定問題。在本發(fā)明的一個實施例中,分析模型使用工作者線程轉(zhuǎn)移計數(shù)器或事件以對于多線程應(yīng)用的每個并行區(qū)域或算法來確定哪個問題已經(jīng)發(fā)生以及它對于并行區(qū)域或算法的可伸縮性有多少影響。在本發(fā)明的一個實施例中,如果從用戶的觀點來看來自多線程應(yīng)用的并行執(zhí)行的性能好處是不重要的或不可接受的,則使用多線程框架或并行線程庫來執(zhí)行多線程應(yīng)用是低效的或成問題的。性能好處包括但不限于更快的執(zhí)行時間、更小數(shù)量的CPU節(jié)拍(tick)等等。例如,在本發(fā)明的一個實施例中,當執(zhí)行多線程應(yīng)用的并行開銷可與來自多線程應(yīng)用的并行執(zhí)行的性能好處相比或者超過該性能好處時,使用多線程框架來執(zhí)行多線程應(yīng)用是低效的。圖2示出根據(jù)本發(fā)明的一個實施例的平臺200的模塊。平臺或系統(tǒng)200具有多個處理器和/或多核心處理器,并且操作系統(tǒng)(OS) 250在所述多個處理器的至少一個處理器上或者在多核心處理器的一個核心上執(zhí)行。OS 250具有可以用來在平臺200上執(zhí)行多線程應(yīng)用210的本地線程255的池。資源管理器240管理本地線程255的池并控制線程對于執(zhí)行的可用性。任務(wù)調(diào)度器230調(diào)度要由來自本地線程255的池的可用線程執(zhí)行的任務(wù)。并行線程庫220包含可以使用本地線程255由用于并行執(zhí)行的多線程應(yīng)用210參考的或使用的功能。在本發(fā)明的一個實施例中,多線程應(yīng)用210使用并行線程庫220或多線程框架,所述多線程框架包括但不限于開放多處理(OpenMP)、Intel 線程構(gòu)建塊(TBB)、Intel Cilk++、用于吞吐量計算的Intel C++ (Ct)、Microsoft 并行模式庫(PPL)和任何其他多線程框架。在本發(fā)明的一個實施例中,并行線程庫220具有確定多線程應(yīng)用210具有次優(yōu)并行算法以及使用分析模型來確定次優(yōu)并行算法的一個或多個性能問題的邏輯。在本發(fā)明的另一實施例中,所述邏輯是Intel 并行放大器軟件的一部分。在本發(fā)明的又一實施例中,所述邏輯可以是平臺200的任何模塊的一部分。雖然平臺200的模塊被描繪為分開的塊,但是一個模塊的操作可以由另一模塊執(zhí)行。例如,在一個實施例中,OS 250可以執(zhí)行資源管理器240的功能。在另一實施例中,并行線程庫220也可以與OS 250相集成。相關(guān)領(lǐng)域的普通技術(shù)人員將容易認識到,可以執(zhí)行模塊或功能的不同組合而不影響本發(fā)明的工作。圖3示出根據(jù)本發(fā)明的一個實施例的基于工作者線程生存周期狀態(tài)機的分析模型300。當執(zhí)行多線程應(yīng)用時,招致或需要并行開銷以便執(zhí)行多線程應(yīng)用的并行執(zhí)行。并行開銷包括但不限于線程維護、在工作者線程之間的作業(yè)分配等等。并行開銷在本發(fā)明的一個實施例中被分類成活動的和非活動的并行開銷。在本發(fā)明的一個實施例中,在過多的活動的并行開銷會影響多線程應(yīng)用的并行執(zhí)行的情況下有兩種情景。當一個或多個工作者線程花費太多的它們的生存期從它們的本地隊列中取作業(yè)單元或任務(wù)時,活動的并行開銷的第一情景發(fā)生。第一情景是由于多線程應(yīng)用的并行區(qū)域的粒度被設(shè)置為太精細或太小的水平。當一個或多個工作者線程花費太多的它們的生存期在其他任務(wù)隊列中或在全局作業(yè)管理者隊列中尋找任務(wù)時,即工作者線程除了它自己的本地隊列之外還從另一源中挪用任務(wù)時,活動的并行開銷的第二情景發(fā)生。類似地,在本發(fā)明的一個實施例中,在過多的非活動的并行開銷會影響多線程應(yīng)用的并行執(zhí)行的情況下有兩種情景。當一個或多個工作者線程因為它們已完成它們的任務(wù)但是不能幫助仍在忙于執(zhí)行它們的任務(wù)的剩余工作者線程而變?yōu)榭臻e時,非活動的并行開銷的第一情景發(fā)生。所述一個或多個工作者線程的過多等待造成非活動的并行開銷。當沒有足夠的作業(yè)或任務(wù)創(chuàng)建來充滿或利用所有可用工作者線程時,非活動的并行開銷的第二情景發(fā)生。工作者線程連續(xù)地從執(zhí)行一個任務(wù)轉(zhuǎn)移到搜索另一任務(wù)并且當沒有可用任務(wù)時進入空閑狀態(tài)。當新任務(wù)可用時,所有可用線程再次變?yōu)榛顒拥?。對于新任?wù)沒有分配的可用線程反復(fù)進行連續(xù)轉(zhuǎn)移以搜索另一任務(wù)并且當沒有可用任務(wù)時進入空閑狀態(tài)。在本發(fā)明的一個實施例中,使用分析模型300在多線程應(yīng)用的并行區(qū)域的執(zhí)行期間識別活動的和非活動的并行開銷的四種情景?;顒拥暮头腔顒拥牟⑿虚_銷的四種情景中的一個或多個可以在多線程應(yīng)用的并行區(qū)域內(nèi)發(fā)生。分析模型300具有工作者線程生存周期狀態(tài)機,其具有描述工作者線程的當前狀態(tài)的四個狀態(tài)。每個工作者線程在它的生存期期間被分配給四個狀態(tài)之一。第一狀態(tài)是用戶代碼執(zhí)行狀態(tài)310,其中每個線程在它處于執(zhí)行多線程應(yīng)用的并行區(qū)域的一部分的當前狀態(tài)時被分配給用戶代碼執(zhí)行狀態(tài)310。當執(zhí)行調(diào)度器旁路316時,工作者線程保持在用戶代碼執(zhí)行狀態(tài)310。理想地,每個工作者線程應(yīng)當保持在用戶代碼執(zhí)行狀態(tài)310以使活動的和非活動的并行開銷最小化。第二狀態(tài)是本地隊列查找狀態(tài)320,其中每個線程在它處于在它的本地隊列中搜索作業(yè)或任務(wù)的當前狀態(tài)時被分配給本地隊列查找狀態(tài)320。每個線程在它完成它的當前任務(wù)之后進入本地隊列查找狀態(tài)320,并且在它的本地任務(wù)隊列中搜索新任務(wù)。第三狀態(tài)是全局任務(wù)搜索狀態(tài)330,其中每個線程在它處于在另一任務(wù)隊列或在全局隊列中搜索任務(wù)的當前狀態(tài)時被分配給全局任務(wù)搜索狀態(tài)330。每個線程當它在本地隊列查找狀態(tài)320期間在它的本地隊列中不能找到任務(wù)時進入全局任務(wù)搜索狀態(tài)330。第四狀態(tài)是等待狀態(tài)340,其中每個線程在它處于非活動或空閑狀態(tài)的當前狀態(tài)時被分配給等待狀態(tài)340。每個線程當它在全局任務(wù)搜索狀態(tài)330期間不能找到任務(wù)時進入等待狀態(tài)340。當新任務(wù)變?yōu)榭捎脮r,處于等待狀態(tài)340的每個線程回到全局任務(wù)搜索狀態(tài)330以尋找新任務(wù)。狀態(tài)轉(zhuǎn)移路徑312、314、316、322、332、334、336和338示出每個線程在分析模型300的四個狀態(tài)之間的狀態(tài)轉(zhuǎn)移。在本發(fā)明的一個實施例中,在多線程應(yīng)用的并行區(qū)域執(zhí)行期間測量或計算每個線程在分析模型300的四個狀態(tài)之間的狀態(tài)轉(zhuǎn)移的數(shù)目。在本發(fā)明的一個實施例中,整個多線程應(yīng)用被執(zhí)行以確定每個線程在分析模型300的四個狀態(tài)之間的狀態(tài)轉(zhuǎn)移的數(shù)目。在本發(fā)明的另一實施例中,多線程應(yīng)用的僅僅一部分被執(zhí)行以確定每個線程在分析模型300的四個狀態(tài)之間的狀態(tài)轉(zhuǎn)移的數(shù)目。要被執(zhí)行的多線程應(yīng)用的部分是基于但不限于測量時段、多線程應(yīng)用的總運行時間的百分比等等。為了識別在多線程應(yīng)用的并行區(qū)域的執(zhí)行期間存在活動的和非活動的并行開銷的四種情景中的哪個情景,在本發(fā)明的一個實施例中使用每個線程在分析模型300的四個狀態(tài)之間的狀態(tài)轉(zhuǎn)移的經(jīng)測量數(shù)目。在本發(fā)明的另一實施例中,使用在分析模型300的四個狀態(tài)之間的狀態(tài)轉(zhuǎn)移的頻率。例如,在本發(fā)明的一個實施例中,所述頻率是從狀態(tài)轉(zhuǎn)移的經(jīng)測量數(shù)目與測量時段的持續(xù)時間的比來確定的。在本發(fā)明的一個實施例中,當對于每個線程而言任務(wù)或作業(yè)執(zhí)行的頻率超過閾值時,識別或確定活動的并行開銷的第一情景。在本發(fā)明的一個實施例中,確定由每個工作者線程所執(zhí)行的任務(wù)的數(shù)目。由每個工作者線程所執(zhí)行的任務(wù)的數(shù)目是通過把從它的本地隊列中取的任務(wù)的數(shù)目與從另一任務(wù)隊列或全局隊列中取的任務(wù)的數(shù)目相加來確定的。對于每個線程而言任務(wù)或作業(yè)執(zhí)行的頻率是通過由每個工作者線程所執(zhí)行的任務(wù)的數(shù)目與測量時段的持續(xù)時間的比來確定的。對于每個線程而言從它的本地隊列中取的任務(wù)的數(shù)目是從如在分析模型300中所示的、從用戶代碼執(zhí)行狀態(tài)310到本地隊列查找狀態(tài)320的狀態(tài)轉(zhuǎn)移路徑312的出現(xiàn)的數(shù)目來確定的。對于每個線程而言從另一任務(wù)隊列或全局隊列中取的任務(wù)的數(shù)目是從本地隊列查找狀態(tài)320到全局任務(wù)搜索狀態(tài)330的狀態(tài)轉(zhuǎn)移和反復(fù)進行全局任務(wù)搜索狀態(tài)330的出現(xiàn)的數(shù)目來確定的。當識別活動的并行開銷的第一情景時,把關(guān)于活動的并行開銷的原因是由于每個工作者線程花費太多的它的生存期從本地隊列中取任務(wù)(即多線程應(yīng)用的并行區(qū)域的任務(wù)的粒度太精細)的報告發(fā)送給用戶。當對于每個線程而言從另一任務(wù)隊列或全局隊列中取的任務(wù)的數(shù)目與從它的本地隊列中取的任務(wù)的數(shù)目的比超過閾值時,識別或確定活動的并行開銷的第二情景。在本發(fā)明的一個實施例中,閾值被設(shè)置為1,即當與從它的本地隊列中取的任務(wù)相比每個線程正在執(zhí)行從其他線程挪用的更多的任務(wù)時,第二情景發(fā)生。當識別活動的并行開銷的第二情景時,把關(guān)于活動的并行開銷的原因是由于每個工作者線程花費太多的時間在另一隊列中或在全局隊列中尋找任務(wù)(即多線程應(yīng)用的并行區(qū)域具有線性衍生問題)的報告發(fā)送給用戶。在本發(fā)明的一個實施例中,當從全局任務(wù)搜索狀態(tài)330到全局任務(wù)搜索狀態(tài)330和到等待狀態(tài)340的狀態(tài)轉(zhuǎn)移的頻率超過特定閾值時,識別或確定非活動的并行開銷的第二情景。這在分析模型300中通過重復(fù)或反復(fù)進行全局任務(wù)搜索狀態(tài)330的狀態(tài)轉(zhuǎn)移路徑336和從全局任務(wù)搜索狀態(tài)330到等待狀態(tài)340的狀態(tài)轉(zhuǎn)移路徑332來示出的。當識別非活動的并行開銷的第二情景時,把關(guān)于非活動的并行開銷的原因是因為并行區(qū)域的任務(wù)的數(shù)目小于可用的或自由的工作者線程的數(shù)目(即多線程應(yīng)用的并行區(qū)域
9的不足的作業(yè)或任務(wù)創(chuàng)建)的報告發(fā)送給用戶。在本發(fā)明的一個實施例中,當從全局任務(wù)搜索狀態(tài)330到全局任務(wù)搜索狀態(tài)330和到等待狀態(tài)340的狀態(tài)轉(zhuǎn)移的頻率沒有超過特定閾值時并且當非活動的并行開銷已經(jīng)超過閾值時,識別或確定非活動的并行開銷的第一情景。當識別非活動的并行開銷的第一情景時,把關(guān)于活動的并行開銷的原因是因為一個或多個工作者線程已完成它們的任務(wù)但是不能幫助剩余工作者線程(即線程的過多等待)的報告發(fā)送給用戶。當識別非活動的并行開銷的第一情景時,把關(guān)于非活動的并行開銷的原因是并行性的粒度太粗的報告發(fā)送給用戶。這意味著,工作被劃分成太大的塊,這限制所創(chuàng)建的塊的數(shù)目,其又限制并行性。當活動的和非活動的并行開銷的一個或多個情景被識別時,在本發(fā)明的一個實施例中它允許基于生成的特定報告來校正多線程應(yīng)用的特定并行區(qū)域。這允許多線程應(yīng)用的并行執(zhí)行的改進。本發(fā)明的實施例允許用戶解釋分析模型300的結(jié)果以基于報告或結(jié)論來改正多線程應(yīng)用中的錯誤。在本發(fā)明的一個實施例中,除了對于每個情景的特定報告以外,還給出解決特定問題或情景的啟示或建議。分析模型300是基于工作者線程生存周期狀態(tài)的,而不是基于任務(wù)的。這允許使用確定活動的和/或非活動的并行開銷的原因的類似方法來分析基于任務(wù)的和非任務(wù)的多線程框架。在本發(fā)明的一個實施例中,分析模型可被集成到Intel 并行放大器軟件中。對于活動的和/或非活動的并行開銷的四種情景的描述并不意味著是限制性的。相關(guān)領(lǐng)域的普通技術(shù)人員將容易認識到,可以識別其他情景而不影響本發(fā)明的工作。類似地,分析模型300中的四個狀態(tài)并不意味著是限制性的。相關(guān)領(lǐng)域的普通技術(shù)人員將容易認識到,可以添加其他狀態(tài)而不影響本發(fā)明的工作。圖4示出根據(jù)本發(fā)明的一個實施例的分析多線程應(yīng)用的性能的步驟的流程圖400。在步驟410,流程400識別多線程代碼或應(yīng)用的并行區(qū)域。在步驟415,流程400檢查是否已找到并行區(qū)域。如果是的話,則流程400轉(zhuǎn)到步驟420以對于每個識別的并行區(qū)域確定活動的和非活動的并行開銷。如果否的話,則流程400結(jié)束。在步驟425,流程400檢查活動的和非活動的并行開銷是否超過閾值。在本發(fā)明的一個實施例中,把單個閾值與活動的和非活動的并行開銷進行比較。在本發(fā)明的另一實施例中,把分開的閾值分別與活動的和非活動的并行開銷進行比較。如果是的話,則流程400轉(zhuǎn)到步驟430以對于多線程代碼或應(yīng)用的每個并行區(qū)域確定并行開銷的原因。如果否的話,則流程400結(jié)束。圖5A示出根據(jù)本發(fā)明的一個實施例的對于多線程應(yīng)用的每個并行區(qū)域確定并行開銷的原因的步驟的流程圖500。為了清楚起見,參照圖3來描述圖5A。在步驟510,所述流程設(shè)置監(jiān)視時段并復(fù)位所有的狀態(tài)轉(zhuǎn)移路徑計數(shù)器。在本發(fā)明的一個實施例中,對于狀態(tài)轉(zhuǎn)移路徑312、314、316、322、332、334、336和338中的每個保持計數(shù)器。在步驟515,流程500在設(shè)置的監(jiān)視時段內(nèi)執(zhí)行多線程應(yīng)用的每個并行區(qū)域。在所述執(zhí)行期間,當多線程應(yīng)用的每個并行區(qū)域的每個線程在分析模型300中的四個狀態(tài)310、320,330和340之間轉(zhuǎn)移時,遞增相應(yīng)狀態(tài)轉(zhuǎn)移路徑計數(shù)器。在步驟520,流程500確定對于每個工作者線程而言任務(wù)或作業(yè)執(zhí)行的頻率。在步驟525,流程500確定對于每個工作者線程而言任務(wù)執(zhí)行的頻率是否超過閾值。例如,在本發(fā)明的一個實施例中,對于與多線程應(yīng)用的執(zhí)行相比不重要的TBB并行開銷而言,任務(wù)可能必須是大于5000個CPU節(jié)拍。假設(shè)在以2吉赫(GHz)的時鐘速度運行的CPU上執(zhí)行多線程應(yīng)用,400,000個任務(wù)應(yīng)當以每秒每個線程來執(zhí)行。閾值在本發(fā)明的一個實施例中被設(shè)置為每秒400,000個任務(wù)。如果在步驟525中閾值被超過,則流程500轉(zhuǎn)到步驟530以報告并行區(qū)域的特定問題。在本發(fā)明的一個實施例中,步驟530報告活動的并行開銷是由于每個工作者線程花費太多的它的生存期從本地隊列中取任務(wù)。如果在步驟525中閾值沒有被超過,則流程500轉(zhuǎn)到步驟535。在步驟535,流程500確定從另一任務(wù)隊列或全局隊列中取的任務(wù)(即挪用的任務(wù))的數(shù)目與從對于每個線程而言它的本地隊列中取的任務(wù)的數(shù)目的比。在步驟540,流程500確定所述比是否超過閾值。如果是的話,則流程500轉(zhuǎn)到步驟545以報告并行區(qū)域的特定問題。在本發(fā)明的一個實施例中,步驟545報告對于活動的并行開銷的原因是由于每個工作者線程花費太多的時間尋找在另一任務(wù)隊列中或在全局隊列中的任務(wù)。如果否的話,流程500轉(zhuǎn)到圖5B中的步驟5B。圖5B示出根據(jù)本發(fā)明的一個實施例的對于多線程應(yīng)用的每個并行區(qū)域確定并行開銷的原因的步驟的流程圖550。流程550從步驟5B轉(zhuǎn)到步驟560。在步驟560,流程550確定非活動的并行開銷是否超過閾值。如果否的話,則流程550結(jié)束。如果是的話,流程550轉(zhuǎn)到步驟565以確定從全局任務(wù)搜索狀態(tài)330到全局任務(wù)搜索狀態(tài)330和到等待狀態(tài)340的狀態(tài)轉(zhuǎn)移的頻率。例如,在本發(fā)明的一個實施例中,流程550確定對于狀態(tài)轉(zhuǎn)移路徑336和332的狀態(tài)轉(zhuǎn)移路徑計數(shù)器的總和與設(shè)置的監(jiān)視時段的持續(xù)時間的比。從這個比獲得對于每個線程而言從全局任務(wù)搜索狀態(tài)330到全局任務(wù)搜索狀態(tài)330和到等待狀態(tài)340的狀態(tài)轉(zhuǎn)移的頻率。在步驟570,流程550確定對于每個工作者線程而言從全局任務(wù)搜索狀態(tài)330到全局任務(wù)搜索狀態(tài)330和到等待狀態(tài)340的狀態(tài)轉(zhuǎn)移的頻率是否超過閾值。如果是的話,則流程550轉(zhuǎn)到步驟575以報告并行區(qū)域的特定問題,并且流程550結(jié)束。在本發(fā)明的一個實施例中,步驟575報告對于非活動的并行開銷的原因是因為并行區(qū)域的任務(wù)的數(shù)目小于可用的或自由的工作者線程的數(shù)目。如果否的話,則流程550轉(zhuǎn)到步驟580以報告并行區(qū)域的特定問題,并且流程550結(jié)束。在本發(fā)明的一個實施例中,步驟580報告對于非活動的并行開銷的原因是因為一個或多個工作者線程已完成它們的任務(wù)但是不能幫助剩余工作者線程。圖4、5A和5B中所示的步驟并不意味著是限制性的。相關(guān)領(lǐng)域的普通技術(shù)人員將容易認識到,可以使用圖4、5A和5B中所示的步驟的其他序列而不影響本發(fā)明的工作。例如,在本發(fā)明的一個實施例中,圖4、5A和5B中所示的一些步驟被并行地執(zhí)行。在本發(fā)明的一個實施例中,對于步驟425、525、540、565和575所需的閾值可以基于來自特定并行線程庫或多線程框架的開發(fā)者的推薦來確定。在本發(fā)明的另一實施例中,對于步驟425、525、540,565和575所需的閾值可以基于執(zhí)行分析模型300中四個狀態(tài)310、320、330和340中的每個狀態(tài)的成本來確定。圖6示出根據(jù)本發(fā)明的一個實施例的實施在這里公開的方法的系統(tǒng)。系統(tǒng)600包括但不限于臺式計算機、膝上型計算機、上網(wǎng)本、筆記本計算機、個人數(shù)字助理(PDA)、服務(wù)器、工作站、蜂窩電話、移動計算設(shè)備、因特網(wǎng)裝置、或任何其他類型的計算設(shè)備。在另一實施例中,用來實施在這里公開的方法的系統(tǒng)600可以是片上系統(tǒng)(SOC)的系統(tǒng)。處理器610具有執(zhí)行系統(tǒng)600的指令的處理核心612。處理核心612包括但不限于取指令的預(yù)取邏輯、譯碼指令的譯碼邏輯、執(zhí)行指令的執(zhí)行邏輯等等。處理器610具有對系統(tǒng)600的指令和/或數(shù)據(jù)進行高速緩存的高速緩沖存儲器616。在本發(fā)明的另一實施例中,高速緩沖存儲器616包括但不限于第I級、第2級、和第3級高速緩沖存儲器或在處理器610內(nèi)的高速緩沖存儲器的任何其他配置。存儲器控制中心(MCH) 614執(zhí)行使處理器610能夠訪問包括易失性存儲器632和/或非易失性存儲器634的存儲器630并與該存儲器630通信的功能。易失性存儲器632包括但不限于同步動態(tài)隨機存取存儲器(SDRAM)、動態(tài)隨機存取存儲器(DRAM)、RAMBUS動態(tài)隨機存取存儲器(RDRAM)、和/或任何其他類型的隨機存取存儲器設(shè)備。非易失性存儲器634包括但不限于NAND閃速存儲器、相變存儲器(PCM)、只讀存儲器(ROM)、電可擦可編程只讀存儲器(EEPROM)、或任何其他類型的非易失性存儲器設(shè)備。存儲器630存儲要由處理器610執(zhí)行的信息和指令。存儲器630還可以存儲臨時變量或其他中間信息,同時處理器610正在執(zhí)行指令。芯片組620經(jīng)由點對點(PtP)接口617和622而與處理器610連接。芯片組620使處理器610能夠連接到系統(tǒng)600中的其他模塊。在本發(fā)明的一個實施例中,接口 617和622根據(jù)諸如Intel QuickPath Interconnect(QPI)等等之類的PtP通信協(xié)議來操作。芯片組620連接到顯示設(shè)備640,顯示設(shè)備640包括但不限于液晶顯示器(IXD)、陰極射線管(CRT)顯示器、或任何其他形式的視覺顯示設(shè)備。在本發(fā)明的一個實施例中,處理器610和芯片組620被合并成S0C。另外,芯片組620連接到一個或多個總線650和655,所述一個或多個總線650和655互連各種模塊674、660、662、664和666。如果在總線速度或通信協(xié)議上存在失配,則可以把總線650和655經(jīng)由總線橋672互連在一起。芯片組620與非易失性存儲器660、存儲設(shè)備662、鍵盤/鼠標664和網(wǎng)絡(luò)接口 666相耦合,但不限于非易失性存儲器660、存儲設(shè)備662、鍵盤/鼠標664和網(wǎng)絡(luò)接口 666。在本發(fā)明的一個實施例中,固態(tài)驅(qū)動器102是存儲設(shè)備662。存儲設(shè)備662包括但不限于固態(tài)驅(qū)動器、硬盤驅(qū)動器、通用串行總線閃速存儲器驅(qū)動器、或任何其他形式的計算機數(shù)據(jù)存儲介質(zhì)。網(wǎng)絡(luò)接口 666使用任何類型的公知網(wǎng)絡(luò)接口標準來實施,包括但不限于以太網(wǎng)接口、通用串行總線(USB)接口、外設(shè)部件互連(PCI)直通接口、無線接口和/或任何其他合適類型的接口。無線接口根據(jù)IEEE 802. 11標準及其相關(guān)家族、家庭插頭AV (HPAV)、超寬帶(UWB)、藍牙、WiMax、或任何形式的無線通信協(xié)議來操作,但不限于IEEE 802. 11標準及其相關(guān)家族、家庭插頭AV(HPAV)、超寬帶(UWB)、藍牙、WiMax、或任何形式的無線通信協(xié)議。雖然圖6中所示的模塊被描繪為系統(tǒng)600內(nèi)分開的塊,但是由這些塊中的一些執(zhí)行的功能可以被集成在單個半導(dǎo)體電路內(nèi),或者可以使用兩個或更多個分開的集成電路來實施。例如,雖然高速緩沖存儲器616被描繪為處理器610內(nèi)分開的塊,但是高速緩沖存儲器616可以分別被結(jié)合在處理器核心612內(nèi)。在本發(fā)明的另一實施例中,系統(tǒng)600可以包括多于一個處理器/處理核心。在這里公開的方法可以以硬件、軟件、固件、或它們的任何其他組合來實施。雖然描述了所公開的主題的實施例的例子,但是相關(guān)領(lǐng)域的普通技術(shù)人員將容易認識到,可以替換地使用實施所公開的主題的許多其他方法。在前面的描述中已經(jīng)描述了所公開的主題的各種方面。為了解釋起見,闡述了特定的數(shù)目、系統(tǒng)和配置以便提供對于本主題的透徹理解。然而,對于具有本公開的益處的相關(guān)領(lǐng)域的技術(shù)人員而言下述是顯然的,即本主題可以在沒有特定細節(jié)的情況下被實踐。在其他實例中,公知的特征、部件、或模塊被省略、簡化、組合、或分割以免模糊所公開的主題。在這里使用的術(shù)語“能夠操作”是指,設(shè)備、系統(tǒng)、協(xié)議等等當設(shè)備或系統(tǒng)處于斷電狀態(tài)時能夠操作或適于操作以用于它的期望功能。所公開的主題的各種實施例可以以硬件、固件、軟件、或它們的組合來實施,并且可以參照或結(jié)合程序代碼來描述,諸如指令、函數(shù)、過程、數(shù)據(jù)結(jié)構(gòu)、邏輯、應(yīng)用程序、用于設(shè)計的模擬、仿真和制造的設(shè)計表示或格式之類的程序代碼當由機器訪問時導(dǎo)致機器執(zhí)行任務(wù)、定義抽象數(shù)據(jù)類型或低級別硬件上下文、或產(chǎn)生結(jié)果。在附圖中所示的技術(shù)可以使用在一個或多個計算設(shè)備(例如通用計算機或計算設(shè)備)上存儲和執(zhí)行的代碼和數(shù)據(jù)來實施。這樣的計算設(shè)備使用機器可讀介質(zhì)(例如機器可讀存儲介質(zhì)(例如磁盤、光盤、隨機存取存儲器、只讀存儲器、閃速存儲器設(shè)備、相變存儲器))和機器可讀通信介質(zhì)(例如電、光、聲或其他形式的傳播信號(例如載波、紅外信號、數(shù)字信號等等))來存儲和傳送(內(nèi)部地和通過網(wǎng)絡(luò)與其他計算設(shè)備)代碼和數(shù)據(jù)。雖然已經(jīng)參照說明性實施例描述了所公開的主題,但是該描述并不打算在限制性的意義上被解釋。說明性實施例的各種修改以及本主題的其他實施例(其對于所公開的主題所涉及的領(lǐng)域的技術(shù)人員而言將是顯然的)被認為處于所公開的主題的范圍內(nèi)。
1權(quán)利要求
1.一種分析在多線程框架上執(zhí)行的多線程應(yīng)用的性能的方法,包括確定所述多線程應(yīng)用的并行區(qū)域的并行開銷是否超過閾值;以及響應(yīng)于關(guān)于所述多線程應(yīng)用的并行區(qū)域的并行開銷超過閾值的確定,確定所述并行區(qū)域的并行開銷的一個或多個原因。
2.根據(jù)權(quán)利要求I所述的方法,其中,所述并行開銷包括活動的并行開銷和非活動的并行開銷,以及其中確定所述多線程應(yīng)用的并行區(qū)域的并行開銷是否超過閾值包括確定所述多線程應(yīng)用的并行區(qū)域的活動的并行開銷和/或非活動的并行開銷是否超過閾值。
3.根據(jù)權(quán)利要求2所述的方法,其中,確定所述并行區(qū)域的并行開銷的一個或多個原因包括基于設(shè)置的監(jiān)視時段來執(zhí)行所述并行區(qū)域。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述并行區(qū)域的執(zhí)行使用一個或多個工作者線程,以及其中確定所述并行區(qū)域的并行開銷的一個或多個原因還包括響應(yīng)于每個線程執(zhí)行所述并行區(qū)域的一個或多個任務(wù)之一,將所述一個或多個工作者線程中的每個分配給用戶代碼執(zhí)行狀態(tài);響應(yīng)于每個線程在本地隊列中尋找任務(wù),將所述一個或多個工作者線程中的每個分配給本地隊列查找狀態(tài),其中所述任務(wù)是所述并行區(qū)域的一個或多個任務(wù)的一部分;響應(yīng)于每個線程在另一隊列中或在全局隊列中尋找另一任務(wù),將所述一個或多個工作者線程中的每個分配給全局任務(wù)搜索狀態(tài),其中所述另一任務(wù)是所述并行區(qū)域的一個或多個任務(wù)的一部分;以及響應(yīng)于每個線程處于空閑狀態(tài),將所述一個或多個工作者線程中的每個分配給等待狀態(tài)。
5.根據(jù)權(quán)利要求4所述的方法,其中,確定所述并行區(qū)域的并行開銷的一個或多個原因還包括確定對于所述一個或多個工作者線程中的每個而言在所述本地隊列、所述另一隊列和所述全局隊列中任務(wù)的執(zhí)行的頻率是否超過另一閾值;以及響應(yīng)于關(guān)于任務(wù)執(zhí)行的頻率超過另一閾值的確定,報告每個工作者線程正在花費太多的它的生存期從所述本地隊列中取任務(wù)以作為所述并行區(qū)域的并行開銷的一個或多個原因之一。
6.根據(jù)權(quán)利要求4所述的方法,其中,確定所述并行區(qū)域的并行開銷的一個或多個原因還包括確定在所述本地隊列中任務(wù)的執(zhí)行與在所述另一隊列和所述全局隊列中任務(wù)的執(zhí)行的比是否超過另一閾值;以及響應(yīng)于關(guān)于在所述本地隊列中任務(wù)的執(zhí)行與在所述另一隊列和所述全局隊列中任務(wù)的執(zhí)行的比超過另一閾值的確定,報告每個工作者線程正在花費太多的時間尋找在所述另一本地隊列中的另一任務(wù)或?qū)ふ以谒鋈株犃兄械牧硪蝗蝿?wù),以作為所述并行區(qū)域的并行開銷的一個或多個原因之一。
7.根據(jù)權(quán)利要求4所述的方法,其中,確定所述并行區(qū)域的并行開銷的一個或多個原因還包括確定對于所述一個或多個工作者線程中的每個而言從所述全局任務(wù)搜索狀態(tài)到所述全局任務(wù)搜索狀態(tài)和到所述等待狀態(tài)的狀態(tài)轉(zhuǎn)移的頻率是否超過另一閾值;響應(yīng)于關(guān)于對于所述一個或多個工作者線程中的每個而言從所述全局任務(wù)搜索狀態(tài)到所述全局任務(wù)搜索狀態(tài)和到所述等待狀態(tài)的狀態(tài)轉(zhuǎn)移的頻率超過另一閾值的確定,報告所述并行區(qū)域的一個或多個任務(wù)小于所述一個或多個工作者線程,以作為所述并行區(qū)域的并行開銷的一個或多個原因之一;以及響應(yīng)于關(guān)于對于所述一個或多個工作者線程中的每個而言從所述全局任務(wù)搜索狀態(tài)到所述全局任務(wù)搜索狀態(tài)和到所述等待狀態(tài)的狀態(tài)轉(zhuǎn)移的頻率沒有超過另一閾值的確定以及關(guān)于所述多線程應(yīng)用的并行區(qū)域的非活動的并行開銷超過閾值的確定,報告所述一個或多個工作者線程中的至少一個已完成它們的任務(wù)但是不能幫助所述一個或多個工作者線程中的剩余工作者線程,以作為所述并行區(qū)域的并行開銷的一個或多個原因之一。
8.根據(jù)權(quán)利要求I所述的方法,其中,所述多線程框架至少部分地與開放多處理(OpenMP)、Intel 線程構(gòu)建塊(TBB)、Intel Cilk+—、用于吞吐量計算的 Intel C++(Ct)和Microsoft 并行模式庫(PPL)之一相兼容。
9.一種裝置,包括并行線程庫;操作系統(tǒng),其使用所述并行線程庫來執(zhí)行多線程應(yīng)用;邏輯,其確定所述多線程應(yīng)用包括次優(yōu)并行算法;以及使用線程生存周期狀態(tài)機來確定所述次優(yōu)并行算法的一個或多個性能問題。
10.根據(jù)權(quán)利要求9所述的裝置,其中,確定所述多線程應(yīng)用包括次優(yōu)并行算法的所述邏輯確定所述次優(yōu)算法的并行開銷可與所述多線程應(yīng)用的性能增益相比或者大于所述性能增益。
11.根據(jù)權(quán)利要求9所述的裝置,其中,所述次優(yōu)并行算法的一個或多個性能問題包括次優(yōu)粒度、不足的并行松弛度、以及過多的任務(wù)挪用中的一個或多個。
12.根據(jù)權(quán)利要求9所述的裝置,其中,所述線程生存周期狀態(tài)機包括執(zhí)行狀態(tài),其中所述執(zhí)行狀態(tài)包括第一多個線程,所述第一多個線程中的每個處于執(zhí)行所述次優(yōu)并行算法的多個作業(yè)之一的狀態(tài);本地隊列查找狀態(tài),其中所述本地隊列查找狀態(tài)包括第二多個線程,所述第二多個線程中的每個處于搜索本地隊列中的作業(yè)的狀態(tài),其中所述作業(yè)是所述次優(yōu)并行算法的多個作業(yè)的一部分;全局作業(yè)搜索狀態(tài),其中所述全局作業(yè)搜索狀態(tài)包括第三多個線程,所述第三多個線程中的每個處于尋找在另一隊列中或在全局隊列中的另一作業(yè)的狀態(tài),其中所述另一作業(yè)是所述次優(yōu)并行算法的多個作業(yè)的一部分;以及等待狀態(tài),其中所述等待狀態(tài)包括第四多個線程,所述第四多個線程中的每個處于空閑狀態(tài)。
13.根據(jù)權(quán)利要求9所述的裝置,其中,使用線程生存周期狀態(tài)機來確定所述次優(yōu)并行算法的一個或多個性能問題的所述邏輯在確定的時段內(nèi)執(zhí)行所述次優(yōu)并行算法;確定所述執(zhí)行狀態(tài)到所述本地隊列查找狀態(tài)的轉(zhuǎn)移的數(shù)目與所述本地隊列查找狀態(tài)到所述全局作業(yè)搜索狀態(tài)的轉(zhuǎn)移和重復(fù)所述全局作業(yè)搜索狀態(tài)的數(shù)目的總和;確定所述總和與所述確定的時段的持續(xù)時間的比超過第一閾值;以及識別所述次優(yōu)并行算法的粒度太精細以作為所述次優(yōu)并行算法的一個或多個性能問題中的第一問題。
14.根據(jù)權(quán)利要求13所述的裝置,其中,使用線程生存周期狀態(tài)機來確定所述次優(yōu)并行算法的一個或多個性能問題的所述邏輯還確定所述本地隊列查找狀態(tài)到所述全局作業(yè)搜索狀態(tài)的轉(zhuǎn)移和重復(fù)所述全局作業(yè)搜索狀態(tài)的數(shù)目與所述執(zhí)行狀態(tài)到所述本地隊列查找狀態(tài)的轉(zhuǎn)移的數(shù)目的比超過第二閾值;以及識別所述次優(yōu)并行算法的線性衍生以作為所述次優(yōu)并行算法的一個或多個性能問題中的第二問題。
15.根據(jù)權(quán)利要求14所述的裝置,其中,使用線程生存周期狀態(tài)機來確定所述次優(yōu)并行算法的一個或多個性能問題的所述邏輯還確定所述全局作業(yè)搜索狀態(tài)到所述全局作業(yè)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目是否超過第三閾值;響應(yīng)于關(guān)于所述全局作業(yè)搜索狀態(tài)到所述全局作業(yè)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目超過第三閾值的確定,識別所述次優(yōu)并行算法的過多等待以作為所述次優(yōu)并行算法的一個或多個性能問題中的第三問題;以及響應(yīng)于關(guān)于所述全局作業(yè)搜索狀態(tài)到所述全局作業(yè)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目沒有超過第三閾值的確定以及關(guān)于所述次優(yōu)并行算法的非活動的并行開銷超過第四閾值的確定,識別所述次優(yōu)并行算法的不足的作業(yè)創(chuàng)建以作為所述次優(yōu)并行算法的一個或多個性能問題中的第四問題。
16.根據(jù)權(quán)利要求9所述的裝置,其中,所述并行線程庫至少部分地與開放多處理(OpenMP)、Intel 線程構(gòu)建塊(TBB)、Intel Cilk+—、用于吞吐量計算的 Intel C++(Ct)和Microsoft 并行模式庫(PPL)之一相兼容。
17.根據(jù)權(quán)利要求9所述的裝置,其中,所述邏輯是所述并行線程庫的一部分。
18.一種具有在其上存儲的指令的機器可讀存儲介質(zhì),所述指令在被執(zhí)行時使得處理器執(zhí)行下列方法基于每個線程的當前狀態(tài),將多個線程中的每個分配給多個狀態(tài)中的相應(yīng)狀態(tài);以及至少部分地基于對于每個線程而言在所述多個狀態(tài)之間轉(zhuǎn)移的數(shù)目,確定多線程應(yīng)用的并行區(qū)域的一個或多個問題。
19.根據(jù)權(quán)利要求18所述的介質(zhì),其中,所述多個狀態(tài)包括執(zhí)行狀態(tài),其中響應(yīng)于每個線程處于執(zhí)行所述多線程應(yīng)用的并行區(qū)域的一部分的當前狀態(tài),將每個線程分配給所述執(zhí)行狀態(tài);本地隊列查找狀態(tài),其中響應(yīng)于每個線程處于搜索在本地隊列中的作業(yè)的當前狀態(tài),將每個線程分配給所述本地隊列查找狀態(tài),其中所述作業(yè)是所述多線程應(yīng)用的并行區(qū)域的多個作業(yè)的一部分;全局作業(yè)搜索狀態(tài),其中響應(yīng)于每個線程處于尋找在另一隊列中或在全局隊列中的另一作業(yè)的當前狀態(tài),將每個線程分配給所述全局作業(yè)搜索狀態(tài),其中所述另一作業(yè)是所述多線程應(yīng)用的并行區(qū)域的多個作業(yè)的一部分;以及等待狀態(tài),其中響應(yīng)于每個線程處于非活動的當前狀態(tài),將每個線程分配給所述等待狀態(tài)。
20.根據(jù)權(quán)利要求18所述的介質(zhì),其中,至少部分地基于對于每個線程而言在所述多個狀態(tài)之間轉(zhuǎn)移的數(shù)目而確定多線程應(yīng)用的并行區(qū)域的一個或多個問題包括在確定的時段內(nèi)執(zhí)行所述多線程應(yīng)用的并行區(qū)域;確定所述執(zhí)行狀態(tài)到所述本地隊列查找狀態(tài)的轉(zhuǎn)移的數(shù)目與所述本地隊列查找狀態(tài)到所述全局作業(yè)搜索狀態(tài)的轉(zhuǎn)移和重復(fù)所述全局作業(yè)搜索狀態(tài)的數(shù)目的總和;確定所述總和與所述確定的時段的持續(xù)時間的比超過第一閾值;以及識別所述次優(yōu)并行算法的粒度太精細以作為所述次優(yōu)并行算法的一個或多個性能問題中的第一問題。
21.根據(jù)權(quán)利要求20所述的介質(zhì),其中,至少部分地基于對于每個線程而言在所述多個狀態(tài)之間轉(zhuǎn)移的數(shù)目而確定多線程應(yīng)用的并行區(qū)域的一個或多個問題包括確定所述本地隊列查找狀態(tài)到所述全局作業(yè)搜索狀態(tài)的轉(zhuǎn)移和重復(fù)所述全局作業(yè)搜索狀態(tài)的數(shù)目與所述執(zhí)行狀態(tài)到所述本地隊列查找狀態(tài)的轉(zhuǎn)移的數(shù)目的比超過第二閾值;以及識別所述次優(yōu)并行算法的線性衍生以作為所述次優(yōu)并行算法的一個或多個性能問題中的第二問題。
22.根據(jù)權(quán)利要求21所述的介質(zhì),其中,至少部分地基于對于每個線程而言在所述多個狀態(tài)之間轉(zhuǎn)移的數(shù)目而確定多線程應(yīng)用的并行區(qū)域的一個或多個問題包括確定所述全局作業(yè)搜索狀態(tài)到所述全局作業(yè)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目是否超過第三閾值;以及響應(yīng)于關(guān)于所述全局作業(yè)搜索狀態(tài)到所述全局作業(yè)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目超過第三閾值的確定,識別所述多線程應(yīng)用的并行區(qū)域的過多等待以作為所述多線程應(yīng)用的并行區(qū)域的一個或多個性能問題中的第三問題。
23.根據(jù)權(quán)利要求22所述的介質(zhì),其中,至少部分地基于對于每個線程而言在所述多個狀態(tài)之間轉(zhuǎn)移的數(shù)目而確定多線程應(yīng)用的并行區(qū)域的一個或多個問題包括確定對于所述一個或多個工作者線程中的每個而言所述全局任務(wù)搜索狀態(tài)到所述全局任務(wù)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目是否超過另一閾值;響應(yīng)于關(guān)于所述全局作業(yè)搜索狀態(tài)到所述全局作業(yè)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目超過第三閾值的確定,識別所述多線程應(yīng)用的并行區(qū)域的過多等待以作為所述多線程應(yīng)用的并行區(qū)域的一個或多個問題中的第三問題;以及響應(yīng)于關(guān)于所述全局作業(yè)搜索狀態(tài)到所述全局作業(yè)搜索狀態(tài)和到所述等待狀態(tài)的轉(zhuǎn)移的數(shù)目沒有超過第三閾值的確定以及關(guān)于所述多線程應(yīng)用的并行區(qū)域的非活動的并行開銷超過第五閾值的確定,識別所述多線程應(yīng)用的并行區(qū)域的不足的作業(yè)創(chuàng)建以作為所述多線程應(yīng)用的并行區(qū)域的一個或多個性能問題中的第四問題。
全文摘要
提供確定多線程應(yīng)用的特定問題的分析模型的方法和系統(tǒng)。在本發(fā)明的一個實施例中,多線程應(yīng)用使用多個線程以用于執(zhí)行,以及基于每個線程的當前狀態(tài),每個線程被分配給多個狀態(tài)中的相應(yīng)狀態(tài)。通過這樣做,基于對于每個線程而言在多個狀態(tài)之間轉(zhuǎn)移的數(shù)目,確定多線程應(yīng)用的特定問題。在本發(fā)明的一個實施例中,分析模型使用工作者線程轉(zhuǎn)移計數(shù)器或事件以對于多線程應(yīng)用的每個并行區(qū)域或算法來確定哪個問題已經(jīng)發(fā)生以及它對于并行區(qū)域或算法的可伸縮性有多少影響。
文檔編號G06F9/38GK102918501SQ201180028522
公開日2013年2月6日 申請日期2011年5月20日 優(yōu)先權(quán)日2010年5月25日
發(fā)明者A.佩古辛, A.庫里列夫 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
潜江市| 昌都县| 河源市| 中山市| 共和县| 吴堡县| 永昌县| 苍溪县| 高雄市| 册亨县| 股票| 越西县| 嘉善县| 大关县| 泾川县| 家居| 固安县| 尖扎县| 乃东县| 武城县| 信阳市| 临海市| 内丘县| 科尔| 沂水县| 高密市| 辽阳市| 郸城县| 新津县| 民勤县| 闽清县| 通渭县| 昭平县| 离岛区| 平遥县| 磐石市| 丹江口市| 和硕县| 民丰县| 盖州市| 静乐县|