1.一種并行程序的MHP分析方法,其特征在于,包括:
從待分析并行程序的主線程開始,每次選擇一個線程,模擬所述待分析并行程序的執(zhí)行,其中,當正在模擬執(zhí)行的線程無法繼續(xù)執(zhí)行時,跳轉至任一可繼續(xù)執(zhí)行的線程模擬執(zhí)行,直至所述待分析并行程序的所有線程模擬執(zhí)行完畢,其中,所述待分析并行程序包括至少兩個線程;
根據對所述待分析并行程序進行模擬執(zhí)行的結果,構建與所述待分析并行程序對應的多線程控制流圖;
對所述多線程控制流圖進行處理,得到保守正確的多線程控制流圖,所述保守正確的多線程控制流圖中的各節(jié)點的可能并發(fā)MHP結果不存在漏報;
對所述保守正確的多線程控制流圖進行MHP分析,得到所述待分析并行程序的MHP分析結果。
2.根據權利要求1所述的方法,其特征在于,所述對所述多線程控制流圖進行處理,得到保守正確的多線程控制流圖,包括:
若所述多線程控制流圖中的加入原語節(jié)點與多個線程匹配,則刪除所有與所述加入原語節(jié)點連接的邊;
若所述多線程控制流圖中的等待原語節(jié)點與多個觸發(fā)原語節(jié)點匹配,則刪除所有與所述等待原語節(jié)點連接的邊;
將得到的多線程控制流圖作為保守正確的多線程控制流圖。
3.根據權利要求1或2所述的方法,其特征在于,所述對所述保守正確的多線程控制流圖進行MHP分析,得到所述待分析并行程序的MHP分析結果,包括:
計算所述保守正確的多線程控制流圖中各節(jié)點的非并發(fā)集合和產生集合,其中,節(jié)點A的非并發(fā)集合表示無法與節(jié)點A并發(fā)的節(jié)點的集合,節(jié)點A的產生集合表示節(jié)點A所產生的節(jié)點的集合;
根據各節(jié)點的非并發(fā)集合和產生集合迭代計算所述保守正確的多線程控制流圖中各節(jié)點的MHP分析結果,直至所述MHP分析結果收斂,得到所述待分析并行程序的MHP分析結果。
4.根據權利要求1~3任一項所述的方法,其特征在于,所述從所述主線程開始,每次選擇一個線程,模擬所述待分析并行程序的執(zhí)行,其中,當正在模擬執(zhí)行的線程無法繼續(xù)執(zhí)行時,跳轉至任一可繼續(xù)執(zhí)行的線程模擬執(zhí)行,直至所述待分析并行程序的所有線程模擬執(zhí)行完畢,包括:
步驟一,從所述主線程開始,每次選擇一個線程,模擬選擇的線程的執(zhí)行,當所述選擇的線程無法繼續(xù)執(zhí)行時,鎖定所述選擇的線程并記錄所述選擇的線程當前的位置信息;
步驟二,跳轉至任一未被鎖定且可繼續(xù)執(zhí)行的第一線程,模擬所述第一線程的執(zhí)行,當所述第一線程無法繼續(xù)執(zhí)行時,鎖定所述第一線程并記錄所述第一線程當前的位置信息,直至所有未被鎖定且可繼續(xù)執(zhí)行的線程均被模擬執(zhí)行;
步驟三,解除所有被鎖定的線程,并重復執(zhí)行步驟二,直至所述待分析并行程序的所有線程模擬執(zhí)行完畢。
5.根據權利要求4所述的方法,其特征在于,所述模擬選擇的線程的執(zhí)行,包括:
采用深度優(yōu)先搜索分析法模擬選擇的線程的執(zhí)行;
所述模擬所述第一線程的執(zhí)行,包括:
采用深度優(yōu)先搜索分析法模擬所述第一線程的執(zhí)行。
6.根據權利要求4所述的方法,其特征在于,所述記錄所述選擇的線程當前的位置信息,包括:
在調度信息表中記錄所述選擇的線程的標識和當前的語句的標識;
所述記錄所述第一線程當前的位置信息,包括:
在所述調度信息表中記錄所述第一線程的標識和當前的語句的標識。
7.一種并行程序的MHP分析裝置,其特征在于,包括:
模擬執(zhí)行模塊,用于從待分析并行程序的主線程開始,每次選擇一個線程,模擬所述待分析并行程序的執(zhí)行,其中,當正在模擬執(zhí)行的線程無法繼續(xù)執(zhí)行時,跳轉至任一可繼續(xù)執(zhí)行的線程模擬執(zhí)行,直至所述待分析并行程序的所有線程模擬執(zhí)行完畢,其中,所述待分析并行程序包括至少兩個線程;
控制流圖構建模塊,用于根據對所述待分析并行程序進行模擬執(zhí)行的結果,構建與所述待分析并行程序對應的多線程控制流圖;
控制流圖處理模塊,用于對所述多線程控制流圖進行處理,得到保守正確的多線程控制流圖,所述保守正確的多線程控制流圖中的各節(jié)點的可能并發(fā)MHP結果不存在漏報;
MHP分析模塊,用于對所述保守正確的多線程控制流圖進行MHP分析,得到所述待分析并行程序的MHP分析結果。
8.根據權利要求7所述的裝置,其特征在于,所述控制流圖處理模塊,具體用于若所述多線程控制流圖中的加入原語節(jié)點與多個線程匹配,則刪除所有與所述加入原語節(jié)點連接的邊;若所述多線程控制流圖中的等待原語節(jié)點與多個觸發(fā)原語節(jié)點匹配,則刪除所有與所述等待原語節(jié)點連接的邊;將得到的多線程控制流圖作為保守正確的多線程控制流圖。
9.根據權利要求7或8所述的裝置,其特征在于,所述MHP分析模塊,具體用于計算所述保守正確的多線程控制流圖中各節(jié)點的非并發(fā)集合和產生集合,其中,節(jié)點A的非并發(fā)集合表示無法與節(jié)點A并發(fā)的節(jié)點的集合,節(jié)點A的產生集合表示節(jié)點A所產生的節(jié)點的集合;根據各節(jié)點的非并發(fā)集合和產生集合迭代計算所述保守正確的多線程控制流圖中各節(jié)點的MHP分析結果,直至所述MHP分析結果收斂,得到所述待分析并行程序的MHP分析結果。
10.根據權利要求7~9任一項所述的裝置,其特征在于,所述模擬執(zhí)行模塊,具體用于執(zhí)行如下步驟:步驟一,從所述主線程開始,每次選擇一個線程,模擬選擇的線程的執(zhí)行,當所述選擇的線程無法繼續(xù)執(zhí)行時,鎖定所述選擇的線程并記錄所述選擇的線程當前的位置信息;步驟二,跳轉至任一未被鎖定且可繼續(xù)執(zhí)行的第一線程,模擬所述第一線程的執(zhí)行,當所述第一線程無法繼續(xù)執(zhí)行時,鎖定所述第一線程并記錄所述第一線程當前的位置信息,直至所有未被鎖定且可繼續(xù)執(zhí)行的線程均被模擬執(zhí)行;步驟三,解除所有被鎖定的線程,并重復執(zhí)行步驟二,直至所述待分析并行程序的所有線程模擬執(zhí)行完畢。
11.根據權利要求10所述的裝置,其特征在于,所述模擬執(zhí)行模塊,具體用于采用深度優(yōu)先搜索分析法模擬選擇的線程的執(zhí)行;采用深度優(yōu)先搜索分析法模擬所述第一線程的執(zhí)行。
12.根據權利要求10所述的裝置,其特征在于,所述模擬執(zhí)行模塊,具體用于在調度信息表中記錄所述選擇的線程的標識和當前的語句的標識;在所述調度信息表中記錄所述第一線程的標識和當前的語句的標識。