[發明專利]一種遠程并行程序調試系統中基于樹形的消息聚集方法無效
| 申請號: | 201010524824.0 | 申請日: | 2010-10-27 |
| 公開(公告)號: | CN102023920A | 公開(公告)日: | 2011-04-20 |
| 發明(設計)人: | 伍衛國;樊源泉;趙海祥;王恩東;公維鋒 | 申請(專利權)人: | 西安交通大學;浪潮(北京)電子信息產業有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F9/46 |
| 代理公司: | 西安智大知識產權代理事務所 61215 | 代理人: | 賀建斌 |
| 地址: | 710049 陜*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 遠程 并行 程序 調試 系統 基于 樹形 消息 聚集 方法 | ||
1.一種遠程并行程序調試系統中基于樹形的消息聚集方法,其特征在于:包括以下步驟:
第一步,構造樹形的調試框架,根據調試進程數n,其中n的取值為:1≤n,構造一棵n+1個結點的樹,樹的度可以手動設置為c,其中c的取值為:1≤c≤n,按照從0到n-1的順序依次為每個調試進程分配一個消息傳遞接口MPI的唯一編號rank,把進程編號rank值為n+1的結點設置為樹形調試框架的根結點,即根控制器MainController所在的結點,把位于同一個調試進程集的待調試進程分配到樹形調試框架中同一個子樹中,樹形調試框架中除去根結點和葉子外的每個結點構成中間控制器MidController,其中每個結點的度為r,r的取值為:1≤r≤c,子結點即葉子控制器LeafController只接收調試命令并負責并行程序的調試信息收集,然后求出樹形調試框架中每個結點的父親、孩子和子孫結點的進程編號rank,分別將其存放于父結點parent、孩子結點children和后代結點descendents的數據結構中,最后為樹形調試框架中除根結點外的每個結點啟動一個串行gdb調試進程,而根結點只負責調試命令的轉發和調試結果消息的接收聚集;
第二步,調試命令的接收和轉發,來自客戶端的調試命令首先被發送到樹形調試框架的根控制器MainController,根控制器MainController接收到命令后,對命令進行分析,并根據其孩子結點children數據結構中記錄的進程編號rank,按照廣度優先策略依次把調試命令轉發給中間控制器MidController,中間控制器MidController接收到調試命令后,首先把自身的進程編號rank與調試命令中的進程編號rank進行比較:相等,則傳遞命令給自身綁定的串行調試器gdb進程,串行調試器gdb進程執行該調試命令;不相等,則根據其孩子結點children數據結構中記錄的進程編號rank值,按照廣度優先的策略依次把調試命令轉發給屬于其孩子結點children的中間控制器MidController,其余結點采用相同的方法,直到該調試命令轉發到位于樹形調試框架葉子結點的葉子控制器LeafController,此時,葉子控制器LeafController把各自的調試命令傳遞給自身綁定的串行調試器gdb進程,以執行調試任務;
第三步,消息的聚集,每個串行調試器gdb執行完各自接收到的調試命令后,會以消息的方式返回調試進程執行的結果,但是這些消息中并沒有進程的標識,為了對消息進行區分,使用產生消息數據的那個調試進程的編號作為該條消息的頭部標記,這個整數值標記是全局唯一的,用中括號“[]”包括起來放在該消息的頭部,以區別于消息正文,如果一個消息正文屬于多個進程,則在頭部的中括號“[]”里列出每個調試進程的編號,編號間用“,”隔開,語法格式如下:
|[process-idj,…,process-idk]*mi_result
其中:符號“|”隔開不同消息,process-idj是調試進程的rank值,mi_result是消息正文,也就是單個調試進程返回的調試結果數據,
在對調試進程執行結果所產生的消息數據進行聚集時,把消息分成四種情況,分別對應四種消息聚集方法:第一類,數據部分完全相同的消息,指所有進程返回的消息完全相同,這類消息在合并的時候,只需保留一條,在此消息前面加上進程號,以表示是哪些進程產生了這個消息;第二類,數據部分不完全相同的消息,指調試結果result里至少有一個調試數據值value不同,其余的調試數據值value都相同,對這類消息處理時,將不同的調試數據值value都列出來,值之間用“,”隔開,在每一個值前面加上中括號“[]”,“[]”中列出該值所屬的每一個進程號,進程號之間也用“,”隔開;第三類,數據部分完全不同的消息,此處的不同是指消息不屬于第一、第二類的情況,此類消息不進行聚集操作,處理的方法是在每條消息的前面加上該消息所屬調試進程的編號,前后兩條消息之間用“|”隔開;第四類,針對多條消息而言,部分屬于第一、二類,另一部分屬于第三類,處理的方法是組合第二類和第三類的處理方法,把其中相同的消息按照第二類合并,對于完全不同的消息,在其前加上“[]”,“[]”中列出該消息所屬的進程號,作為單獨的一條消息,前后兩條消息之間用“|”隔開;
第四步,調試結果的返回,gdb調試進程執行完調試命令后,由該gdb進程所在結點的葉子控制器LeafController根據其父親結點parent數據結構中記錄的父親結點parent進程編號rank,向父親結點parent返回調試結果,父親結點parent接收到其所有孩子結點children返回的調試結果后,與其自身綁定的調試器返回的結果按照第三步的聚集方法進行消息的聚集操作,然后根據其自身的父親結點parentparent數據結構中記錄的父親結點parent進程編號rank,向其父親結點parent返回調試結果,其他結點類似,直到根控制器MainController接收到其所有后代結點descendents返回的調試結果后,按照第三步的聚集方法,對消息進行聚集操作,并把聚集后的消息封裝成IP數據包格式,發送至客戶端。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安交通大學;浪潮(北京)電子信息產業有限公司,未經西安交通大學;浪潮(北京)電子信息產業有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010524824.0/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種用于鋼包噴粉精煉工藝的脫硫粉劑及其生產方法
- 下一篇:固件切換的檢測方法





