• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于JavaCC的C代碼自動并行化的設(shè)計與實現(xiàn)

    2016-11-01 17:01:19劉有耀楊鵬程
    計算機應(yīng)用 2016年9期
    關(guān)鍵詞:詞法依賴性語句

    劉有耀 楊鵬程

    摘要:

    針對當(dāng)前大量遺產(chǎn)代碼無法重復(fù)利用的問題,設(shè)計一種新的編譯工具將C的串行代碼轉(zhuǎn)換為基于MPI+OpenMP的混合并行編程代碼,降低了并行編程的開發(fā)成本。首先,通過對JavaCC的優(yōu)化,實現(xiàn)一種可以解析C語言的詞法和語法分析器,進(jìn)行源代碼分析并生成抽象語法樹;其次,根據(jù)語法樹對源代碼進(jìn)行控制依賴性和數(shù)據(jù)依賴性分析,產(chǎn)生可并行化的語句塊分區(qū);再次,按照提出的并行代碼生成方法得到目標(biāo)代碼;最后,基于Visual Studio 2010構(gòu)建目標(biāo)代碼仿真驗證環(huán)境。實驗結(jié)果表明,該工具可以較為理想地實現(xiàn)串行代碼自動并行化,與手工編寫的代碼在加速比上的誤差為8.2%~18.4%。

    關(guān)鍵詞:

    JavaCC;抽象語法樹;依賴性;自動并行化;MPI+OpenMP

    中圖分類號:

    TP311

    文獻(xiàn)標(biāo)志碼:A

    Abstract:

    Aiming at the problem that a large amount of legacy code can not be reused, a new compilation tool was designed to convert the serial code of C into a hybrid parallel programming code based on MPI+OpenMP, which can reduce the development cost of parallel programming. First of all, by optimizing Java Compiler Compiler (JavaCC), a lexical and syntax analyzer which can parse the C language was implemented, then the source code analysis was conducted and the abstract syntax tree was generated. Secondly, according to the abstract syntax tree, the control dependence and data dependence of the source code were analyzed to produce the parallelizable statement block partitions. Thirdly, the object code was obtained according to the proposed parallel code generation method. Finally, the target code simulation environment was built based on Visual Studio 2010. The experimental results show that the tool can effectively achieve automatic parallelization of the serial code, and compared with the code written by hand, its speedup of the error is between 8.2% to 18.4%.

    英文關(guān)鍵詞Key words:

    Java Compiler Compiler (JavaCC); abtract syntax tree; dependency; automatic parallelization; MPI+OpenMP

    0引言

    近年來,隨著并行計算的快速發(fā)展和數(shù)據(jù)量的不斷增長,使用傳統(tǒng)的串行編程語言已經(jīng)難以對其進(jìn)行處理,人們需要尋找到一種新的技術(shù)來適應(yīng)大規(guī)模數(shù)據(jù)的處理,并行處理技術(shù)便應(yīng)運而生。并行處理技術(shù)的發(fā)展必然伴隨著并行編程語言的產(chǎn)生,對此,人們也進(jìn)行了非常多的嘗試,從而發(fā)現(xiàn)了多種并行編程語言。MPI+OpenMP[1]的混合編程便是其中應(yīng)用最為廣泛的一種編程語言。這對編程人員的編程能力要求比較高,所以急切的需要一種設(shè)計工具可以將之前的大量遺產(chǎn)C代碼直接轉(zhuǎn)換為并行程序,降低并行程序的開發(fā)成本,減輕編程人員的編程壓力。

    目前,國內(nèi)的自動并行化工具主要有復(fù)旦大學(xué)研發(fā)的AFT和國防科技大學(xué)研制的KDPARPRO/V2.0。而在國外,自動并行化工具的研究已經(jīng)逐步成熟,具有代表性的有美國斯坦福大學(xué)的SUIF編譯器[2]以及蘋果公司研發(fā)的LLVM/Clang編譯器[3]。但由于這些編譯工具在使用時需要有中間代碼的生成,編程人員在修改編譯器時也需要了解中間代碼的意義。所以基于這些想法,本文尋找到一種新的編譯器——JavaCC(Java Compiler Compiler)[4],其作為一種詞法語法分析器的生成工具,只要按照C語言的語法定義好相應(yīng)的規(guī)則,就可以對C源代碼進(jìn)行分析,不需要有中間代碼的生成。

    本文的主要工作是使用JavaCC生成的分析器作為程序前端分析的工具,得到程序中可并行化的分區(qū)模塊;再按照并行代碼的生成方法,得到最終的代碼;之后在Visual Studio 2010和MPICH2搭建的環(huán)境下對其進(jìn)行功能驗證,并與手工編寫的代碼進(jìn)行加速比的對比,得出其性能的優(yōu)劣性。該工具的設(shè)計既能夠有效解決大規(guī)模數(shù)據(jù)的處理問題,又能夠節(jié)省編程人員在編程方面的時間花費,為程序并行化提供了一種高效的技術(shù)途徑。

    1MPI+OpenMP混合編程模式

    消息傳遞接口 (Message Passing Interface, MPI)是一種有關(guān)消息傳遞規(guī)范的庫,而不是一門語言,文中使用的實現(xiàn)方式是MPICH2。而OpenMP是一個共享存儲并行系統(tǒng)上的應(yīng)用編程接口,共享的內(nèi)存可以被所有OpenMP線程訪問,這種編程方式主要用于多核共享內(nèi)存的場景,它擁有一系列的編譯指導(dǎo)語句、運行庫例程和環(huán)境變量。

    MPI+OpenMP混合編程[5]利用以上兩種編程模式的優(yōu)勢:它使用了可在多異構(gòu)節(jié)點間有效通信的MPI機制,并以O(shè)penMP輕量級線程組的方式在共享內(nèi)存的多核平臺上運行。在此混合并行計算模型下,MPI主要提供通信機制,OpenMP多線程則主要承擔(dān)計算的部分。通常通信及計算的部分是以串行的方式實現(xiàn)的:OpenMP多線程的結(jié)構(gòu)為fork…join…類型,在運行計算任務(wù)時MPI ranks處于等待狀態(tài),當(dāng)MPI ranks得到結(jié)果時,接著就會與其他節(jié)點交換結(jié)果與此同時OpenMP線程處于等待計算任務(wù)的狀態(tài)。用戶可以通過更好地安排OpenMP與MPI間任務(wù)的協(xié)作來進(jìn)一步改進(jìn)程序的性能?;旌暇幊棠J降哪P徒Y(jié)構(gòu)如圖1所示。

    2.2JavaCC前端編譯模塊

    JavaCC是一個用Java開發(fā)的能生成詞法和語法分析器的生成程序[8]。其輸入文件為一個按照C語法規(guī)則定義的文件,且包含一些語義的描述,它的后綴名是.jj。輸出為可以解析C源代碼的詞法和語法分析器。接下來,對JavaCC編譯前端的主要操作過程進(jìn)行描述。

    2.2.1詞法分析

    詞法分析,也被稱為掃描。它是JavaCC編譯前端模塊中代碼轉(zhuǎn)換處理機制的首要部分。詞法分析器能把輸入文件中的字符串劃分為一個個稱為記號(token)的有意義單元并對它們進(jìn)行識別和歸類。

    2.2.2語法分析

    JavaCC不生成抽象語法樹(Abstract Syntax Tree, AST),但提供建立AST生成的預(yù)處理器JJTree,JJTree采用壓棧出棧的遞歸方法生成分析樹,為JavaCC的輸入進(jìn)行預(yù)處理。通過JavaCC和JJTree生成的語法分析器,其輸入為詞法分析之后得到的具有記號形式的源代碼,而輸出的結(jié)果則為抽象語法樹(AST),從AST中可以看出源程序的整體架構(gòu)。

    語法分析只是將一組單詞序列按照源代碼的物理結(jié)構(gòu)進(jìn)行編排,并不注意其語義是否正確.在此部分中,輸入的是詞法分析后得出的單詞序列,而輸出的則是未注釋過的語法樹。

    2.2.3語義分析

    語義分析是按照J(rèn)avaCC生成的分析器中預(yù)定義好的符號表和類型的一種映射結(jié)構(gòu),來判斷經(jīng)過語法分析后得出的代碼是否符合相對應(yīng)的語義規(guī)則。

    程序的語義確定了程序的運行,但是大多數(shù)的程序設(shè)計語言都具有在執(zhí)行之前被確定,而不易由語法表示和由分析程序分析的特征。這些語義動作通常是作為注釋語言加入到語法樹中。

    2.2.4符號表

    符號表是一種數(shù)據(jù)結(jié)構(gòu),用來存儲關(guān)于源程序的各種相關(guān)信息。符號表在前端分析的過程中需要不斷地進(jìn)行收集、記錄,源程序在詞法分析之后得到的結(jié)果輸入到表格中存儲起來,作為語法分析器的輸入;而對于語義分析部分,它將一些相

    關(guān)的數(shù)據(jù)類型和與之對應(yīng)的說明添加到符號表中。符號表還存儲語句節(jié)點的編號,語句節(jié)點的識別是按照程序的物理結(jié)構(gòu)依次對每個語句先進(jìn)行標(biāo)記。構(gòu)建符號表是使用線性鏈表來記錄相關(guān)的數(shù)據(jù)信息。

    其具體實現(xiàn)的操作有以下幾個方面:

    1)創(chuàng)建一個新的符號表來保存標(biāo)識符的信息;

    2)在當(dāng)前表中加入一個新的條目,使用鍵值對的方式。鍵指的是對應(yīng)于標(biāo)志符的詞法單元對象的引用,而值指的是其中存儲的相關(guān)信息。

    3)更新重復(fù)使用的某個標(biāo)識符的相關(guān)信息。

    2.3程序結(jié)構(gòu)分析

    經(jīng)過JavaCC前端分析后,輸出為抽象語法樹(AST)以及語義分析之后的結(jié)果,接下來是根據(jù)AST進(jìn)行程序結(jié)構(gòu)分析,從整體上把握需要分析的程序的架構(gòu)。程序結(jié)構(gòu)分析的最終結(jié)果就是得到含有循環(huán)體的語句塊分區(qū)。其主要包括的部分有程序控制依賴圖(Control Dependence Graph, CDG)的生成和程序的分區(qū)模塊的劃分[9]。

    2.3.1程序控制依賴圖

    程序控制依賴圖是根據(jù)語句節(jié)點的控制域來進(jìn)行創(chuàng)建的,而控制域的劃分主要是根據(jù)語句節(jié)點的入度和出度[10]來決定的,所以需先確定其入度和出度,代碼的描述如下:

    2.3.2程序的語句塊分區(qū)

    該部分是通過對控制依賴圖進(jìn)行遍歷而得到。首先,通過計算各個語句塊的入度和出度,能夠?qū)⒊绦蛑械母鱾€語句塊進(jìn)行重新編號,并將其保存到符號表中;其次,對各個語句塊進(jìn)行控制依賴和數(shù)據(jù)依賴性分析,確定可并行執(zhí)行的語句塊分區(qū),調(diào)用MPI的庫實現(xiàn)各個語句塊之間的數(shù)據(jù)通信以及開銷;最后,再分別對各個語句塊內(nèi)的計算部分進(jìn)行一次數(shù)據(jù)依賴性分析,調(diào)用OpenMP的編譯指導(dǎo)語句對其進(jìn)行并行化的處理。

    2.4數(shù)據(jù)依賴性分析

    如果希望對原有的串行程序進(jìn)行并行化,則需要分析語句塊分區(qū)中的所有語句間的依賴關(guān)系,稱之為相關(guān)分析[11]。

    數(shù)據(jù)的依賴關(guān)系有如下三種:

    1)流依賴。

    一個變量在一次表達(dá)式中賦值或修改然后用在后來的另一個表達(dá)式中。如:S1:a=b+c;S2:d=a-e。

    2)反依賴。

    一個變量在一個表達(dá)式中被使用然后在后來一個表達(dá)式中被修改賦值。如:S1:a=b+c;S2:b=d+e。

    3)輸出依賴。

    一個變量在一表達(dá)式中被修改賦值然后又在后來另一個表達(dá)式中被修改賦值。如:S1:a=b+c;S2:a=d-e。

    根據(jù)三種依賴關(guān)系的分類可以看出:①數(shù)據(jù)不直接存在依賴性的語句可并行執(zhí)行;②存在流依賴或輸出依賴的語句不可并行執(zhí)行;③存在反依賴的語句(如S1反依賴與S2),只要保證S1先讀S2后寫,則允許其并行執(zhí)行。具體實現(xiàn)的代碼[12]描述如下:

    從圖3中可以更加清晰的看出此算法的運行流程。經(jīng)過此步驟,可以完成串行程序的分析工作,即完成整個軟件設(shè)計的第一個大的部分,在自動轉(zhuǎn)換部分,只需要調(diào)用存放于數(shù)組中的可并行執(zhí)行語句編號,即可直接進(jìn)行轉(zhuǎn)換。接下來,將對第二個部分,即并行程序代碼的生成進(jìn)行闡述。

    2.5并行程序代碼生成

    經(jīng)過程序的粗略劃分得到分區(qū)模塊module_number,對語句塊分區(qū)和分區(qū)內(nèi)的嵌套循環(huán)部分進(jìn)行數(shù)據(jù)依賴性分析。具體的操作如下:

    1)在頭文件中插入#include和#include

    2)在C源程序的main函數(shù)中插入MPI_Init()、MPI_Comm_rank()和MPI_Comm_size()等初始化函數(shù)。

    3)將C源程序中可并行化的語句塊分區(qū)module_number,按照從小到大的順序依次往下編號,特別注意,各個語句塊分區(qū)在源程序中的位置不會發(fā)生任何改變。

    首先,對可并行化的分區(qū)模塊進(jìn)行任務(wù)分配,在每個語句塊分區(qū)上只有一個MPI的進(jìn)程,針對各個分區(qū)模塊:

    ①如果含有2重以上的嵌套循環(huán),則調(diào)用OpenMP的編譯制導(dǎo)語句#pragma omp parallel shared() private()對其進(jìn)行處理;

    ②如果該分區(qū)模塊就是2的重嵌套循環(huán),并且在相關(guān)性分析完之后,無依賴性則直接插入OpenMP制導(dǎo)語句#pragma omp for;

    ③如果該語句塊分區(qū)中不含有嵌套循環(huán)或是1重循環(huán),則不對其作任何改變。

    其次,在各個進(jìn)程之間,MPI可以通過調(diào)用MPI_Send()和MPI_Recv()函數(shù)來實現(xiàn)進(jìn)程之間的通信問題。

    最后,通過調(diào)用MPI庫實現(xiàn)語句塊分區(qū)之間的通信和并行化,而在其計算部分,使用OpenMP來實現(xiàn)并行化的處理。

    4)在源程序的return 0之前加入MPI_Finalize()來使得MPI程序退出執(zhí)行環(huán)境。

    3系統(tǒng)平臺搭建

    本文基于Eclipse的平臺,使用JavaCC和JJTree作為前端的分析工具[13],在Eclipse中編寫代碼對程序進(jìn)行控制依賴分析和數(shù)據(jù)依賴性分析,最終調(diào)用并行代碼生成方法來實現(xiàn)轉(zhuǎn)換。

    對于整個系統(tǒng)的前端為基于JavaCC的前端分析,其具體過程為:

    用戶首先按照J(rèn)avaCC的輸入文件格式編寫一個文件(*.jjt),即文件中的內(nèi)容是依據(jù)C的詞法和語法規(guī)則以及各個階段中發(fā)生的行為而編寫。主要包括以下幾個部分:Options{}部分,主要聲明產(chǎn)生的語法分析器的特性;接下來是一個介于“PARSER_BEGIN(name)”和“PARSER_END(name)”之間的分析器類,其中主要包括類名以及成員的聲明;下面是被定義在Input和MatchedBraces的產(chǎn)生式中的詞法分析器;最后定義語法規(guī)則,開頭是一個聲明,包括返回值類型、規(guī)則名和一個冒號,緊接著是一些在花括號({})里的聲明和語句。一個語法單元中有多個規(guī)則時,用|分開。

    其次,輸入*.jjt的文件,通過JJTree的編譯得到*.jj文件。

    再次,使用JavaCC編譯*.jj文件,可以生成Java代碼實現(xiàn)的特定詞法和語法分析器;生成的源程序包含:*Parser.java(語法分析器)、*TokenManager.java(詞法分析器)等文件。

    最終,通過生成的詞法和語法分析器對一個輸入的C源文件進(jìn)行詞法、語法分析,建立抽象語法樹。如把一個MiniC的源文件傳給分析器的代碼為:

    這段就是當(dāng)調(diào)用ASTGoal這個類型的Translator方法時,會輸出“ASTGoal”,之后繼續(xù)遍歷它的孩子節(jié)點。在這個類里編寫一個SymbolTableTranslator.java和一個TypecheckingTranslator.java,分別實現(xiàn)MiniCParserTranslator這個接口,其中SymbolTableTranslator中的Translator方法負(fù)責(zé)完成建立符號表的工作。

    之后按照控制依賴性分析和數(shù)據(jù)依賴性分析,對源程序進(jìn)行分區(qū),得到最終的語句塊分區(qū)module_number,最后調(diào)用并行代碼的生成方法來實現(xiàn)目標(biāo)代碼的生成。

    將生成的代碼保存,最后在MPI+OpenMP構(gòu)建的混合編程模式下對目標(biāo)代碼進(jìn)行驗證。

    4驗證平臺搭建及實例驗證

    接下來將具體介紹MPI+OpenMP混合并行編程驗證平臺[14]的搭建:

    首先,將Visual Studio 2010和MPI的實現(xiàn)軟件MPICH按照步驟安裝在計算機上,之后將VS 2010打開,新建一個C++的控制臺應(yīng)用程序,在項目解決方案資源管理器上選擇項目名稱,點擊右鍵,選擇“屬性”,再在屬性頁上左側(cè)選擇“配置屬性”---“VC++目錄”---“包含目錄”,將MPI的include和lib文件夾添加到“庫目錄”中;其次,展開左側(cè)的“C/C++”,選擇其中的預(yù)處理器,在右邊的預(yù)處理器定義中加入“MPICH_SKIP_MPICXX”,同時選擇代碼生成,將右側(cè)的運行庫改為“多線程調(diào)試Multithreaded Debug(/MTd)”;最后再展開左側(cè)的鏈接器,加入“mpi.lib”;這樣MPI的配置才算完成。接下來配置OpenMP,先在“配置屬性”---“C/C++”---“語言”,將右側(cè)的“OpenMP支持”設(shè)定為“是”;同時也可以設(shè)置系統(tǒng)環(huán)境變量,只需在環(huán)境變量中加入“OMP_NUM_THREADS”變量,數(shù)值可以根據(jù)自己CPU的性能來設(shè)置,本平臺設(shè)置為4。這樣就將MPI與OpenMP集成在VS 2010中,完成開發(fā)環(huán)境的設(shè)定。

    首先,將Visual Studio 2010和MPI的實現(xiàn)軟件MPICH安裝在計算機上,之后在VS 2010中新建一個C++的控制臺應(yīng)用程序,在項目解決方案資源管理器上進(jìn)行屬性配置。

    在驗證過程中,首先使用該軟件對幾種不同的算法,如LU分解算法、矩陣乘算法進(jìn)行轉(zhuǎn)換,并與手工編寫的代碼進(jìn)行比較,驗證目標(biāo)代碼功能的正確性。圖3顯示的是LU分解算法中的部分代碼L和U矩陣的生成轉(zhuǎn)換圖。

    通過比較不同階數(shù)下矩陣乘算法的加速比,可以得出其性能差異介于8.2%~18.4%。通過比較不同階數(shù)下矩陣乘算法的加速比,使用(手工編寫自動生成)/手工編寫的加速比計算方式,得出其性能差異為8.2%~18.4%。盡管在性能上不如手工編譯的代碼的運行效率,但該軟件可以基本實現(xiàn)算法的功能。

    5結(jié)語

    隨著數(shù)據(jù)量的不斷增長,自動并行化軟件的設(shè)計也將逐步地走向成熟。本文首先利用JavaCC和JJTree按照C語言的語法規(guī)則,生成了可以對串行C源代碼進(jìn)行分析的詞法和語法分析器;其次,按照程序結(jié)構(gòu)的分析,將其進(jìn)行了語句塊分區(qū);再次,經(jīng)過控制依賴性和數(shù)據(jù)依賴性分析,發(fā)現(xiàn)了源代碼中可并行化的部分,并保存到數(shù)組中;最后,按照并行代碼生成方法將其轉(zhuǎn)換為基于MPI+OpenMP的并行代碼。經(jīng)過實驗,可發(fā)現(xiàn)本系統(tǒng)可以對有關(guān)矩陣計算的程序進(jìn)行很好的分析和轉(zhuǎn)換,但還存在著許多的不足,如:自動生成代碼性能的差異;數(shù)組和指針的使用不完善等。在接下來的工作中,還需要進(jìn)一步完善對源程序中語句塊的精確劃分,加強數(shù)據(jù)依賴性的分析能力,從而可以更加準(zhǔn)確地實現(xiàn)源代碼的自動并行化,優(yōu)化程序的性能。

    參考文獻(xiàn):

    [1]

    王杰.基于多核機群環(huán)境的并行程序設(shè)計方法研究——MPI+OpenMP混合編程[D].鄭州:中原工學(xué)院,2012.(WANG J. The research on design method based on parallel program for windows environments [D]. Zhengzhou: Zhongyuan University of Technology, 2012.)

    [2]

    孫堯.基于SUIF平臺的程序自動并行化輔助系統(tǒng)研究[D].長春:吉林大學(xué),2014.(SUN Y. The research of program automatically parallel auxiliary system based on SUIF platform [D]. Changchun: Jilin University, 2014.)

    [3]

    張代遠(yuǎn).基于Clang的C語言代碼并行化轉(zhuǎn)換工具的設(shè)計與實現(xiàn)[D].長春:吉林大學(xué),2015.(ZHANG D Y. Design and implementation of a parallel conversion tool based on Clang for C code [D]. Changchun: Jilin University, 2015.)

    [4]

    DOS REIS A. Compiler Construction Using Java, JavaCC, and Yacc [M]. Hoboken, NJ: John Wiley and Sons, 2012: 367-417.

    [5]

    KLAWONN A, LANSER M, RHEINBACH O, et al. Hybrid MPI/OpenMP parallelization in FETIDP methods [M]. Berlin: Springer, 2015.

    KLAWONN A, LANSER M, RHEINBACH O, et al. Hybrid MPI/OpenMP parallelization in FETIDP methods [M]// MEHL M, BISCHOFF M, SCHFER M. Recent Trends in Computational Engineering—CE2014. Berlin: Springer, 2015: 67-84.

    KLAWONN A, LANSER M, RHEINBACH O, et al. Hybrid MPI/OpenMP parallelization in FETIDP methods [C]// Recent Trends in Computational Engineering—CE2014. Berlin: Springer, 2015: 67-84.

    [6]

    王磊.基于MPI的串行程序自動并行化的應(yīng)用研究[D].淮南:安徽理工大學(xué),2013.(WANG L. The application research of serial program automatic parallelization based on MPI [D]. Huainan: Anhui University of Science and Technology, 2013.)

    [7]

    DHEERAJ D, NITISH B, RAMESH S. Optimization of automatic conversion of serial C to parallel OpenMP [C]// Proceedings of the 2012 International Conference on CyberEnabled Distributed Computing and Knowledge Discovery. Washington, DC: IEEE Computer Society, 2012: 309-314.

    [8]

    黃松,黃玉,惠戰(zhàn)偉.基于JavaCC的抽象語法樹的構(gòu)建與實現(xiàn)[J].計算機工程與設(shè)計,2016,37(4):938-943.(HUANG S, HUANG Y, HUI Z W. Construction and realization of abstract syntax tree based on JavaCC [J]. Computer Engineering and Design, 2016, 37(4): 938-943.)

    [9]

    陳科.程序流程圖結(jié)構(gòu)分析與識別技術(shù)的研究與實現(xiàn)[D].西安:西安電子科技大學(xué),2011.(CHEN K. Research and implementation of structure analysis and identification for program flowchart [D]. Xian: Xidian University, 2011.)

    [10]

    閆昭,劉磊.基于數(shù)據(jù)依賴關(guān)系的程序自動并行化方法[J].吉林大學(xué)學(xué)報(理學(xué)版),2010,48(1):94-98.(YAN Z, LIU L. Method of program automatic parallelization based on data dependence [J]. Journal of Jilin University (Science Edition), 2010, 48(1): 94-98.)

    [11]

    TANG H, WANG X, ZHANG L, et al. Summarybased contextsensitive datadependence analysis in presence of callbacks [C]// POPL 15: Proceedings of the 42nd Annual ACM SIGPLANSIGACT Symposium on Principles of Programming Languages. New York: ACM, 2015: 83-95.

    TANG H, WANG X, ZHANG L, et al. Summarybased contextsensitive datadependence analysis in presence of callbacks [J]. ACM SIGPLAN Notices—POPL 15, 2015, 50(1): 83-95.

    [12]

    陶彬賢.CODEREBUILDER:一種自動化Java并發(fā)程序重構(gòu)工具的研究與實現(xiàn)[D].南京:南京航空航天大學(xué),2014.(TAO B X. CODEREBUILDER: the research and implementation of an automated Java concurrent program refactoring tool [D]. Nanjing: Nanjing University of Aeronautics and Astronautics, 2014.)

    猜你喜歡
    詞法依賴性語句
    詞法 名詞、代詞和冠詞
    重點:語句銜接
    非等熵 Chaplygin氣體極限黎曼解關(guān)于擾動的依賴性
    關(guān)于N—敏感依賴性的迭代特性
    商情(2017年38期)2017-11-28 14:08:59
    精彩語句
    應(yīng)用于詞法分析器的算法分析優(yōu)化
    N-月桂?;劝彼猁}性能的pH依賴性
    談對外漢語“詞法詞”教學(xué)
    舒適護(hù)理在面部激素依賴性皮炎中的應(yīng)用
    如何搞定語句銜接題
    語文知識(2014年4期)2014-02-28 21:59:52
    免费观看精品视频网站| av在线蜜桃| 别揉我奶头~嗯~啊~动态视频| 婷婷精品国产亚洲av在线| 国产精品国产高清国产av| 色视频www国产| 噜噜噜噜噜久久久久久91| 久久香蕉精品热| 欧美一级毛片孕妇| 亚洲av第一区精品v没综合| 在线免费观看的www视频| 国产主播在线观看一区二区| 2021天堂中文幕一二区在线观| 国产午夜精品久久久久久一区二区三区 | 99热这里只有是精品50| 日本 av在线| 欧美不卡视频在线免费观看| www国产在线视频色| av在线天堂中文字幕| 亚洲av成人不卡在线观看播放网| 高潮久久久久久久久久久不卡| 久久午夜亚洲精品久久| 国产高清视频在线观看网站| 国产主播在线观看一区二区| 亚洲美女视频黄频| 亚洲精品色激情综合| 欧美性猛交黑人性爽| 免费大片18禁| 18禁美女被吸乳视频| 久久久久久九九精品二区国产| 天堂影院成人在线观看| 久久天躁狠狠躁夜夜2o2o| 18禁黄网站禁片免费观看直播| 精品福利观看| 亚洲天堂国产精品一区在线| 亚洲最大成人手机在线| 在线免费观看的www视频| 亚洲av成人精品一区久久| 欧美另类亚洲清纯唯美| 亚洲国产精品久久男人天堂| 在线播放国产精品三级| 九色成人免费人妻av| 精品不卡国产一区二区三区| 人妻丰满熟妇av一区二区三区| 欧美成人一区二区免费高清观看| АⅤ资源中文在线天堂| 日韩人妻高清精品专区| 香蕉久久夜色| 99久国产av精品| 最近最新免费中文字幕在线| 中文字幕熟女人妻在线| 久久中文看片网| 久久久久国产精品人妻aⅴ院| 一本久久中文字幕| 深夜精品福利| 日本与韩国留学比较| 搞女人的毛片| 精品午夜福利视频在线观看一区| 色播亚洲综合网| 岛国视频午夜一区免费看| 每晚都被弄得嗷嗷叫到高潮| 丰满人妻熟妇乱又伦精品不卡| 男插女下体视频免费在线播放| 国产精品一及| 91字幕亚洲| 内射极品少妇av片p| 亚洲一区高清亚洲精品| 日韩欧美免费精品| 少妇丰满av| 久久国产精品影院| 热99re8久久精品国产| 国产精品女同一区二区软件 | 香蕉av资源在线| 日本黄色视频三级网站网址| 国产熟女xx| 中文在线观看免费www的网站| 国产成人av教育| 丝袜美腿在线中文| 国产成人福利小说| 最新中文字幕久久久久| 哪里可以看免费的av片| 听说在线观看完整版免费高清| 啪啪无遮挡十八禁网站| 成年人黄色毛片网站| 日本撒尿小便嘘嘘汇集6| 日本三级黄在线观看| 嫁个100分男人电影在线观看| 久久久久久国产a免费观看| 热99在线观看视频| 在线观看av片永久免费下载| 日本五十路高清| 精品国产三级普通话版| 成年女人永久免费观看视频| 丝袜美腿在线中文| 久久久国产成人精品二区| 人妻丰满熟妇av一区二区三区| 成人永久免费在线观看视频| 色哟哟哟哟哟哟| 国产蜜桃级精品一区二区三区| 午夜亚洲福利在线播放| 一级作爱视频免费观看| 丰满人妻熟妇乱又伦精品不卡| 久久久久免费精品人妻一区二区| 成年女人看的毛片在线观看| 精品人妻偷拍中文字幕| 午夜免费成人在线视频| 欧美激情久久久久久爽电影| 看片在线看免费视频| 欧洲精品卡2卡3卡4卡5卡区| 一级作爱视频免费观看| 中国美女看黄片| 中文字幕熟女人妻在线| 免费高清视频大片| 久久精品国产清高在天天线| 亚洲国产精品sss在线观看| 国内精品美女久久久久久| 两性午夜刺激爽爽歪歪视频在线观看| 国内精品久久久久精免费| 成人18禁在线播放| 久久精品国产99精品国产亚洲性色| 青草久久国产| 搡老妇女老女人老熟妇| 一个人免费在线观看电影| 美女黄网站色视频| eeuss影院久久| 午夜亚洲福利在线播放| 国产毛片a区久久久久| 99久久精品一区二区三区| 校园春色视频在线观看| 久久久色成人| 国产精品精品国产色婷婷| 色吧在线观看| 久久99热这里只有精品18| 午夜福利18| 亚洲成人免费电影在线观看| 国产熟女xx| 真人做人爱边吃奶动态| 日韩欧美国产在线观看| 欧美一级毛片孕妇| 99热这里只有是精品50| 脱女人内裤的视频| 久久伊人香网站| x7x7x7水蜜桃| 最近在线观看免费完整版| 色播亚洲综合网| 综合色av麻豆| 长腿黑丝高跟| 他把我摸到了高潮在线观看| 国产高清视频在线播放一区| 网址你懂的国产日韩在线| 一个人看的www免费观看视频| 国产高潮美女av| 久久久成人免费电影| 热99在线观看视频| 日本与韩国留学比较| 手机成人av网站| 午夜亚洲福利在线播放| 国产精品久久视频播放| 啪啪无遮挡十八禁网站| 又爽又黄无遮挡网站| av女优亚洲男人天堂| 日本a在线网址| 欧美性猛交黑人性爽| 一二三四社区在线视频社区8| 国产精品香港三级国产av潘金莲| 五月伊人婷婷丁香| 亚洲国产精品sss在线观看| 久久人人精品亚洲av| 91字幕亚洲| 91久久精品电影网| 国产乱人视频| 两个人的视频大全免费| 日本黄色视频三级网站网址| 亚洲精品一卡2卡三卡4卡5卡| 在线十欧美十亚洲十日本专区| 免费看光身美女| 好看av亚洲va欧美ⅴa在| 国产亚洲精品av在线| 国产熟女xx| 午夜免费男女啪啪视频观看 | 母亲3免费完整高清在线观看| 亚洲七黄色美女视频| 久久6这里有精品| 18禁裸乳无遮挡免费网站照片| 欧美成人一区二区免费高清观看| 成人午夜高清在线视频| 亚洲狠狠婷婷综合久久图片| 欧美黑人欧美精品刺激| 国产精品久久久久久精品电影| 日韩成人在线观看一区二区三区| 午夜福利18| 亚洲精品在线观看二区| 1000部很黄的大片| 日本黄大片高清| 亚洲电影在线观看av| 成年女人看的毛片在线观看| 国产免费一级a男人的天堂| 国产精品综合久久久久久久免费| 老熟妇仑乱视频hdxx| 亚洲精品在线观看二区| 亚洲美女黄片视频| 又粗又爽又猛毛片免费看| 国产爱豆传媒在线观看| 色哟哟哟哟哟哟| 12—13女人毛片做爰片一| 99视频精品全部免费 在线| 亚洲欧美日韩东京热| 两性午夜刺激爽爽歪歪视频在线观看| 又黄又粗又硬又大视频| 韩国av一区二区三区四区| 日日夜夜操网爽| 两个人看的免费小视频| 久久久精品大字幕| 精品久久久久久久人妻蜜臀av| 夜夜看夜夜爽夜夜摸| 国产欧美日韩精品一区二区| 精品一区二区三区av网在线观看| 精品午夜福利视频在线观看一区| 一级黄片播放器| 国产成人aa在线观看| 成人av在线播放网站| 欧美色视频一区免费| 亚洲五月婷婷丁香| 中国美女看黄片| 老鸭窝网址在线观看| 最近最新中文字幕大全免费视频| 日本免费a在线| 欧美zozozo另类| 中国美女看黄片| 亚洲av免费高清在线观看| 男人和女人高潮做爰伦理| 午夜精品久久久久久毛片777| 级片在线观看| 日日摸夜夜添夜夜添小说| 观看免费一级毛片| 精品一区二区三区av网在线观看| 黄色丝袜av网址大全| svipshipincom国产片| 国产在视频线在精品| 九色国产91popny在线| 国产aⅴ精品一区二区三区波| 欧美国产日韩亚洲一区| 欧美另类亚洲清纯唯美| 校园春色视频在线观看| 国产aⅴ精品一区二区三区波| 天堂av国产一区二区熟女人妻| 国产精品电影一区二区三区| 无限看片的www在线观看| 成人高潮视频无遮挡免费网站| 在线a可以看的网站| 成人特级黄色片久久久久久久| 在线观看免费视频日本深夜| 亚洲成人久久性| 国产野战对白在线观看| 黄色女人牲交| 国产三级黄色录像| 亚洲性夜色夜夜综合| 亚洲av第一区精品v没综合| 色播亚洲综合网| 久久久久九九精品影院| 高清毛片免费观看视频网站| 久久午夜亚洲精品久久| 无人区码免费观看不卡| 亚洲第一欧美日韩一区二区三区| 尤物成人国产欧美一区二区三区| 免费在线观看日本一区| 亚洲av中文字字幕乱码综合| 欧美乱色亚洲激情| 白带黄色成豆腐渣| 日本黄色视频三级网站网址| 日本免费一区二区三区高清不卡| 人人妻,人人澡人人爽秒播| 搡老岳熟女国产| 日本精品一区二区三区蜜桃| 色播亚洲综合网| 99精品久久久久人妻精品| 午夜福利成人在线免费观看| 国内精品久久久久精免费| 欧美日韩国产亚洲二区| 九九在线视频观看精品| 日韩精品青青久久久久久| 欧美午夜高清在线| 嫩草影院精品99| 国产精品 国内视频| 中文字幕精品亚洲无线码一区| 成人亚洲精品av一区二区| 国产欧美日韩精品一区二区| av天堂中文字幕网| 国产精品久久久久久亚洲av鲁大| 国产精品av视频在线免费观看| 女生性感内裤真人,穿戴方法视频| 夜夜爽天天搞| 免费在线观看亚洲国产| 日本一本二区三区精品| 成人高潮视频无遮挡免费网站| 身体一侧抽搐| 男女下面进入的视频免费午夜| 一个人免费在线观看的高清视频| 日韩高清综合在线| 亚洲第一欧美日韩一区二区三区| 看免费av毛片| 色老头精品视频在线观看| 亚洲一区二区三区色噜噜| 一区福利在线观看| 舔av片在线| 久久性视频一级片| 99久国产av精品| 看黄色毛片网站| 精品一区二区三区视频在线观看免费| 丁香欧美五月| 琪琪午夜伦伦电影理论片6080| 免费观看的影片在线观看| 精品日产1卡2卡| 午夜免费男女啪啪视频观看 | 国产av麻豆久久久久久久| 日本成人三级电影网站| 精品久久久久久,| 亚洲av成人av| 18禁裸乳无遮挡免费网站照片| 亚洲第一欧美日韩一区二区三区| a级一级毛片免费在线观看| 女同久久另类99精品国产91| 日韩高清综合在线| 美女高潮的动态| 精品久久久久久久久久免费视频| 少妇高潮的动态图| 婷婷精品国产亚洲av在线| 亚洲精品色激情综合| 天天躁日日操中文字幕| 日本撒尿小便嘘嘘汇集6| 脱女人内裤的视频| 在线a可以看的网站| 国产真人三级小视频在线观看| 久久久国产精品麻豆| 久久性视频一级片| 国产久久久一区二区三区| 熟妇人妻久久中文字幕3abv| 欧美+亚洲+日韩+国产| 国产精品久久久久久精品电影| 天美传媒精品一区二区| 美女 人体艺术 gogo| 观看免费一级毛片| 免费在线观看影片大全网站| or卡值多少钱| 午夜激情福利司机影院| 午夜精品一区二区三区免费看| 国产精品亚洲一级av第二区| 国产不卡一卡二| 99国产综合亚洲精品| 女警被强在线播放| 99热精品在线国产| 人妻夜夜爽99麻豆av| 欧美午夜高清在线| 久久天躁狠狠躁夜夜2o2o| 人妻久久中文字幕网| 亚洲一区二区三区不卡视频| 日韩免费av在线播放| 国产91精品成人一区二区三区| 日韩av在线大香蕉| www国产在线视频色| 中文资源天堂在线| 老熟妇仑乱视频hdxx| 亚洲熟妇中文字幕五十中出| 真人一进一出gif抽搐免费| 国产综合懂色| 全区人妻精品视频| 久久99热这里只有精品18| 欧美zozozo另类| 老司机福利观看| 国产毛片a区久久久久| 99国产极品粉嫩在线观看| АⅤ资源中文在线天堂| 好男人在线观看高清免费视频| 高清毛片免费观看视频网站| 亚洲欧美日韩高清专用| 级片在线观看| 黄色成人免费大全| 97人妻精品一区二区三区麻豆| 丰满乱子伦码专区| 日韩亚洲欧美综合| 久久国产精品人妻蜜桃| 黄色日韩在线| 国产伦精品一区二区三区视频9 | 欧美性感艳星| 精品无人区乱码1区二区| 久久久久久久久中文| 欧美+亚洲+日韩+国产| 国产一区二区激情短视频| 毛片女人毛片| 国产又黄又爽又无遮挡在线| 亚洲中文字幕日韩| 欧美午夜高清在线| 亚洲精华国产精华精| 国产精品久久电影中文字幕| 在线观看舔阴道视频| 精品电影一区二区在线| 琪琪午夜伦伦电影理论片6080| 毛片女人毛片| 在线播放国产精品三级| 91麻豆av在线| 国产精华一区二区三区| 动漫黄色视频在线观看| 在线观看免费午夜福利视频| 黄色成人免费大全| 欧美在线黄色| 搡老妇女老女人老熟妇| 国产v大片淫在线免费观看| 少妇熟女aⅴ在线视频| 啦啦啦免费观看视频1| 99riav亚洲国产免费| 搞女人的毛片| 国产精品三级大全| 精品99又大又爽又粗少妇毛片 | 国产成人啪精品午夜网站| 免费看a级黄色片| 在线观看免费午夜福利视频| 在线十欧美十亚洲十日本专区| 国产久久久一区二区三区| 日本与韩国留学比较| 精品一区二区三区视频在线 | 美女免费视频网站| 国产真实乱freesex| 久久久久免费精品人妻一区二区| 免费高清视频大片| 色av中文字幕| 久久欧美精品欧美久久欧美| 尤物成人国产欧美一区二区三区| 午夜激情欧美在线| 无人区码免费观看不卡| 亚洲不卡免费看| 又紧又爽又黄一区二区| 国产伦精品一区二区三区视频9 | 久久久精品欧美日韩精品| 老司机午夜十八禁免费视频| 在线播放无遮挡| 日韩欧美精品v在线| 亚洲aⅴ乱码一区二区在线播放| 精品99又大又爽又粗少妇毛片 | 有码 亚洲区| x7x7x7水蜜桃| 99国产精品一区二区三区| 日本 av在线| 午夜老司机福利剧场| 国产精品永久免费网站| 成年女人看的毛片在线观看| 欧美黄色片欧美黄色片| 女警被强在线播放| 一个人看视频在线观看www免费 | 国产精品美女特级片免费视频播放器| 色综合婷婷激情| 亚洲自拍偷在线| 久久6这里有精品| 天堂影院成人在线观看| av在线蜜桃| 深爱激情五月婷婷| 老司机午夜福利在线观看视频| 亚洲成人免费电影在线观看| 床上黄色一级片| 国产日本99.免费观看| 激情在线观看视频在线高清| 草草在线视频免费看| 美女黄网站色视频| 国内精品久久久久久久电影| 中文亚洲av片在线观看爽| 19禁男女啪啪无遮挡网站| 免费看日本二区| 久久精品人妻少妇| 成年人黄色毛片网站| 亚洲av五月六月丁香网| 嫩草影院精品99| 国产在视频线在精品| 国产野战对白在线观看| 婷婷六月久久综合丁香| 男插女下体视频免费在线播放| 国产色婷婷99| av中文乱码字幕在线| 99久久无色码亚洲精品果冻| 99热这里只有是精品50| av中文乱码字幕在线| 日本 欧美在线| 99热精品在线国产| 色在线成人网| 一本久久中文字幕| 免费av观看视频| 国产主播在线观看一区二区| 精品熟女少妇八av免费久了| 亚洲欧美日韩东京热| 91麻豆精品激情在线观看国产| 在线免费观看不下载黄p国产 | 他把我摸到了高潮在线观看| 欧美日韩福利视频一区二区| 757午夜福利合集在线观看| 久久久精品欧美日韩精品| 精品国内亚洲2022精品成人| 一a级毛片在线观看| 三级毛片av免费| 国产精品1区2区在线观看.| 老汉色av国产亚洲站长工具| 久久久国产成人精品二区| 在线天堂最新版资源| 综合色av麻豆| 欧美另类亚洲清纯唯美| 日韩欧美 国产精品| 免费人成视频x8x8入口观看| 看片在线看免费视频| 少妇丰满av| 国产精品嫩草影院av在线观看 | 全区人妻精品视频| 在线观看美女被高潮喷水网站 | 国内毛片毛片毛片毛片毛片| 国产高清videossex| 婷婷精品国产亚洲av在线| 色精品久久人妻99蜜桃| 免费av观看视频| 亚洲激情在线av| 狂野欧美激情性xxxx| 国产精品综合久久久久久久免费| 亚洲黑人精品在线| 欧美高清成人免费视频www| 久久久久久久久大av| 国产欧美日韩一区二区精品| 韩国av一区二区三区四区| 中文字幕人妻丝袜一区二区| 亚洲av电影不卡..在线观看| 日韩免费av在线播放| 欧美xxxx黑人xx丫x性爽| 成人精品一区二区免费| 丰满的人妻完整版| 亚洲人成伊人成综合网2020| 亚洲 欧美 日韩 在线 免费| 91在线精品国自产拍蜜月 | 国内揄拍国产精品人妻在线| 亚洲人与动物交配视频| 九九在线视频观看精品| 天天添夜夜摸| 啦啦啦观看免费观看视频高清| 热99在线观看视频| 首页视频小说图片口味搜索| 我的老师免费观看完整版| 啪啪无遮挡十八禁网站| 亚洲国产日韩欧美精品在线观看 | 免费看日本二区| 国产乱人视频| 久久午夜亚洲精品久久| www日本在线高清视频| 久久久久久国产a免费观看| 欧洲精品卡2卡3卡4卡5卡区| 日韩欧美国产一区二区入口| 国产精华一区二区三区| 成年版毛片免费区| 90打野战视频偷拍视频| 国产综合懂色| 国产真人三级小视频在线观看| 一级作爱视频免费观看| 日本熟妇午夜| 久久精品综合一区二区三区| 国产色爽女视频免费观看| 亚洲精品成人久久久久久| 国内精品久久久久久久电影| 日韩中文字幕欧美一区二区| 天美传媒精品一区二区| 看片在线看免费视频| 99久久精品热视频| 亚洲精品456在线播放app | 免费看美女性在线毛片视频| 亚洲在线自拍视频| www日本黄色视频网| 桃色一区二区三区在线观看| 99视频精品全部免费 在线| 十八禁网站免费在线| 99热这里只有精品一区| 少妇人妻一区二区三区视频| 欧美日韩一级在线毛片| 在线观看免费视频日本深夜| 夜夜爽天天搞| 久久久久国产精品人妻aⅴ院| 噜噜噜噜噜久久久久久91| 国产av麻豆久久久久久久| 亚洲av美国av| 国产精品 欧美亚洲| 亚洲精品日韩av片在线观看 | 国产激情欧美一区二区| 日本精品一区二区三区蜜桃| 中文在线观看免费www的网站| 丰满的人妻完整版| 亚洲第一电影网av| 久久这里只有精品中国| 欧美成人免费av一区二区三区| 91av网一区二区| 欧美色欧美亚洲另类二区| 午夜福利在线在线| 国产成人av教育| 亚洲专区中文字幕在线| 在线观看免费午夜福利视频| 久久久久久九九精品二区国产| 欧美色视频一区免费| 精品一区二区三区视频在线观看免费| 国产亚洲av嫩草精品影院| 动漫黄色视频在线观看| 午夜福利视频1000在线观看| 欧美三级亚洲精品| 嫁个100分男人电影在线观看| 在线a可以看的网站| 免费看十八禁软件| 小说图片视频综合网站| 亚洲五月婷婷丁香| 亚洲电影在线观看av| 午夜福利视频1000在线观看| 国产午夜福利久久久久久| 亚洲最大成人手机在线| 一进一出抽搐gif免费好疼| 亚洲人成电影免费在线| 国内少妇人妻偷人精品xxx网站| 别揉我奶头~嗯~啊~动态视频| 人妻夜夜爽99麻豆av|