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

    陣列眾核處理器上的高效歸并排序算法

    2016-07-31 23:32:23李宏亮
    計算機研究與發(fā)展 2016年2期

    石 嵩 李宏亮 朱 巍

    (江南計算技術(shù)研究所 江蘇無錫 214083)(shisong1990@163.com)

    陣列眾核處理器上的高效歸并排序算法

    石 嵩 李宏亮 朱 巍

    (江南計算技術(shù)研究所 江蘇無錫 214083)
    (shisong1990@163.com)

    排序是計算機科學中最基本的問題之一,隨著眾核處理器結(jié)構(gòu)的不斷發(fā)展,設計眾核結(jié)構(gòu)上的高效排序算法具有重要意義.眾核處理器的一個重要方向是陣列眾核處理器,根據(jù)陣列眾核處理器的結(jié)構(gòu)特點,提出了2種面向陣列眾核結(jié)構(gòu)的高效歸并排序算法,通過利用DMA(direct memory access)多緩沖機制提高訪存效率、深度平衡歸并策略保持眾多核心之間的負載均衡、SIMD(single instruction multiple data)歸并方法提高歸并計算效率以及片上交換歸并策略提高片上數(shù)據(jù)重用率,大幅度提高了陣列眾核處理器的排序性能.在異構(gòu)融合陣列眾核處理器DFMC(deeply-fused many-core)原型系統(tǒng)的實驗結(jié)果表明,算法排序速度達647MKeys?s(million keys per second),其排序效率(排序速度?峰值性能)是NVIDIA GPU上最快的歸并排序算法(GTX580平臺)的3.3倍,是Intel Xeon Phi上最快的歸并排序算法的2.7倍.最后,建立了陣列眾核處理器上歸并排序算法的性能分析模型,利用該模型分析了主要結(jié)構(gòu)參數(shù)與算法性能的關(guān)系,對陣列眾核處理器的研究有一定的指導意義.

    排序是計算機科學及算法研究中最基本、最重要的研究問題之一[1],是數(shù)據(jù)庫、圖運算、科學計算以及大數(shù)據(jù)等諸多重要應用的基礎(chǔ),排序效率對這些應用程序的性能有重要的影響,在不同計算平臺和環(huán)境上不斷提高排序的性能,具有重要的現(xiàn)實意義.

    近年來,眾核處理器在學術(shù)界和工業(yè)界得到了廣泛關(guān)注和蓬勃發(fā)展,已在多個領(lǐng)域得到了廣泛應用.當前主要的眾核處理器和眾核結(jié)構(gòu)包括NVIDIA的GPU系列、AMD的GPU?APU系列、Intel的MIC(many integrated core)和SCC(single-chip cloud computer)構(gòu)架,以及Tilera[2],PACS-G[3],epiphany[4],MPPA[5],Godson-T[6],DFMC[7]等.其中Tilera,PACS-G,epiphany,MPPA,Godson-T,DFMC等屬于陣列眾核處理器,它們的共同特點是以陣列方式組織眾多計算核心,具有可擴展性好、實現(xiàn)代價低的優(yōu)點,是眾核處理器發(fā)展的重要方向.

    隨著這些新型眾核處理器的不斷涌現(xiàn),需要重新設計適應特定體系結(jié)構(gòu)的排序算法,才能最大限度地發(fā)揮出處理器的運算潛力.國內(nèi)外學者在GPU和Intel Xeon Phi(屬于MIC結(jié)構(gòu))上開展了大量研究工作,并取得了很好的效果[8-11],但陣列眾核結(jié)構(gòu)上排序算法的研究尚較少.

    盡管陣列眾核處理器提供了強大的計算能力,但是要發(fā)揮好性能需要用戶利用更多的底層硬件特征.針對排序算法,需要解決3個關(guān)鍵的問題:1)訪存問題,陣列眾核中核心數(shù)目多,單個核心所能分得的帶寬資源少,導致存儲墻問題嚴重;2)眾多核心之間的負載均衡問題;3)開發(fā)SIMD級并行性的問題,雖然陣列眾核的計算核心通常提供SIMD指令以增加并行性,但是以SIMD方式實現(xiàn)排序并不容易.

    本文首先建立了陣列眾核處理器結(jié)構(gòu)的共性抽象模型,然后設計了面向陣列眾核結(jié)構(gòu)的高效歸并排序算法.算法通過利用DMA多緩沖機制提高訪存效率、深度平衡歸并策略保持核心間的負載均衡、SIMD歸并方法開發(fā)SIMD并行性以及片上交換歸并策略重用片上數(shù)據(jù),有效提升了排序性能.算法在DFMC原型系統(tǒng)上的實驗結(jié)果優(yōu)于NVIDIA眾核以及Intel Xeon Phi眾核上的基于比較的排序算法.最后,本文建立了算法性能分析模型,并用該模型討論和分析了陣列眾核結(jié)構(gòu)與算法性能的關(guān)系,為陣列眾核結(jié)構(gòu)的研究提供了參考.

    1 相關(guān)工作

    排序問題由來已久,經(jīng)過半個多世紀的發(fā)展,串行排序算法的研究已經(jīng)非常成熟且許多算法如快速排序、基數(shù)排序等已接近理論最優(yōu).近些年來,研究人員主要將精力集中在結(jié)構(gòu)相關(guān)特別是新型體系結(jié)構(gòu)如GPU和MIC等眾核結(jié)構(gòu)上的排序算法的優(yōu)化上,取得了許多進展.這些排序算法主要分為2類:基數(shù)排序和基于比較的排序.

    基數(shù)排序是最為高效的排序之一,對于d位的鍵值,其時間復雜度是O(dN),文獻[8,12-14]分別提出和實現(xiàn)了GPU上的基數(shù)排序算法,其中Merrill等人[8]的基數(shù)排序被集成到了Thrust庫中,是當前最快的基數(shù)排序算法.Satish等人[10]實現(xiàn)了MIC結(jié)構(gòu)上的基數(shù)排序算法,有很好的性能.然而,基數(shù)排序的時間開銷隨著鍵值長度的增加而增長,而且,基數(shù)排序不是基于比較的排序,通用性不足.

    基于比較的排序是一類通用的排序方法,包括雙調(diào)排序、快速排序、采樣排序(sample sort)和歸并排序等,其時間復雜度的下界是O(Nlog N).

    雙調(diào)排序是由Batcher[15]于20世紀60年代提出的一種排序網(wǎng)絡算法,采用分治法歸并序列,時間復雜度是O(Nlog2N),雖然不是漸進最優(yōu),但是由于其并行性好,且具有訪存連續(xù)、對界的優(yōu)點,所以在GPU上有很好的運用.文獻[16-17]在GPU上實現(xiàn)了雙調(diào)排序,Greb等人[18]設計實現(xiàn)了GPU上自適應雙調(diào)排序(adaptive bitonic sort)算法,將時間復雜度從O(Nlog2N)降低到O(Nlog N).雙調(diào)排序較高的時間復雜度限制了其在數(shù)據(jù)量很大的排序中的應用.

    Sengupta等人[12]首先實現(xiàn)了GPU上的快速排序算法,隨后Cederman等人[19-20]進一步做了改進.采樣排序是快速排序的一種推廣,它一次將輸入劃分成多個部分而非快速排序中的2部分,然后獨立地排序各個部分.Leischner等人[21]在GPU上實現(xiàn)了采樣排序.盡管快速排序的時間復雜度是O(Nlog N),但是其并行程序?qū)崿F(xiàn)復雜,且性能表現(xiàn)不突出.

    歸并排序的時間復雜度是O(Nlog N),由于并行性好且時間復雜度低,是GPU上廣泛使用的排序算法之一[9,14,22-23],這些工作主要針對GPU的結(jié)構(gòu)特點在訪存、同步、通信上對算法做優(yōu)化,使歸并排序算法更適合GPU結(jié)構(gòu).其中Davidson等人[9]的歸并排序是當前GPU上最快的歸并排序算法.Tian等人[11]設計了Intel Xeon Phi眾核上的歸并排序算法,是目前最快的歸并排序算法.

    由于基數(shù)排序的通用性不夠,而基于比較的其他算法如雙調(diào)排序、快速排序等具有時間復雜度高或者并行化困難且并行程序效率不高的缺點,所以本文選取歸并排序進行研究.

    2 陣列眾核處理器結(jié)構(gòu)

    陣列眾核結(jié)構(gòu)最主要的特征是多個計算核心以陣列方式(mesh)組織,可以分為同構(gòu)陣列眾核和異構(gòu)陣列眾核2類,其中同構(gòu)陣列眾核全部由計算核心陣列構(gòu)成,異構(gòu)陣列眾核在計算核心陣列外還有額外的管理核心,后者可視為前者的一般化情形,本文抽象的陣列眾核結(jié)構(gòu)采用后者,但是所設計的算法對于2種結(jié)構(gòu)均適用.

    陣列眾核處理器的整體結(jié)構(gòu)如圖1所示,包括管理核心MPE(management processing element)、計算核心陣列CPA(computing processing array)、存控和系統(tǒng)接口,通過片上網(wǎng)絡NoC互連.

    Fig.1 The array-based manycore architecture.圖1 陣列眾核結(jié)構(gòu)

    其中MPE是功能完整的通用核心,負責提供一些標準服務如IO代理和消息代理等,也適合運行程序的串行部分.CPA由若干計算核心CPE(computing processing elements)以陣列方式組織構(gòu)成,陣列內(nèi)的CPE可通過高速的顯式或者隱式的片上通信(如消息)交換數(shù)據(jù).CPE是功能簡單的運算核心,支持SIMD指令以開發(fā)細粒度的并行性、提高峰值性能,用以加速大規(guī)模的并行任務.

    陣列眾核處理器中CPA的數(shù)據(jù)存儲構(gòu)架如圖2所示.CPE內(nèi)具有片上存儲器SPM(scratched pad memory),或CPA中共享片上存儲器(本文敘述采用前者).SPM可配置為數(shù)據(jù)Cache結(jié)構(gòu),也可配置為由軟件顯式管理的局部存儲器,配置為Cache結(jié)構(gòu)可以減輕軟件編程的負擔,但是由于需要保持眾多核心之間的Cache一致性,效率比作為局部存儲器低.本文將SPM視為局部存儲器,SPM與主存之間通過軟件顯式管理的DMA傳輸數(shù)據(jù).

    Fig.2 The data memory hierarchy of CPA.圖2 CPA的數(shù)據(jù)存儲構(gòu)架

    從陣列眾核結(jié)構(gòu)可以看出,陣列眾核提供了2種粒度的并行性,核心或陣列之間的粗粒度線程級并行性SPMD(single program,multiple data)和核心內(nèi)的細粒度并行性SIMD,因此設計陣列眾核上的并行算法要充分利用這2種并行性才能充分發(fā)揮處理器的性能.另外,陣列眾核結(jié)構(gòu)提供的陣列內(nèi)高速片上通信使算法可以通過交換核心間的數(shù)據(jù)而減少訪存操作.

    3 陣列眾核處理器上的歸并排序算法

    歸并是指將2個有序序列合并成1個新的有序序列.歸并排序是基于歸并操作的排序,它采用分治的策略先將待排序序列分成若干小的子序列,將各個子序列排序后,利用歸并操作將各子序列逐步歸并成有序序列.對于長度為N的序列,串行算法的時間復雜度是O(Nlog N),空間復雜度是O(N).

    3.1 基本的并行歸并排序算法

    歸并排序是一種自底向上的分治算法,并行歸并排序算法將數(shù)據(jù)劃分到各個CPE,各CPE用串行歸并排序算法對自己所持數(shù)據(jù)進行排序后,相互協(xié)作將各有序子序列歸并成整體有序的序列.基本并行歸并排序的流程如下:

    步驟1.將N個數(shù)據(jù)均勻劃分到C個陣列;

    步驟2.各陣列將數(shù)據(jù)均勻劃分給陣列內(nèi)的P個核心;

    步驟3.各核心使用歸并排序完成N?(C×P)個數(shù)據(jù)的排序;

    步驟4.陣列內(nèi)將各個有序子序列歸并成1個有序序列;

    步驟5.C個陣列協(xié)作將C個有序子序列歸并成有序序列.

    根據(jù)該流程本節(jié)首先實現(xiàn)一種基本的并行歸并排序算法作為參照,該算法不使用SIMD與片上通信,沒有顯式管理訪存,CPE內(nèi)的排序使用一般的串行歸并排序算法,CPE間的歸并過程如算法1所示:

    算法1.核間基本歸并算法.

    基本并行歸并排序算法的優(yōu)點是實現(xiàn)簡單,但是該算法沒有考慮陣列眾核的結(jié)構(gòu)特點,存在以下3個問題:1)沒有使用SPM導致訪存延遲大且存儲帶寬效率低;2)雖然使用了SPMD,但是各核心間存在負載不均衡,分析算法1可知,隨著歸并級數(shù)遞增1級,參加歸并的CPE的數(shù)目減半;3)沒有使用處理器提供的SIMD和片上通信對算法進行加速.

    根據(jù)陣列眾核的結(jié)構(gòu)特點,本節(jié)接下來從不同層面解決和優(yōu)化了這些問題和算法,在訪存管理上設計了DMA多緩沖機制提高訪存效率,在線程級并行層次設計了深度平衡歸并策略保持核心間的負載均衡,在SIMD層次設計了SIMD歸并方法提高歸并計算速度,以及利用片上通信提高片上數(shù)據(jù)重用率,獲得了很好的性能提升,最終實現(xiàn)了2種優(yōu)化的歸并排序算法CPEB-MS(CPE-based merge sort)和CPAB-MS(CPA-based merge sort).其中CPEB-MS以CPE為單元,即各CPE先將自己所持數(shù)據(jù)排序,然后各CPE之間進行歸并.CPAB-MS則以CPA為單元,即CPA作為一個整體將自己所持數(shù)據(jù)排序,然后CPA間進行歸并.

    3.2 CPEB-MS算法

    CPEB-MS的整體流程與基本算法相似,先將數(shù)據(jù)分配給各CPE,CPE先用歸并排序?qū)⑺謹?shù)據(jù)排序,然后CPE間協(xié)作完成歸并.該算法從3個層面——訪存管理、線程級并行和SIMD——進行了優(yōu)化.

    3.2.1 訪存管理——DMA多緩沖機制

    基本歸并排序算法的訪存問題主要是由于CPE直接讀寫主存(使用LD?ST指令),一方面小數(shù)據(jù)量的訪存操作造成存儲帶寬的利用率低,另一方面計算過程和訪存過程不能實現(xiàn)并發(fā)執(zhí)行,從而算法整體性能差.

    DMA多緩沖機制在SPM中開辟2個讀緩沖bufA,bufB和1個寫緩沖bufC,每個緩沖分為2份,構(gòu)成雙緩沖.以bufA為例,分為bufA0和bufA1,初始時使用DMA將數(shù)據(jù)裝填到bufA0中,之后CPE使用bufA0中的數(shù)據(jù)進行計算,同時利用DMA將數(shù)據(jù)裝填到bufA1中;當CPE計算完bufA0的數(shù)據(jù)后等待bufA1的裝填結(jié)果,若已裝填好,則CPE使用bufA1中的數(shù)據(jù)同時裝填bufA0,持續(xù)這個過程直到完成所有數(shù)據(jù)的歸并.

    DMA多緩沖的運用一方面使得主存的訪問次數(shù)大為減少,提高了存儲帶寬的實際效率,CPE的數(shù)據(jù)訪問延遲大為減小;另一方面,多緩沖使得歸并的訪存時間和計算時間重疊,最大限度掩蓋了訪存延遲.

    3.2.2 核心負載均衡——深度平衡歸并策略

    使用多線程主要需要考慮的2個問題是負載均衡和通信,歸并算法需要的核間通信很少,因此主要要解決負載均衡的問題.基本歸并排序算法中的核間歸并過程會造成CPE間負載不均衡的問題,即在步驟3中,歸并級數(shù)每增加1級,參與歸并的CPE就減少一半(如圖3(a)所示).針對這一問題,設計了一種基于采樣劃分的深度平衡歸并策略,保證在歸并過程中,所有CPE都始終參與歸并.

    采樣劃分通過采樣的方法將2個有序序列A和B各劃分成p個不相交的塊A0,A1,…,Ap-1和B0,B1,…,Bp-1,當i≠j時,Ai和Bj不相交.其中劃分元的選取過程如算法2所示,根據(jù)p-1個劃分元,分別將A和B劃分成p塊(長度可能為0),下標相同的塊屬于同一組,完成劃分.

    Fig.3 The basic merging processing and the deeplybalanced merging processing(different textures are merging by different CPE).圖3 基本歸并與深度平衡歸并示意圖

    算法2.采樣選取劃分元算法.

    可以證明采樣劃分后各個組的數(shù)據(jù)量是均勻分布(除第1組和最后1組有偏斜).深度平衡歸并策略如圖3(b)所示,在第k級(最底層為第0級),用采樣劃分將2個子序列劃分成2k組,分別分給2k個CPE,然后各CPE對分給自己的數(shù)據(jù)進行歸并.從圖3(b)可以看出,每一級歸并的CPE數(shù)目不變且各CPE的任務量相當,保持了負載均衡.

    3.2.3 使用SIMD——SIMD并行歸并方法

    傳統(tǒng)歸并過程中的循環(huán)體1次寫回1個數(shù)據(jù),SIMD并行歸并的目標是1次寫回K(SIMD寬度)個數(shù)據(jù),從而減少每個數(shù)據(jù)的時間攤銷.

    20世紀60年代,Batcher等人[15]提出了基于Batcher比較器的歸并網(wǎng)絡,如奇偶歸并網(wǎng)絡、雙調(diào)歸并網(wǎng)絡,可在O(log N)的時間內(nèi)完成歸并.圖4顯示了一個長度為8的雙調(diào)歸并網(wǎng)絡,垂直線表示比較器,上(下)端輸出較小(大)值,網(wǎng)絡通過lb(8)=3級比較操作,可以將2個長度為4的有序序列A[0,1,2,3]和B[0,1,2,3]歸并成1個有序序列.

    Fig.4 Bitonic merge network.圖4 雙調(diào)歸并網(wǎng)絡

    利用歸并網(wǎng)絡,可以實現(xiàn)1次輸出多個數(shù)據(jù)的目標,長度為2 K的雙調(diào)歸并網(wǎng)絡,每次可輸出K個結(jié)果(較小的K個數(shù)據(jù)),另外的K個數(shù)據(jù)則繼續(xù)和接下來讀入的K個數(shù)據(jù)進行歸并,重復該過程直到歸并完所有數(shù)據(jù).歸并網(wǎng)絡可映射成SIMD指令實現(xiàn),如圖4中,A和B分別放置在2個向量寄存器中,則每一級的4個比較器可以用CPE中SIMD指令集中的1條vmax(取較大值)指令和1條vmin(取較小值)指令實現(xiàn),而在1次比較之后,2個寄存器的值可通過混洗指令vshuffle混洗,以滿足下一級比較的輸入位置要求.

    為了運用SIMD歸并網(wǎng)絡,需要先將輸入序列排成長K有序的子序列.該過程可通過基于排序網(wǎng)絡和混洗操作的寄存器排序完成,如圖5所示,將K2個元素放置在K個寄存器中,首先用長度為K的奇偶歸并排序網(wǎng)絡將它們(如A[0,1,2,3])排序成K個長K有序的序列(如a0,a1,a2,a3),如圖5(a)所示,然后通過Klb(K)次vshuffle操作將各有序序列混洗到單個寄存器中(圖5(b)).

    Fig.5 In-register sort with SIMD.圖5 SIMD寄存器排序

    3.2.4 CPEB-MS算法流程

    結(jié)合上述3.2.1~3.2.3小節(jié)的內(nèi)容,總結(jié)出CPEB-MS算法整體流程如下:

    步驟1.將N個數(shù)據(jù)均勻劃分給各CPE(C個CPA,每個CPA中P個CPE,共C×P個CPE),每個核心有N?(C×P)個數(shù)據(jù);

    步驟2.各CPE使用步驟2.1~2.2完成N?(C×P)個數(shù)據(jù)的排序:

    2.1)將所持數(shù)據(jù)分為N?(C×P)?M個組,每組M個數(shù)據(jù)(可以存放于SPM緩沖中),使用步驟2.1.1~2.1.2對每一組進行排序:

    2.1.1)用寄存器排序?qū)⑿蛄信判虺砷LK(SIMD寬度)有序的序列;

    2.1.2)使用lb(M?K)次SIMD歸并,逐步將長K有序的子序列歸并成1條有序序列;

    2.2)各CPE使用lb(N?(C×P)?M)次SIMD歸并將自己所有的長為M的有序子序列歸并成1個有序序列(讀寫數(shù)據(jù)使用DMA多緩沖技術(shù));

    步驟3.CPA內(nèi)各CPE利用lb(P)次深度平衡歸并策略將P個有序子序列歸并成1個有序序列(讀寫數(shù)據(jù)使用DMA多緩沖技術(shù));

    步驟4.C個CPA繼續(xù)應用lb(C)次深度平衡歸并策略將C個有序子序列歸并成整體有序序列(讀寫數(shù)據(jù)使用DMA多緩沖技術(shù)).

    3.3 CPAB-MS算法

    CPEB-MS中各CPE首先將所持數(shù)據(jù)排序成有序序列然后CPE間進行歸并的流程沒能利用陣列眾核結(jié)構(gòu)提供的片上通信支持來減少訪存次數(shù).因此本文繼續(xù)設計了CPAB-MS算法,它將CPA視為一個整體,算法將數(shù)據(jù)分給各CPA,各CPA先將所持數(shù)據(jù)排序,然后CPA之間進行歸并.

    3.3.1 使用片上通信——片上交換歸并策略

    在CPEB-MS算法流程中的步驟2.1中,各CPE排序M個元素后即將其寫回主存,接著處理后M個元素.與此不同,片上交換歸并的策略是,各CPE排序完M個元素后不直接寫回主存,而是由陣列選出P-1個劃分元,各CPE根據(jù)劃分元劃分所持的M個元素,將各分塊發(fā)送到其他對應的CPE(數(shù)據(jù)交換),數(shù)據(jù)交換后,歸并所接收的各分塊,然后CPA內(nèi)利用前綴和計算出各CPE所持數(shù)據(jù)的偏移位置,將其寫回主存,得到長為P×M的有序序列.

    其中,劃分元的選取和深度平衡歸并中的方法類似,不同的是,這里為了降低空間復雜度采用2級采樣劃分策略:行劃分和列劃分.首先是行劃分,每個CPE選取P-1個代表元發(fā)送到本行第1列的核心Px0(x=0,1,…,P-1),Px0對這些數(shù)據(jù)進行排序后選取P-1個代表元發(fā)送給P00,P00對其排序后選出P-1個劃分元廣播給所有CPE,完成劃分元的選?。c直接采樣劃分策略相比,這里的2級劃分策略的空間復雜度從P2降低到了P3?2.

    數(shù)據(jù)交換過程是一個全局通信操作,由于各CPE待交換的數(shù)據(jù)長度可能不一致,通信過程非常復雜.為了解決該問題,本文設計了基于握手的點對點通信策略來完成全局通信:共P-1次點對點通信,每次通信在數(shù)據(jù)傳輸之前源節(jié)點先將子序列長度發(fā)送給目的節(jié)點(握手).第i 槡P+j次通信中(如圖6所示),節(jié)點Pm,n發(fā)送第(mi)槡P+(nj)塊數(shù)據(jù)Ami,nj①給Pmi,nj,而從Pmi,nj那里接收數(shù)據(jù),如果這2個節(jié)點不同行且不同列,則Pm,n與Pmi,nj(Pmi,nj)之間的通信需要1個轉(zhuǎn)發(fā)節(jié)點Pmi,n(Pm,nj)轉(zhuǎn)發(fā),源節(jié)點先把數(shù)據(jù)發(fā)送到轉(zhuǎn)發(fā)節(jié)點上,然后由轉(zhuǎn)發(fā)節(jié)點發(fā)送至目的節(jié)點.該通信模式可以保證所有CPE能并發(fā)進行點對點通信,不會出現(xiàn)空閑或者死鎖的狀態(tài).

    Fig.6 Data communication processing.圖6 數(shù)據(jù)發(fā)送過程示意圖

    3.3.2 CPAB-MS算法流程

    綜合3.2節(jié)和3.3.1節(jié)所設計的4項優(yōu)化技術(shù),總結(jié)出CPAB-MS算法整體流程如下:

    步驟1.將N個數(shù)據(jù)均勻劃分到C個CPA,每個陣列有N?C個數(shù)據(jù);

    步驟2.各CPA將所持數(shù)據(jù)分為(N?C)?(P× M)個組,每組P×M個數(shù)據(jù)(可以存放于CPA內(nèi)各CPE的SPM中),使用步驟2.1~2.2對每一組數(shù)據(jù)進行排序:

    2.1)每個CPE讀取M個數(shù)據(jù)到SPM,使用步驟2.1.1~2.1.2完成M個數(shù)據(jù)的排序:

    2.1.1)用寄存器排序?qū)⑿蛄信判虺砷LK(SIMD寬度)有序的序列;

    2.1.2)使用lb(M?K)次SIMD歸并,逐步將長K有序的子序列歸并成1條有序序列;

    2.2)CPA內(nèi)各CPE通過片上交換歸并策略將P×M個數(shù)據(jù)排成有序序列;

    步驟3.CPA內(nèi)各CPE利用lb(N?(C×P× M))次深度平衡歸并策略將N?(C×P×M)個有序子序列歸并成1個有序序列(讀寫數(shù)據(jù)使用DMA多緩沖技術(shù));

    步驟4.C個CPA繼續(xù)應用lb(C)次深度平衡歸并策略將C個有序子序列歸并成整體有序序列(讀寫數(shù)據(jù)使用DMA多緩沖技術(shù)).

    4 實驗結(jié)果與分析

    4.1 實驗環(huán)境

    異構(gòu)融合陣列眾核處理器DFMC的結(jié)構(gòu)包括4個MPE,4個CPA共256個CPE,主頻1.0GHz,支持128b(2個64b整數(shù)或浮點運算)的SIMD指令,每個CPE擁有32KB局存,局存訪問延遲3周期,局存與主存間支持多種DMA模式傳輸,CPA內(nèi)支持片上通信,單次主存訪問延遲約100周期,主存帶寬102.4GBps,芯片32位整數(shù)運算峰值性能512GOps(giga operations per second).軟件配置是,MPE運行在內(nèi)核為2.6.28版本的Linux系統(tǒng)上,CPE的系統(tǒng)是一個輕量級的定制系統(tǒng),編程環(huán)境是定制的提供并行編程的C語言.

    目前DFMC原型系統(tǒng)采用FPGA構(gòu)建,時鐘頻率2.6MHz,如圖7所示.實驗在該原型系統(tǒng)上進行,所得的實驗結(jié)果根據(jù)真實的時鐘頻率進行校準.

    4.2 優(yōu)化效果

    實驗中待排序的數(shù)據(jù)是均勻分布的32位整數(shù)序列,數(shù)據(jù)量從220增長到256×220,實驗算法包括基本并行歸并、CPEB-MS和CPAB-MS三種.圖8顯示了3種算法的排序速率(序列長度與排序時間的比值),結(jié)果表明,與基本算法相比,CPEB-MS和CPAB-MS的排序速度得到了巨大的提升,平均分別提升了158倍和194倍.CPAB-MS的排序速度相對CPEB-MS平均提升了23%,這是因為CPABMS通過片上通信重用片上數(shù)據(jù)減少了訪存次數(shù).然而,CPAB-MS中片上通信是有代價的,將在第5,6節(jié)進一步分析.

    Fig.7 DFMC FPGA prototype system.圖7 FPGA搭建的DFMC原型系統(tǒng)

    Fig.8 Sorting rates of the three merge sort algorithms for varying sequence sizes.圖8 3種歸并排序算法的排序速率

    其中各項優(yōu)化技術(shù)所提供的加速比如表1所示.從表1可以看出,多緩沖和深度平衡歸并所提供的加速比非常大,說明基本算法中由于訪存低效和負載不均衡導致的性能問題非常嚴重.與之相比,SIMD歸并和片上交換歸并策略所提供的性能增益相對較小,這是因為通過前2項技術(shù)后,存儲帶寬的利用率已接近極限,此時,SIMD計算所帶來的性能提升受限于訪存瓶頸,而片上交換歸并所減少的訪存次數(shù)受限于CPA內(nèi)各CPE的SPM大小之和.

    Table1 Speedups of All Optimization Techniques表1 各優(yōu)化技術(shù)加速比

    4.3 與其他平臺排序算法的比較

    實驗選取了近幾年來眾核處理器上效率最高的幾種比較型排序算法進行對比.在GPU方面,選取了NVIDIA GTX580上的歸并排序(GPU Merge)[9]、NVIDIA Tesla C1060上的采樣排序(GPU Sample)[21]、CPU-GPU(Intel i7 980+GTX580)混合結(jié)構(gòu)上的采樣排序(Hybrid Sample)[24];在Intel Xeon Phi眾核上,選取了歸并排序(Xeon Phi Merge)[11]進行比較,實驗數(shù)據(jù)均來源于公開發(fā)表的文獻.表2顯示了這些處理器的性能參數(shù).

    Table 2 The Parameters of Referred Processors表2 處理器參數(shù)

    實驗結(jié)果如圖9所示,可以看出,在所有這些比較型排序中,DFMC上的實驗結(jié)果是最好的,如數(shù)據(jù)量為16×220時,DFMC Merge的排序速度達到647MKeys?s,是GPU Merge的2.7倍,是GPU Sample的5.5倍,是CPU-GPU混合結(jié)構(gòu)上Hybrid Sample的2.4倍;比Xeon Phi上歸并排序排序快36%.折算成同等峰值性能,DFMC上的歸并排序的排序效率(排序速率與峰值性能的比值)是GTX580歸并排序的3.3倍,是Xeon Phi上歸并排序的2.7倍.CPAB-MS算法比其他處理器上比較型排序算法效率高的主要原因是CPAB-MS充分利用了陣列眾核結(jié)構(gòu)的硬件特征,最大限度地發(fā)揮了處理器的性能.

    Fig.9 Sorting performance of different methods on different platforms.圖9 不同平臺排序算法性能比較

    5 算法性能模型

    本節(jié)建立算法性能的分析模型,用以指導算法的優(yōu)化以及分析陣列眾核結(jié)構(gòu)與算法性能之間的關(guān)系.

    5.1 模型建立

    陣列眾核上并行歸并程序的執(zhí)行時間主要包括訪存時間、計算時間和片上通信時間(針對CPABMS).設τm是歸并過程中單次單個元素的平均訪存時間,τc是歸并過程中單次單個元素的平均計算時間,τs是單個元素的平均寄存器排序時間,τi是單個元素的平均片上通信時間.則CPEB-MS算法框架中步驟2的時間是

    其中N,M,K分別表示數(shù)據(jù)量、SPM緩沖中可容納的元素數(shù)目和SIMD寬度,C表示陣列數(shù),P表示每個陣列中的核心數(shù).max(2τm,τc)是由于多緩沖使得計算時間和訪存時間重疊,總的執(zhí)行時間是這二者的最大值,τm前的系數(shù)2說明讀寫2次操作.步驟3和步驟4的時間之和是

    其中Talltoall是片上通信時間,片上通信時間與數(shù)據(jù)分布有關(guān),最好的情形,即已經(jīng)完全有序,無需通信,Talltoall=O(1);最壞的情形,每次點對點通信的傳輸數(shù)據(jù)量達到N?(C×P),Talltoall=P×N?(C×P)×2τi;一般情形,平均時間是Talltoall,ave=N?(C×P)×2τi.

    CPAB-MS算法的總執(zhí)行時間是這3個步驟執(zhí)行時間之和:

    式(3)、式(6)~(8)可以作為陣列眾核上歸并排序算法的性能模型,通過調(diào)整系數(shù),可以表示不同結(jié)構(gòu)上的性能模型.例如,若眾核不支持SIMD指令,則K=1;若眾核具有共享片上存儲,則Talltoall=0.

    5.2 性能模型誤差

    我們在DFMC原型系統(tǒng)上檢驗了算法性能模型的準確度.性能模型中的τm,τc,τs,τi可通過程序代碼、存儲帶寬和時鐘頻率計算出來,其他系數(shù)可由結(jié)構(gòu)參數(shù)得到,從而算出執(zhí)行時間的估計值.估計值和實驗值的結(jié)果如圖10所示.其中CPEB-MS算法性能模型的平均誤差在5%以內(nèi),CPAB-MS算法性能模型的平均誤差會達到11%,這是因為CPABMS中片上通信過程里有大量的同步操作,帶來一些額外的不確定性時間.

    Fig.10 Comparison between estimated values and experimental values.圖10 實驗值與理論值比較

    從實驗結(jié)果可以看出,算法性能模型的準確度高,可以用來分析不同結(jié)構(gòu)參數(shù)下的算法性能.

    6 進一步討論

    本節(jié)利用第5節(jié)建立的算法性能模型,對算法優(yōu)化以及算法性能與眾核結(jié)構(gòu)之間的關(guān)系進行一些分析和探索.

    在算法優(yōu)化方面,可以分析出如下結(jié)論:

    1)陣列眾核上歸并排序算法的時間復雜度是O(Nlb(N)?(C×P)),降低并行歸并排序時間的主要途徑是降低τm和τc.本文設計的多緩沖策略和SIMD歸并方法即是降低了τm和τc.

    2)從式(8)可以看出τm和τc的系數(shù)之和是與算法無關(guān)的恒定值.對于核數(shù)較多的眾核結(jié)構(gòu),通常τm比τc大,因此提高排序性能的一種策略是減少a而增加b來降低整個執(zhí)行時間,即以增加計算來減少訪存時間,本文中CPAB-MS與CPEB-MS相比就是通過重用片上數(shù)據(jù)減小訪存次數(shù)來提高性能.

    3)CPAB-MS的執(zhí)行時間中Talltoall受待排序序列數(shù)據(jù)分布的影響,最壞情形的通信開銷大,性能將比CPEB-MS差,而一般情形時,其性能比CPEBMS好.

    陣列眾核結(jié)構(gòu)中的核心數(shù)目、存儲帶寬、SPM大小以及SIMD寬度,與算法性能密切相關(guān),可以依據(jù)算法性能模型進行定量分析.

    6.1 核心數(shù)目與存儲帶寬

    核心數(shù)目對排序性能的影響有2方面,一方面核心數(shù)目越多,計算能力越強,單位時間可完成的比較操作越多;另一方面,核心數(shù)目的增加會導致單個核心所分得的存儲帶寬減小,從而排序容易陷入訪存瓶頸.

    在第4節(jié)的陣列眾核歸并排序性能模型中,式(3)和式(6)中的τm是和存儲帶寬以及核心數(shù)目有關(guān)的變量,設帶寬為B(單位為Bps),CPE數(shù)目為P,存儲帶寬利用率為ρ,鍵值大小為w(單位為B),則

    以式(3)為例,當N很大時,執(zhí)行時間主要是由式中第2項決定,記為Tcpe,second.而當2τm>τc時,將式(9)代入,有

    由式(10)可看出Tcpe,second與P無關(guān),即使增加P也無法再減少Tcpe,second,繼而對Tcpe的影響非常有限.因此,2τm=τc是一個臨界條件,即

    若2τm<τc說明排序是計算受限的,而2τm>τc則是訪存受限.當未來陣列眾核處理器核心數(shù)目和存儲帶寬的擴展關(guān)系滿足式(11)時,算法有很好的可擴展性.

    根據(jù)當前DFMC的配置情況,可以算出P=42是臨界點,即當前DFMC結(jié)構(gòu)為訪存受限.單個CPA上使用不同CPE數(shù)目的CPEB-MS算法的實驗結(jié)果如圖11所示(數(shù)據(jù)量為16×220).從圖11可以看出臨界CPE數(shù)在32~64之間,之后,執(zhí)行時間隨CPE數(shù)目增加的下降速度變緩慢.根據(jù)式(11),DFMC單個CPA的帶寬應當提高約50%,才能最大限度發(fā)揮64個CPE的計算性能,此時,算法的排序速度將提高25%.

    Fig.11 Sorting time for varying number of CPEs.圖11 排序時間與CPE數(shù)目關(guān)系

    6.2 片上存儲大小

    根據(jù)算法性能模型式(6),可算出DFMC結(jié)構(gòu)上排序時間與片上存儲開辟的緩沖區(qū)大小的關(guān)系,如圖12所示(數(shù)據(jù)量為16×220).從圖12可以看出,排序時間隨緩沖區(qū)大小增長呈對數(shù)級下降,可見,通過增大SPM大小可以提升排序性能,但空間有限.

    Fig.12 Sorting time for varying buffer sizes.圖12 排序時間隨緩沖大小關(guān)系

    6.3 SIMD寬度

    SIMD歸并算法中,對于寬度為K的SIMD指令,歸并K個元素需要1個lb(2 K)級的歸并網(wǎng)絡,每級網(wǎng)絡需要2次比較操作和2次混洗操作,所以前面性能模型中的τc可表示成

    其中Θ表示緊致界[25],由式(12)結(jié)合式(3)、式(6)可以看出,訪存理想的情況下,排序時間會隨著K的增加而呈式(12)下降.但實際的情況是,當隨著K的增加,算法會達到訪存受限,之后執(zhí)行時間的下降空間有限.圖13顯示了DFMC結(jié)構(gòu)上排序時間與SIMD寬度的關(guān)系,當前DFMC的SIMD寬度為2,由于存儲帶寬的限制,SIMD寬度的進一步加大所帶來的性能提升有限.但是,如果存儲帶寬增加1倍,同時SIMD寬度增加1倍,將使得排序速度提升71%.

    Fig.13 Sorting time for varying SIMD width.圖13 排序時間隨SIMD寬度關(guān)系

    7 總 結(jié)

    陣列眾核處理器是眾核處理器發(fā)展的重要方向,能夠提供很高的峰值性能,但如何利用其多級并行性(SPMD和SIMD)和SPM的結(jié)構(gòu)特點、充分發(fā)揮其峰值性能,對并行算法的設計提出了較高的要求.

    本文通過分析陣列眾核處理器的結(jié)構(gòu)特點,設計了多種相應的優(yōu)化策略,大幅度提高了陣列眾核結(jié)構(gòu)上的歸并排序算法性能,實驗結(jié)果優(yōu)于其他眾核處理器上基于比較的排序算法.本文的優(yōu)化過程說明了,并行算法的設計要和特定的處理器結(jié)構(gòu)緊密結(jié)合起來才能最大限度地發(fā)揮處理器的性能.本文所展示的陣列眾核結(jié)構(gòu)上歸并排序算法的優(yōu)化過程對于其他處理器上并行算法的設計和優(yōu)化也有很好的借鑒意義.

    本文最后分析了陣列眾核結(jié)構(gòu)與代表數(shù)據(jù)密集型應用的歸并排序算法的性能之間的關(guān)系,相信這些分析對陣列眾核結(jié)構(gòu)的研究是一個有益的參考.

    [1]Zhong Cheng,Chen Guoliang.An optimal parallel sorting algorithm for multisets[J].Journal of Computer Research and Development,2003,40(2):336 341(in Chinese)(鐘誠,陳國良.Multisets排序的最優(yōu)并行算法[J].計算機研究與發(fā)展,2003,40(2):336 341)

    [2]Ramey C.Tile-gx100manycore processor:Acceleration interfaces and architecture[OL].San Jose,CA:Tilera Corporation,2011[2014-10-25].http:??www.hotchips.org? wp-content?uploads?hc_archives?hc23?HC23.18.2-security? HC23.18.220-TILE-GX100-Ramey-Tilera-e.pdf

    [3]Mitsuhisa S.Feasibility study on future HPC infrastructure[OL].Tsukuba,Janpan:University of Tsukuba,2014[2014-10-25].http:??www.ccs.tsukuba.a(chǎn)c.jp?files?exreview?FS-ccs-eval-2014.pdf

    [4]Gwennup L.Adapteva:More flops,less watts[OL].Mountain View,CA:The Linley Group,2011[2014-10-25].http:??www.a(chǎn)dapteva.com?wp-content?uploads?2011? 06?adapteva_mpr.pdf

    [5]Dinechin B D,Ayrignac R,Beaucamps P E,et al.A clustered manycore processor architecture for embedded and accelerated applications[C]??Proc of the 17th IEEE Conf on High Performance Extreme Computing.Piscataway,NJ:IEEE,2013:1 6

    [6]Fan D R,Yuan N,Zhang J C,et al.Godson-T:An efficient many-core architecture for parallel program executions[J].Journal of Computer Science and Technology,2009,24(6):1061 1073

    [7]Zheng Fang,Zhang Kun,Wu Guiming,et al.Architecture techniques of many-core processor for energy-efficient in high performance computing[J].Chinese Journal of Computers,2014,37(10):2176 2186(in Chinese)(鄭方,張昆,鄔貴明,等.面向高性能計算的眾核處理器結(jié)構(gòu)級高能效技術(shù)[J].計算機學報,2014,37(10):2176 2186)

    [8]Merrill D G,Grimshaw A S.Revisiting sorting for GPGPU stream architectures[C]??Proc of the 19th Int Conf on Parallel Architectures and Compilation Techniques.New York:ACM,2010:545 546

    [9]Davidson A,Tarjan D,Garland M,et al.Efficient parallel merge sort for fixed and variable length keys[C]??Proc of Innovative Parallel Computing.Piscataway,NJ:IEEE,2012:1 9

    [10]Satish N,Kim C,Chhugani J,et al.Fast sort on CPUs,GPUs and Intel MIC architectures[OL].Santa Clara,CA:Intel Labs,2010[2014-10-25].http:??www.intel.com? content?www?us?en?research?intel-labs-radix-sort-mic-report.html

    [11]Tian X,Kamil R,Reiji S.Register level sort algorithm on multi-core SIMD processors[C]??Proc of the 3rd Workshop on Irregular Applications:Architecture and Algorithms.New York:ACM,2013:No 9

    [12]Sengupta S,Harris M,Zhang Yao,et al.Scan primitives for GPU computing[C]??Proc of the 22nd ACM SIGGRAPH? EUROGRAPHICS Symp on Graphics hardware.Aire-la-Ville,Switzerland:Eurographics Association,2007:97 106

    [13]Satish N,Harris M,Garland M.Designing efficient sorting algorithms for manycore GPUs,NVR-2008-001[R].Santa Clara,CA:NVIDIA Corporation,2008

    [14]Satish N,Harris M,Garland M.Designing efficient sorting algorithms for manycore GPUs[C]??Proc of the 23rd IEEE Int Symp on Parallel &Distributed Processing.Piscataway,NJ:IEEE,2009:1 10

    [15]Batcher K E.Sorting networks and their applications[C]?? Proc of the Spring Joint Computer Conf.New York:ACM,1968:307 314

    [16]Purcell T J,Donner C,Cammarano M,et al.Photon mapping on programmable graphics hardware[C]??Proc of the ACM SIGGRAPH?EUROGRAPHICS Conf on Graphics hardware.Aire-la-Ville,Switzerland:Eurographics Association,2003:41 50

    [17]Peters H,Schulz-Hildebrandt O,Luttenberger N.Fast inplace,comparison-based sorting with CUDA:A study with bitonic sort[J].Concurrency and Computation:Practice and Experience,2011,23(7):681 693

    [18]Greb A,Zachmann G.GPU-ABiSort:Optimal parallel sorting on stream architectures[C]??Proc of the 20th Int Conf on Parallel and Distributed Processing.Piscataway,NJ:IEEE,2006:45 54

    [19]Cederman D,Tsigas P.A practical quicksort algorithm for graphics processors[G]??LNCS 5193:Proc of the 16th Annual European Symp on Algorithms.Berlin:Springer,2008:246 258

    [20]Cederman D,Tsigas P.GPU-quicksort:A practical quicksort algorithm for graphics processors[J].Journal of Experimental Algorithmics(JEA),2009,14(4):1 22

    [21]Leischner N,Osipov V,Sanders P.GPU sample sort[C]?? Proc of the 24th IEEE Int Symp on Parallel Distributed Processing.Piscataway,NJ:IEEE,2010:1 10

    [22]Sintorn E,Assarsson U.Fast parallel GPU-sorting using a hybrid algorithm[J].Journal of Parallel and Distributed Computing,2008,68(10):1381 1388

    [23]Ye X,F(xiàn)an D,Lin W,et al.High performance comparisonbased sorting algorithm on many-core GPUs[C]??Proc of the 24th IEEE Int Symp on Parallel Distributed Processing.Piscataway,NJ:IEEE,2010:1 10

    [24]Banerjee D S,Sakurikar P,Kothapalli K.Fast,scalable parallel comparison sort on hybrid multicore architectures[C]??Proc of the 27th IEEE Int Symp on Parallel and Distributed Processing Workshops &PhD Forum.Piscataway,NJ:IEEE,2013:1060 1069

    [25]Cormen T H,Leiserson C E,Rivest R L,et al.Introduction to Algorithms[M].Cambridge,MA:MIT Press,2001

    Shi Song,born in 1990.MSc.Member of China Computer Federation.His research interests include computer architecture,microprocessor design and high-performance computing.

    Li Hongliang,born in 1975.PhD,associate professor.Member of China Computer Federation.His main research interests include computer architecture,microprocessor design and high-performance computing(hongliangli@263.net).

    Zhu Wei,born in 1976.MSc,senior engineer.His main research interests include microprocessor design and integrated circuit verification(zw84611@sina.com).

    Efficient Merge Sort Algorithms on Array-Based Manycore Architectures

    Shi Song,Li Hongliang,and Zhu Wei
    (Jiangnan Institute of Computing Technology,Wuxi,Jiangsu214083)

    Sorting is one of the most fundamental problems in the field of computer science.With the rapid development of manycore processors,it shows great importance to design efficient sort algorithms on manycore architecture.An important trend of manycore processors is array-based manycore architecture.This paper presents two efficient merge sort algorithms on array-based manycore architectures.Our algorithms achieve high performance by using DMA(direct memory access)multi-buffering strategy to improve the memory accessing efficiency,deeply balanced merging strategy to keep load-balancing between cores,SIMD(single instruction multiple data)merging method to exploit fine-grained parallelism and on-chip swap merging strategy to reuse on-chip data.Experimental results on DFMC(deeply-fused many-core)prototype system achieve a sorting rate of 647MKeys?s(million keys per second),and the sorting efficiency(sorting rate?peak performance)is 3.3xhigher than state-of-the-art GPU merge sort on GTX580,and 2.7xhigher than the fastest merge sort on Intel Xeon Phi.Additionally,this paper establishes an analytical model to characterize the performance of our algorithms.Based on the analytical model,we analyze the influence of the main structural parameters to the performance of the algorithms,which will contribute to the study of many-core architecture.

    array-based manycore;merge sort;sort network;SIMD;SPMD;on-chip communication

    TP302

    2014-11-14;

    2015-07-21

    國家“八六三”高技術(shù)研究發(fā)展計劃基金項目(2014AA01A301);“核高基”國家科技重大專項基金項目(2013zx0102-8001-001-001)

    This work was supported by the National High Technology Research and Development Program of China(863Program)(2014AA01A301)and the National Science and Technology Major Projects of Hegaoji(2013zx0102-8001-001-001).

    關(guān)鍵詞 陣列眾核;歸并排序;排序網(wǎng)絡;單指令多數(shù)據(jù)流;單程序多數(shù)據(jù)流;片上通信

    91精品一卡2卡3卡4卡| 亚洲人成网站在线播放欧美日韩| 日本三级黄在线观看| 亚洲不卡免费看| 最后的刺客免费高清国语| 男女视频在线观看网站免费| 久久6这里有精品| or卡值多少钱| 免费观看人在逋| 国产国拍精品亚洲av在线观看| av又黄又爽大尺度在线免费看 | 波多野结衣巨乳人妻| 99久久成人亚洲精品观看| 久久精品久久久久久久性| 美女高潮的动态| 女人被狂操c到高潮| 嘟嘟电影网在线观看| 熟女电影av网| 偷拍熟女少妇极品色| 日本色播在线视频| 亚洲无线观看免费| 桃色一区二区三区在线观看| 哪里可以看免费的av片| 麻豆久久精品国产亚洲av| 日本一本二区三区精品| 毛片女人毛片| 搡女人真爽免费视频火全软件| 国产探花极品一区二区| 成熟少妇高潮喷水视频| 欧美成人一区二区免费高清观看| 在线观看一区二区三区| 国内精品一区二区在线观看| 联通29元200g的流量卡| 亚洲丝袜综合中文字幕| 十八禁国产超污无遮挡网站| 亚洲人成网站高清观看| 国产日韩欧美在线精品| 老女人水多毛片| 午夜精品一区二区三区免费看| 亚洲在线自拍视频| 亚洲丝袜综合中文字幕| 少妇的逼水好多| 国产精品不卡视频一区二区| 欧美激情国产日韩精品一区| 日韩,欧美,国产一区二区三区 | 亚洲国产精品成人久久小说 | 在线天堂最新版资源| 亚洲人成网站在线播放欧美日韩| 欧美三级亚洲精品| 国产精品一区二区性色av| 日本黄大片高清| 在线观看av片永久免费下载| 亚洲精品日韩在线中文字幕 | 亚洲欧美日韩高清专用| 男插女下体视频免费在线播放| 国产精品久久久久久精品电影小说 | 人妻少妇偷人精品九色| 在线观看午夜福利视频| 一本一本综合久久| 麻豆成人午夜福利视频| 日韩一区二区三区影片| 欧美3d第一页| 校园春色视频在线观看| 亚洲第一电影网av| 一本精品99久久精品77| 国产精品永久免费网站| 99久久成人亚洲精品观看| 国产色爽女视频免费观看| 十八禁国产超污无遮挡网站| 黄色欧美视频在线观看| 日韩大尺度精品在线看网址| av专区在线播放| 亚洲三级黄色毛片| 国产精品不卡视频一区二区| 国内精品一区二区在线观看| 欧美日韩综合久久久久久| 中文亚洲av片在线观看爽| 中文字幕av成人在线电影| 久久99精品国语久久久| 日韩精品有码人妻一区| 美女黄网站色视频| 舔av片在线| 色播亚洲综合网| 男插女下体视频免费在线播放| 少妇人妻精品综合一区二区 | 国产伦理片在线播放av一区 | www日本黄色视频网| 草草在线视频免费看| 亚洲国产欧洲综合997久久,| 精品久久久久久久久av| 久久综合国产亚洲精品| 久久6这里有精品| 99久国产av精品国产电影| 欧美色视频一区免费| 免费在线观看成人毛片| 特大巨黑吊av在线直播| 一本精品99久久精品77| 日韩大尺度精品在线看网址| kizo精华| 亚洲av二区三区四区| 国产熟女欧美一区二区| 午夜福利视频1000在线观看| 免费观看的影片在线观看| 精品一区二区三区视频在线| 国产视频内射| 亚洲欧美精品综合久久99| 观看免费一级毛片| 国产激情偷乱视频一区二区| 麻豆成人av视频| 美女脱内裤让男人舔精品视频 | 国产精品久久久久久精品电影| 天堂√8在线中文| 观看美女的网站| videossex国产| 麻豆精品久久久久久蜜桃| 一卡2卡三卡四卡精品乱码亚洲| 亚洲国产精品国产精品| 国产伦精品一区二区三区四那| 欧美日本视频| 欧美日韩综合久久久久久| 亚洲激情五月婷婷啪啪| 哪个播放器可以免费观看大片| 免费电影在线观看免费观看| 成年女人永久免费观看视频| 岛国在线免费视频观看| 麻豆国产av国片精品| 色视频www国产| 亚洲av不卡在线观看| 精品久久久久久久久久免费视频| 亚洲av中文字字幕乱码综合| 老熟妇乱子伦视频在线观看| 日本黄色视频三级网站网址| 久久99精品国语久久久| 少妇丰满av| 少妇的逼好多水| 两个人视频免费观看高清| 欧美色视频一区免费| 欧美极品一区二区三区四区| 欧美潮喷喷水| 久久鲁丝午夜福利片| 男女啪啪激烈高潮av片| 九九久久精品国产亚洲av麻豆| 国产av不卡久久| 两个人视频免费观看高清| 春色校园在线视频观看| 99热这里只有是精品在线观看| 国内久久婷婷六月综合欲色啪| 天堂网av新在线| 丝袜喷水一区| 男人狂女人下面高潮的视频| 久久九九热精品免费| 午夜亚洲福利在线播放| 中文精品一卡2卡3卡4更新| av在线观看视频网站免费| 国产精品99久久久久久久久| 中文字幕人妻熟人妻熟丝袜美| 欧美丝袜亚洲另类| 两个人视频免费观看高清| 男女边吃奶边做爰视频| www.色视频.com| 国产午夜精品久久久久久一区二区三区| 国产午夜福利久久久久久| 婷婷精品国产亚洲av| 91狼人影院| 伦精品一区二区三区| 身体一侧抽搐| 少妇人妻一区二区三区视频| 国产男人的电影天堂91| 超碰av人人做人人爽久久| 国产亚洲av嫩草精品影院| 校园春色视频在线观看| 99久久精品一区二区三区| 亚洲经典国产精华液单| 神马国产精品三级电影在线观看| 美女黄网站色视频| 最近中文字幕高清免费大全6| 久久久久九九精品影院| 国产精品美女特级片免费视频播放器| 精品99又大又爽又粗少妇毛片| 可以在线观看毛片的网站| 不卡视频在线观看欧美| 精品一区二区三区人妻视频| 少妇丰满av| 欧美性猛交黑人性爽| 亚洲aⅴ乱码一区二区在线播放| 国产亚洲av嫩草精品影院| 啦啦啦啦在线视频资源| 啦啦啦观看免费观看视频高清| 在线播放无遮挡| 夜夜看夜夜爽夜夜摸| 深夜a级毛片| 国产成人福利小说| 好男人视频免费观看在线| 三级毛片av免费| 日韩欧美国产在线观看| 国内精品一区二区在线观看| 久久欧美精品欧美久久欧美| 美女国产视频在线观看| 搡老妇女老女人老熟妇| 一级毛片我不卡| 蜜桃亚洲精品一区二区三区| 日韩大尺度精品在线看网址| 欧美激情久久久久久爽电影| 1000部很黄的大片| 久久精品国产亚洲av香蕉五月| 99九九线精品视频在线观看视频| 最近手机中文字幕大全| 晚上一个人看的免费电影| 黄色欧美视频在线观看| 国产v大片淫在线免费观看| 联通29元200g的流量卡| av福利片在线观看| 2021天堂中文幕一二区在线观| 国产精品国产三级国产av玫瑰| 在线观看美女被高潮喷水网站| 好男人在线观看高清免费视频| av黄色大香蕉| 免费看光身美女| 久久热精品热| 深夜精品福利| 中国国产av一级| 国产精品三级大全| 97热精品久久久久久| 久久99热6这里只有精品| 国产亚洲欧美98| 亚洲欧美精品综合久久99| 日韩欧美国产在线观看| 久久人妻av系列| 国产麻豆成人av免费视频| 中出人妻视频一区二区| 99久久精品一区二区三区| 亚洲欧美精品自产自拍| 99久久精品热视频| a级毛片a级免费在线| 午夜福利在线观看吧| 99久国产av精品| 色5月婷婷丁香| 身体一侧抽搐| 美女国产视频在线观看| av在线播放精品| 桃色一区二区三区在线观看| 国产在线男女| 精品一区二区三区人妻视频| av免费在线看不卡| 日韩欧美精品免费久久| 校园春色视频在线观看| 久久久久久久久久成人| 国产乱人视频| 国产亚洲91精品色在线| 高清毛片免费观看视频网站| 日本在线视频免费播放| 伦理电影大哥的女人| 久久精品国产自在天天线| 岛国在线免费视频观看| 国产一级毛片在线| 尾随美女入室| 久久热精品热| 久久精品综合一区二区三区| 国产精华一区二区三区| 老女人水多毛片| 国产一级毛片七仙女欲春2| 我的女老师完整版在线观看| 亚洲五月天丁香| 午夜精品国产一区二区电影 | 欧美成人精品欧美一级黄| 国产精品99久久久久久久久| 神马国产精品三级电影在线观看| 日韩三级伦理在线观看| 99久久精品国产国产毛片| 亚洲美女搞黄在线观看| 老熟妇乱子伦视频在线观看| 国产不卡一卡二| 免费看美女性在线毛片视频| 国产中年淑女户外野战色| 免费一级毛片在线播放高清视频| 国内精品美女久久久久久| 五月玫瑰六月丁香| 日本欧美国产在线视频| 国产高清三级在线| 亚洲电影在线观看av| 美女黄网站色视频| 亚洲av免费高清在线观看| 精品久久久久久久久久免费视频| 亚洲中文字幕日韩| 免费av毛片视频| 免费搜索国产男女视频| 亚洲美女搞黄在线观看| 人人妻人人澡人人爽人人夜夜 | 欧美日韩乱码在线| 色视频www国产| 日韩成人伦理影院| 最好的美女福利视频网| 欧美一区二区亚洲| 干丝袜人妻中文字幕| 精品少妇黑人巨大在线播放 | av在线观看视频网站免费| 国产一区二区激情短视频| 一本久久中文字幕| 高清在线视频一区二区三区 | 大又大粗又爽又黄少妇毛片口| 男的添女的下面高潮视频| 亚洲精品国产成人久久av| 国产精品一二三区在线看| 久久久久久久久久成人| 日韩中字成人| 日日干狠狠操夜夜爽| 成年av动漫网址| 黄色日韩在线| 国产成年人精品一区二区| 99久国产av精品国产电影| 黄色欧美视频在线观看| 日韩av不卡免费在线播放| 狂野欧美激情性xxxx在线观看| 99热这里只有是精品在线观看| 少妇熟女aⅴ在线视频| 精品国产三级普通话版| 中国美女看黄片| 国产色爽女视频免费观看| 亚洲成人久久性| 最近视频中文字幕2019在线8| 国产亚洲欧美98| 波野结衣二区三区在线| 久久这里只有精品中国| 高清毛片免费观看视频网站| 欧美潮喷喷水| 国产精品久久久久久精品电影| 一个人观看的视频www高清免费观看| 国产在视频线在精品| av专区在线播放| 国内少妇人妻偷人精品xxx网站| 中文精品一卡2卡3卡4更新| 日韩亚洲欧美综合| 97超碰精品成人国产| 亚洲国产精品sss在线观看| 日日摸夜夜添夜夜爱| 九九爱精品视频在线观看| 日本黄色视频三级网站网址| 久久人人爽人人爽人人片va| 国产精品一区www在线观看| 在线国产一区二区在线| 亚洲乱码一区二区免费版| 日韩成人av中文字幕在线观看| 日本黄色片子视频| 大香蕉久久网| 久久久久久伊人网av| 国产精品久久久久久精品电影小说 | av在线蜜桃| 久久久久久大精品| 干丝袜人妻中文字幕| 三级经典国产精品| 亚州av有码| 国产精品久久久久久精品电影小说 | 中文欧美无线码| 欧美性猛交╳xxx乱大交人| 中出人妻视频一区二区| 波野结衣二区三区在线| 欧美精品国产亚洲| 国产黄色视频一区二区在线观看 | 国产精品国产高清国产av| 深夜精品福利| 国产精品美女特级片免费视频播放器| 日本熟妇午夜| 99久久中文字幕三级久久日本| 国产真实乱freesex| 欧美激情国产日韩精品一区| 美女黄网站色视频| 美女 人体艺术 gogo| 白带黄色成豆腐渣| 亚洲熟妇中文字幕五十中出| 国产日本99.免费观看| 成人一区二区视频在线观看| 亚洲成人av在线免费| eeuss影院久久| 黄色视频,在线免费观看| 国产精品嫩草影院av在线观看| 国产综合懂色| 波野结衣二区三区在线| 久久国产乱子免费精品| 少妇的逼好多水| 午夜福利视频1000在线观看| 中文字幕免费在线视频6| 久久久久久久久中文| 身体一侧抽搐| 高清日韩中文字幕在线| 日本免费a在线| 国产美女午夜福利| 精品久久久久久久久久免费视频| 一个人看的www免费观看视频| 男人舔奶头视频| 少妇的逼好多水| 麻豆国产av国片精品| 丝袜喷水一区| 99久久九九国产精品国产免费| 久久国产乱子免费精品| 日韩强制内射视频| 中文字幕免费在线视频6| 我的老师免费观看完整版| 激情 狠狠 欧美| av在线老鸭窝| 日本五十路高清| 日韩欧美精品免费久久| 成人欧美大片| 最新中文字幕久久久久| 乱系列少妇在线播放| 亚洲国产精品合色在线| 波多野结衣高清作品| 欧美成人精品欧美一级黄| 身体一侧抽搐| 日日摸夜夜添夜夜爱| 国产欧美日韩精品一区二区| www日本黄色视频网| 一进一出抽搐动态| 成人亚洲欧美一区二区av| a级毛片a级免费在线| 亚洲美女搞黄在线观看| 一进一出抽搐gif免费好疼| 男女视频在线观看网站免费| 国产激情偷乱视频一区二区| 黄片wwwwww| 国产人妻一区二区三区在| 天天一区二区日本电影三级| 长腿黑丝高跟| 免费黄网站久久成人精品| 神马国产精品三级电影在线观看| 一级毛片我不卡| 国产伦理片在线播放av一区 | 高清毛片免费观看视频网站| 国产午夜精品论理片| 97超视频在线观看视频| 性欧美人与动物交配| 人妻夜夜爽99麻豆av| 国产精品久久久久久av不卡| 午夜视频国产福利| 丰满人妻一区二区三区视频av| 青春草国产在线视频 | 精品午夜福利在线看| 中文字幕免费在线视频6| 久久精品人妻少妇| 一区二区三区免费毛片| 国产精品人妻久久久久久| 日韩欧美三级三区| 一级av片app| 一进一出抽搐gif免费好疼| 97热精品久久久久久| 国产日韩欧美在线精品| 亚洲久久久久久中文字幕| 免费看光身美女| 欧美bdsm另类| 亚洲av熟女| 精品久久久久久成人av| 久久久久久久久久久免费av| 亚洲欧洲国产日韩| 国产精品久久视频播放| 国产av一区在线观看免费| 成人亚洲欧美一区二区av| 久久精品国产清高在天天线| 给我免费播放毛片高清在线观看| 国产在线精品亚洲第一网站| 小说图片视频综合网站| 美女黄网站色视频| 最近手机中文字幕大全| 中文字幕久久专区| 午夜福利高清视频| av视频在线观看入口| 免费av观看视频| 一边亲一边摸免费视频| 久久精品久久久久久久性| 欧美一区二区精品小视频在线| 免费搜索国产男女视频| 国产伦在线观看视频一区| 精品久久国产蜜桃| 尤物成人国产欧美一区二区三区| 婷婷色综合大香蕉| 韩国av在线不卡| 国产高潮美女av| 插阴视频在线观看视频| 国产成人freesex在线| 精品久久久久久久久av| 99久久人妻综合| 哪个播放器可以免费观看大片| 可以在线观看的亚洲视频| 精品不卡国产一区二区三区| 狠狠狠狠99中文字幕| 免费av观看视频| 九色成人免费人妻av| 一本精品99久久精品77| 久久精品国产自在天天线| 日本黄色片子视频| 国产精品久久久久久亚洲av鲁大| 老司机影院成人| 免费av不卡在线播放| 精品免费久久久久久久清纯| 成人一区二区视频在线观看| 久久久久久久久久黄片| 久久久久久久久久久丰满| 婷婷色综合大香蕉| h日本视频在线播放| 深夜精品福利| 老师上课跳d突然被开到最大视频| 精华霜和精华液先用哪个| 国产视频内射| 欧美一区二区精品小视频在线| 亚洲va在线va天堂va国产| 国产黄片美女视频| 精品免费久久久久久久清纯| 小蜜桃在线观看免费完整版高清| 少妇的逼好多水| 丝袜喷水一区| 亚洲综合色惰| 亚洲久久久久久中文字幕| 亚洲精品日韩av片在线观看| 国产亚洲欧美98| 亚洲精品久久久久久婷婷小说 | 国产国拍精品亚洲av在线观看| 老师上课跳d突然被开到最大视频| 菩萨蛮人人尽说江南好唐韦庄 | 一本久久精品| 在线观看66精品国产| 青青草视频在线视频观看| 亚洲精华国产精华液的使用体验 | 久久久精品大字幕| 日日撸夜夜添| 又爽又黄a免费视频| 久久精品国产清高在天天线| 久久精品国产亚洲av天美| 哪个播放器可以免费观看大片| 久久精品国产99精品国产亚洲性色| 2021天堂中文幕一二区在线观| 亚洲成a人片在线一区二区| 此物有八面人人有两片| 欧美xxxx性猛交bbbb| 日韩精品青青久久久久久| 一级黄片播放器| 神马国产精品三级电影在线观看| 久久精品夜色国产| 亚洲精品乱码久久久久久按摩| 非洲黑人性xxxx精品又粗又长| 日韩一本色道免费dvd| 最近2019中文字幕mv第一页| 亚洲精品自拍成人| 少妇熟女欧美另类| 成年女人看的毛片在线观看| 能在线免费看毛片的网站| 欧美日韩综合久久久久久| 18禁裸乳无遮挡免费网站照片| 白带黄色成豆腐渣| 亚洲精品影视一区二区三区av| 久久鲁丝午夜福利片| 一区二区三区四区激情视频 | 免费观看人在逋| 国内精品一区二区在线观看| 两个人视频免费观看高清| 久久久久久久久久久免费av| 毛片一级片免费看久久久久| 久久久久国产网址| 欧美zozozo另类| 黄色日韩在线| 高清毛片免费观看视频网站| 欧美日韩一区二区视频在线观看视频在线 | 三级男女做爰猛烈吃奶摸视频| 国模一区二区三区四区视频| 你懂的网址亚洲精品在线观看 | 精品一区二区三区视频在线| ponron亚洲| 国产人妻一区二区三区在| 国内少妇人妻偷人精品xxx网站| 欧美xxxx性猛交bbbb| 日产精品乱码卡一卡2卡三| 国产精品一二三区在线看| 亚洲欧美日韩无卡精品| 欧美成人免费av一区二区三区| 亚洲欧洲国产日韩| 级片在线观看| 国产精品人妻久久久影院| 99热精品在线国产| 国产成人精品婷婷| 啦啦啦韩国在线观看视频| 成年女人永久免费观看视频| 国产精品人妻久久久久久| 午夜亚洲福利在线播放| 国产伦精品一区二区三区四那| 久久精品国产清高在天天线| 高清在线视频一区二区三区 | 中文欧美无线码| 亚洲av电影不卡..在线观看| 国产蜜桃级精品一区二区三区| 久久人妻av系列| 亚洲av免费在线观看| 国产日韩欧美在线精品| 国产精品日韩av在线免费观看| 亚洲人成网站在线观看播放| 综合色av麻豆| 亚洲在线观看片| 久久精品影院6| 日韩成人伦理影院| 日日摸夜夜添夜夜爱| 亚洲人成网站在线播放欧美日韩| 国产淫片久久久久久久久| 亚洲精品久久久久久婷婷小说 | 18禁裸乳无遮挡免费网站照片| 人妻夜夜爽99麻豆av| 99热全是精品| 日本色播在线视频| 又爽又黄a免费视频| 麻豆国产97在线/欧美| 国产伦一二天堂av在线观看| 六月丁香七月| 精品一区二区三区人妻视频| 欧美色欧美亚洲另类二区| 久久精品国产自在天天线| 国产乱人偷精品视频| 国产一区亚洲一区在线观看| 午夜免费男女啪啪视频观看| 国产精品女同一区二区软件| 久久久久久久久久久免费av|