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

    支持分頁(yè)顯存的高性能哈希表索引系統(tǒng)①

    2022-09-20 04:10:42熊軼翔蔣筱斌武延軍

    熊軼翔, 蔣筱斌, 張 珩, 武延軍

    1(中國(guó)科學(xué)院 軟件研究所, 北京 100190)

    2(中國(guó)科學(xué)院大學(xué), 北京 100049)

    1 引言

    哈希表(hash table), 也稱(chēng)散列表, 是一種根據(jù)關(guān)鍵碼值技術(shù)(key value)來(lái)為大規(guī)模數(shù)據(jù)提供直接訪(fǎng)問(wèn)操作的數(shù)據(jù)結(jié)構(gòu), 其通過(guò)將關(guān)鍵碼值映射到表中的一個(gè)位置來(lái)訪(fǎng)問(wèn)記錄數(shù)據(jù), 以O(shè)(1)時(shí)間復(fù)雜度來(lái)加快數(shù)據(jù)查找速度. 哈希表作為一種廣泛采用的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和核心算法, 為程序提供對(duì)各類(lèi)數(shù)據(jù)(文本、流媒體、結(jié)構(gòu)型數(shù)據(jù)等)高吞吐、低時(shí)延的增刪查改操作. 隨著數(shù)據(jù)規(guī)模的不斷擴(kuò)大和各類(lèi)應(yīng)用對(duì)高性能的需求, 哈希表技術(shù)在當(dāng)前數(shù)據(jù)庫(kù)軟件、系統(tǒng)軟件和應(yīng)用軟件中都得到了大規(guī)模采用.

    在深度學(xué)習(xí)框架TensorFlow和PyTorch對(duì)稀疏矩陣的處理中, 哈希表的應(yīng)用大幅度提高存儲(chǔ)效率, 也保證了數(shù)據(jù)塊的吞吐低延遲; 在大規(guī)模數(shù)據(jù)處理應(yīng)用(圖處理[1,2])中, 哈希表的高效查詢(xún)作用至關(guān)重要. 此外, 哈希表作為數(shù)據(jù)庫(kù)系統(tǒng)的核心模塊[3-6], 頻繁地被大規(guī)模并發(fā)事務(wù)的索引、更新、刪除等操作調(diào)用. 在游戲應(yīng)用領(lǐng)域, 對(duì)動(dòng)輒上百萬(wàn)體素的游戲模型修改和訪(fǎng)問(wèn)[7],哈希表提供系統(tǒng)的可靠性保障. 由于哈希表作為各類(lèi)系統(tǒng)的核心數(shù)據(jù)結(jié)構(gòu)來(lái)使用, 因此, 對(duì)于哈希表的高性能優(yōu)化能使整體系統(tǒng)的性能、可擴(kuò)展性各方面得到大幅度提升[6,8,9]. 如何進(jìn)一步優(yōu)化哈希表性能以及在各類(lèi)新型的并行計(jì)算機(jī)架構(gòu)上設(shè)計(jì)高性能哈希表一直是學(xué)術(shù)界和工業(yè)界重點(diǎn)關(guān)注的研究領(lǐng)域. 當(dāng)前的研究對(duì)哈希表的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、并行度優(yōu)化、索引沖突等多方面開(kāi)展各類(lèi)工作. 在并行哈希表的優(yōu)化上, 這類(lèi)研究工作多基于多核CPU架構(gòu)開(kāi)展, 設(shè)計(jì)了面向非統(tǒng)一內(nèi)存訪(fǎng)問(wèn)(NUMA)、對(duì)稱(chēng)多處理(SMP)等高性能服務(wù)器架構(gòu)的哈希表結(jié)構(gòu)優(yōu)化[10], 并通過(guò)融合其他數(shù)據(jù)結(jié)構(gòu)(如索引樹(shù)形、環(huán)形緩存隊(duì)列等)以提高哈希表的并行處理性能, 降低多線(xiàn)程下的哈希索引沖突. 隨著高性能的體系結(jié)構(gòu)發(fā)展, 通用圖形處理器(GPU)作為協(xié)處理器的性能得到了大幅度提升. 單塊GPU處理單元提供了萬(wàn)級(jí)以上線(xiàn)程數(shù)的高并行計(jì)算能力和高于100 GB/s顯存帶寬, 大幅提高高通量工作負(fù)載的性能, 例如, 單塊NVIDIA V100 GPU卡提供了多達(dá)5 120流處理單元. 高性能哈希表的研究工作開(kāi)始利用協(xié)處理GPU的大規(guī)模并行和高性?xún)r(jià)比的優(yōu)勢(shì)來(lái)優(yōu)化哈希表的大規(guī)模并發(fā)散列事務(wù)操作[7,11], 例如, 英偉達(dá)cudpp[12,13]設(shè)計(jì)靜態(tài)哈希操作, 顯著地提高了數(shù)據(jù)索引性能, 相對(duì)比sorted array[14]、cuckoo[15]等各類(lèi)CPU索引方法性能提升1-3倍[12,16]. 在對(duì)于GPU哈希操作的優(yōu)化中, 相同哈希值的鍵值對(duì)無(wú)法存放在哈希表中的相同位置導(dǎo)致了GPU大規(guī)模線(xiàn)程間哈希沖突(溢出處理)開(kāi)銷(xiāo), 因此GPU哈希表工作著重于優(yōu)化GPU內(nèi)并行處理來(lái)離散線(xiàn)程間訪(fǎng)問(wèn), 降低索引沖突. 進(jìn)而, GPU哈希表研究衍生出動(dòng)態(tài)哈希和靜態(tài)哈希兩類(lèi)工作.

    通過(guò)前期的調(diào)研, 目前主流的GPU哈希操作主要使用cuckoo哈希算法的靜態(tài)哈希, 在插入和查找時(shí)采用固定大小的GPU顯存預(yù)分配, 因而其并行度更為線(xiàn)性, 整體性能高, 然而由于預(yù)分配需要占用大量GPU顯存空間, 導(dǎo)致GPU顯存利用率地下, 缺乏可擴(kuò)展性;而使用“桶”策略的動(dòng)態(tài)哈希表在具備了可擴(kuò)展性的同時(shí)彈性的“桶”緩存分配帶來(lái)了一定的顯存操作開(kāi)銷(xiāo),其整體性能略遜于靜態(tài)哈希策略. 具體地, 表1給出了當(dāng)前GPU哈希策略方法的優(yōu)缺點(diǎn)對(duì)比.

    表1 靜態(tài)哈希與動(dòng)態(tài)哈希對(duì)比

    然而, 高性能哈希表的研究多采用單一設(shè)計(jì)模式,即選擇性地構(gòu)建靜態(tài)哈希或動(dòng)態(tài)哈希, 沒(méi)有很好融合這兩類(lèi)哈希表的優(yōu)點(diǎn), 同時(shí), 由于GPU顯存占用率非常高,在顯存不足以存放整張哈希表時(shí)整體系統(tǒng)無(wú)法正常運(yùn)行. 綜上, 現(xiàn)有GPU高性能哈希表的研究工作仍然存在如下兩類(lèi)缺陷: (1)由于GPU全局顯存的局限性(如V100 GPU提供32 GB DDR5全局顯存), 現(xiàn)有工作受限于存放大規(guī)模的哈希表結(jié)構(gòu), 無(wú)法支持超過(guò)GPU顯存的哈希事務(wù), 整體系統(tǒng)的可擴(kuò)展性和彈性受到限制;(2)隨著數(shù)據(jù)量不斷增大, 導(dǎo)致以多核優(yōu)化的哈希表方法無(wú)法滿(mǎn)足高性能的數(shù)據(jù)索引操作. GPU顯存資源在同一時(shí)間會(huì)有多個(gè)任務(wù)同時(shí)需要占用, 導(dǎo)致留給高性能哈希表的空間不足以處理更多的并發(fā)訪(fǎng)問(wèn)事務(wù). 當(dāng)空間不足但是任務(wù)所需要處理的數(shù)據(jù)量較大時(shí), 目前的哈希表設(shè)計(jì)就略顯不足了. 因此, 對(duì)哈希表結(jié)構(gòu)的空間結(jié)構(gòu)的壓縮和數(shù)據(jù)結(jié)構(gòu)的分布優(yōu)化顯得至關(guān)重要.

    本文聚焦于結(jié)合靜態(tài)哈希和動(dòng)態(tài)哈希各自的優(yōu)點(diǎn),借鑒Linux的頁(yè)面交換機(jī)制, 設(shè)計(jì)一種兼具高性能和高擴(kuò)展性且對(duì)于顯存空間受限GPU架構(gòu)的全新高性能哈希表結(jié)構(gòu)和方法. 本文將傳統(tǒng)的哈希表分割為多個(gè)子表(文中可能同時(shí)稱(chēng)作子表或ChildTable), 并使用子表來(lái)支持GPU優(yōu)化, 通過(guò)stream支持流水線(xiàn)insert操作, 利用GPU多線(xiàn)程機(jī)制支持search以及delete, 相對(duì)現(xiàn)有工作提升了insert操作性能1.5-2倍. 本文主要貢獻(xiàn)如下:

    (1)針對(duì)GPU顯存占用過(guò)高以及靜態(tài)哈希表插入性能缺陷問(wèn)題, 本文首次提出多子表技術(shù), 即構(gòu)建層級(jí)頁(yè)表機(jī)制來(lái)將結(jié)構(gòu)過(guò)大的哈希表分解為多個(gè)小結(jié)構(gòu)表來(lái)統(tǒng)一管理; 構(gòu)建局部GPU顯存駐留策略, 以支持同一時(shí)刻只需駐留少部分子表的GPU工作流, 大大降低GPU顯存占用率.

    (2)進(jìn)一步, 本文設(shè)計(jì)了Starfish原型系統(tǒng), 以支持各類(lèi)GPU哈希表操作, 不限于select/insert以及update操作, 并優(yōu)化多子表技術(shù)將insert操作流水線(xiàn)化, 在提升并行度的同時(shí)大幅度降低插入失敗時(shí)重新哈希表結(jié)構(gòu)構(gòu)建開(kāi)銷(xiāo).

    (3)實(shí)驗(yàn)結(jié)果表明, 在多類(lèi)現(xiàn)實(shí)標(biāo)準(zhǔn)數(shù)據(jù)集上的測(cè)試, Starfish在insert以及重新構(gòu)建的性能方面, 相對(duì)于NVIDIA最新的GPU哈希表工作cudpp-Hash顯著提高了1.5-2倍; 顯存占用量降低為cudpp-Hash的5%-10%以及SlabHash的1%-2%.

    2 相關(guān)工作

    2.1 面向GPU的高性能哈希表

    隨著各類(lèi)高性能協(xié)處理器單元(如GPU)的架構(gòu)性能不斷提升, 當(dāng)前的學(xué)術(shù)研究方向開(kāi)始轉(zhuǎn)向利用GPU服務(wù)器來(lái)設(shè)計(jì)高性能的哈希表操作. 相對(duì)比CPU處理器上有限線(xiàn)程的并行計(jì)算環(huán)境, 通過(guò)GPU協(xié)處理器上基于單指令多數(shù)據(jù)流(SIMD)芯片架構(gòu)特性來(lái)構(gòu)建全新的哈希表并行事務(wù)策略的處理性能得到了顯著提升, 提升了若干數(shù)量級(jí)[12,13,18,19]. 各類(lèi)并行哈希操作的優(yōu)化工作利用GPU等大規(guī)模并行硬件特性來(lái)進(jìn)行加速, 主要通過(guò)如下兩個(gè)方面進(jìn)行: 1) SIMT架構(gòu)為哈希表的并行操作提供了只讀性事務(wù)的大規(guī)模并行;2)高內(nèi)存帶寬為哈希表的數(shù)據(jù)訪(fǎng)問(wèn)帶來(lái)了大數(shù)據(jù)量的訪(fǎng)問(wèn)吞吐提升以及高效的原子性操作. GPU哈希表cudpp-Hash[12,13]利用的cuckoo哈希方法以及公共溢出區(qū)策略, 第一次提出了標(biāo)準(zhǔn)的GPU下哈希操作, 被廣泛應(yīng)用于NVIDIA下的各類(lèi)算法庫(kù)[18,19]. 通常地, 現(xiàn)有GPU哈希工作主要分為兩類(lèi): 一類(lèi)是面向靜態(tài)GPU顯存空間分配的靜態(tài)哈希表, 另一類(lèi)是以動(dòng)態(tài)頁(yè)表方式提供彈性GPU顯存優(yōu)化的動(dòng)態(tài)哈希表. 這兩類(lèi)工作各有所長(zhǎng), 具體如本節(jié)接下來(lái)所述.

    2.2 靜態(tài)哈希相關(guān)研究工作

    面向GPU的靜態(tài)哈希表都是基于cuckoo策略[15]來(lái)處理哈希沖突, 但也有不使用cuckoo策略的哈希表設(shè)計(jì), 例如Khorasani等人提出的stadium hash[20]在解決沖突的時(shí)候不會(huì)驅(qū)逐原有的鍵值對(duì), 而是直接尋找下一個(gè)合適的位置. 最經(jīng)典的GPU靜態(tài)哈希表為Alcantara等人提出的cudpp-Hash[12,13,16], 已被Nvidia作為標(biāo)準(zhǔn)哈希庫(kù)推出, 其算法策略采用cuckoo實(shí)現(xiàn), 此外還加入了stash的機(jī)制來(lái)盡量減少插入失敗的頻率. cuckoo的多個(gè)備用哈希函數(shù)機(jī)制會(huì)帶來(lái)重復(fù)探測(cè)次數(shù)過(guò)多而導(dǎo)致的性能下降問(wèn)題, 因此Breslow等人提出的Horton table[21]使用了一種緊湊的數(shù)據(jù)結(jié)構(gòu)來(lái)存放鍵值對(duì)使用的備用哈希函數(shù)索引, 以減小重復(fù)探測(cè)的次數(shù). 除此之外, 與cudpp類(lèi)似且比較能適應(yīng)大規(guī)模并行的哈希表還有使用羅賓漢哈希方法[22]的 coherent parallel hashing[23], 但是同樣面臨著靜態(tài)哈希的常見(jiàn)困境.

    2.3 動(dòng)態(tài)哈希相關(guān)研究工作

    Ashkiani等人提出了一種面向GPU的動(dòng)態(tài)哈希表SlabHash[17], 利用動(dòng)態(tài)哈希“桶”的思想避開(kāi)了處理哈希沖突的挑戰(zhàn), 而是在發(fā)生哈希沖突時(shí)將鍵值對(duì)直接插入目標(biāo)“桶”中. 在進(jìn)行事務(wù)操作過(guò)程中, 以warp為單位并大量使用ballot、shuffle等warp內(nèi)部通信的API來(lái)加速處理. 此外還設(shè)計(jì)了SlabAlloc機(jī)制來(lái)以warp為單位動(dòng)態(tài)分配新的slab空間. 這樣的實(shí)現(xiàn)在用戶(hù)看來(lái)是動(dòng)態(tài)的, 且不會(huì)像靜態(tài)哈希那樣發(fā)生插入失敗的問(wèn)題, 但實(shí)際上是以較大的顯存空間浪費(fèi)為代價(jià)的.

    作為最新的GPU哈希表研究工作, slab hash[17]和stadium hash[20]基于GPU架構(gòu)提出了當(dāng)前性能和可擴(kuò)展性較好的設(shè)計(jì), 其中slab hash是一類(lèi)典型的動(dòng)態(tài)哈希表, stadium hash是一種靜態(tài)的哈希表. 此外, 已廣泛應(yīng)用于NVIDIA RAPIDS框架[19]的cuDF哈希策略和HashGraph[24]兩種哈希表的實(shí)現(xiàn)更加具有可擴(kuò)展性和靈活性, 然而由于其采用過(guò)高顯存頻率操作而造成內(nèi)存性能瓶頸, 導(dǎo)致了嚴(yán)重的性能抖動(dòng).

    2.4 當(dāng)前工作在局限GPU顯存條件下存在的缺陷

    從目前研究工作來(lái)看, GPU哈希表策略大多基于將整個(gè)哈希表存放于顯存中來(lái)設(shè)計(jì)的, 但是如果哈希表太大而GPU所剩的顯存空間無(wú)法滿(mǎn)足要求時(shí), 這些設(shè)計(jì)就無(wú)法正確運(yùn)行起來(lái). 因此Khorasani等人提出的stadium hash[20]提出了一種out-of-core的策略, 用戶(hù)可以自行選擇將哈希表存放于顯存或者主存, 當(dāng)存放于主存時(shí), stadium hash使用一種ticket board的機(jī)制來(lái)減少顯存與主存之間不必要的PCI-E交換, 以此達(dá)到降低使用鎖頁(yè)內(nèi)存帶來(lái)的性能損耗. 另外同樣使用類(lèi)似out-of-core方法的哈希表還有Hopscotch hashing[25]和Cache-Oblivious hashing[26].

    3 挑戰(zhàn)及應(yīng)對(duì)

    總結(jié)GPU哈希表設(shè)計(jì)面臨的技術(shù)挑戰(zhàn)如下.

    3.1 挑戰(zhàn)1: 哈希表鍵值對(duì)在沖突處理的開(kāi)銷(xiāo)過(guò)大

    傳統(tǒng)的靜態(tài)哈希表在發(fā)現(xiàn)某個(gè)鍵值對(duì)完全無(wú)法插入的情況下(failure)則會(huì)重建整張表, 當(dāng)這種事件發(fā)生在整個(gè)建表的尾期時(shí), 則將會(huì)將前期所有完成的工作都丟棄然后進(jìn)行重新構(gòu)建(restart), 這樣會(huì)造成極大的浪費(fèi). 因此本文擬提出一種failure處理機(jī)制, 將failure的影響范圍縮小到一個(gè)較小的區(qū)間, 在這個(gè)區(qū)間內(nèi)進(jìn)行restart, 將整個(gè)failure處理的過(guò)程都控制在這個(gè)區(qū)間內(nèi), 這樣發(fā)生failure之后和進(jìn)行restart都不至于影響整個(gè)哈希表. 發(fā)生failure的后果就是影響建表性能,因此本文的設(shè)計(jì)旨在降低failure對(duì)于性能的影響.

    3.2 挑戰(zhàn)2: 無(wú)法支持GPU顯存外哈希表索引

    由于GPU協(xié)處理器的顯存資源有限, 因此每個(gè)應(yīng)用程序在占用GPU顯存時(shí)所能獲得的資源多采用共享GPU顯存模式, 即各自占用百分比顯存空間, 這將導(dǎo)致在GPU顯存空間受限情況下大規(guī)模哈希表結(jié)構(gòu)無(wú)法完整緩存于GPU顯存空間, 將導(dǎo)致整體的性能和可擴(kuò)展性受限. 通過(guò)前期調(diào)研, 當(dāng)前GPU哈希表的實(shí)現(xiàn)均在顯存可容納整張表或者整張表完全放在pinned memory的前提下開(kāi)展研究, 然而有限顯存空間無(wú)法容納整張哈希表; 若干工作提出利用統(tǒng)一地址空間對(duì)GPU顯存擴(kuò)展[20], 然而這類(lèi)哈希事務(wù)的訪(fǎng)問(wèn)仍需要利用PCI-E來(lái)進(jìn)行大量的host端和GPU device端的數(shù)據(jù)交換操作, 導(dǎo)致數(shù)據(jù)訪(fǎng)問(wèn)效率低下. 因此, 本文提出了一套全新的GPU核外計(jì)算(out-of-GPU-memory)的策略, 將哈希表中暫時(shí)不用的子表緩存空間從顯存中交換(swap)到host端主存中, 而當(dāng)前需要訪(fǎng)問(wèn)的熱度哈希表部分則駐留在GPU顯存中. 此外, 通過(guò)自定義顯存駐留表大小和數(shù)目, 本文設(shè)計(jì)了顯存的占用的彈性伸縮機(jī)制, 根據(jù)用戶(hù)配置項(xiàng)設(shè)置顯存空間占用.

    上述的全新哈希表結(jié)構(gòu)設(shè)計(jì)對(duì)于局部性的GPU顯存訪(fǎng)問(wèn)模式來(lái)說(shuō), 不會(huì)因?yàn)閿?shù)據(jù)在主存中而降低讀寫(xiě)速度, 反而會(huì)因?yàn)椴怀S玫臄?shù)據(jù)不占用顯存空間而節(jié)省空間, 讓同一個(gè)進(jìn)程的其他部分甚至其他CUDA進(jìn)程獲得更多可用的顯存空間.

    3.3 挑戰(zhàn)3: 可擴(kuò)展性與性能缺陷

    針對(duì)當(dāng)前的動(dòng)態(tài)哈希和靜態(tài)哈希優(yōu)缺點(diǎn)和高性能的技術(shù)挑戰(zhàn), 本文提出了一種新的基于頁(yè)表切分區(qū)域管理的哈希表數(shù)據(jù)結(jié)構(gòu)表示, 以融合兩種哈希表的高性能和高可擴(kuò)展性?xún)?yōu)勢(shì). 進(jìn)一步, 本文設(shè)計(jì)了哈希表原型系統(tǒng)StarFish以支持上層的高性能哈希應(yīng)用, 支持各類(lèi)增刪改查的哈希表事務(wù)操作.

    4 方案設(shè)計(jì)

    本文聚焦于結(jié)合動(dòng)態(tài)哈希表和靜態(tài)哈希表各自的優(yōu)點(diǎn), 基于分層頁(yè)表機(jī)制提出了一種全新的GPU動(dòng)態(tài)化顯存頁(yè)分配與靜態(tài)操作的哈希表——Starfish, 并且具備低顯存的能力.

    4.1 Starfish架構(gòu)設(shè)計(jì)

    面向GPU的哈希表系統(tǒng)Starfish的總體技術(shù)架構(gòu)圖如圖1所示. 頂層架構(gòu)分為兩個(gè)部分: 主控邏輯端(host)的CPU處理器主內(nèi)存的Daemon模塊(圖1中的①)、事務(wù)性哈希表數(shù)據(jù)I/O模塊②以及協(xié)處理器控制邏輯GPU執(zhí)行部分(kernel計(jì)算服務(wù)模塊③).

    圖1 Starfish 整體架構(gòu)

    其中, Daemon主控邏輯①用于管理整個(gè)系統(tǒng), 記錄了當(dāng)前的子表數(shù)、駐留在GPU中的子表索引, 以及指向主存和顯存中多個(gè)子表的指針. 一個(gè)頁(yè)面(子表)就是一個(gè)可以向下兼容的完整的底層哈希表, 可以使用cudpp-Hash、horton table等來(lái)作為底層哈希表.具體地, Starfish的數(shù)據(jù)I/O模塊②通過(guò)構(gòu)建頁(yè)表的數(shù)據(jù)結(jié)構(gòu)(ChildTable, 子表)方式來(lái)對(duì)動(dòng)態(tài)哈希頁(yè)進(jìn)行統(tǒng)一化管理; 所有的底層哈希表(稱(chēng)為子表)以固定內(nèi)存頁(yè)(默認(rèn)情況下64 MB)形式進(jìn)行構(gòu)建, 其組成形式以若干

    通過(guò)如上的架構(gòu)設(shè)計(jì), Starfish構(gòu)建了子表內(nèi)存頁(yè)的獨(dú)立緩存空間, 通過(guò)對(duì)大規(guī)模的哈希表結(jié)構(gòu)進(jìn)行均衡切分和輪轉(zhuǎn)實(shí)現(xiàn)局部獨(dú)立處理. 此外, Starfish系統(tǒng)支持動(dòng)態(tài)增減子表的數(shù)目, 不僅能夠?yàn)樯蠈拥墓1淼乃饕僮魈峁╈o態(tài)哈希表策略的高性能操作, 而且通過(guò)彈性化的GPU顯存控制, 實(shí)現(xiàn)了動(dòng)態(tài)化大規(guī)模哈希表應(yīng)用.

    4.2 面向局限GPU顯存空間的哈希表事務(wù)優(yōu)化

    由于GPU顯存空間的局限性, 大規(guī)模哈希表事務(wù)操作無(wú)法完整地利用GPU進(jìn)行并行操作, 這也帶來(lái)了目前各類(lèi)哈希表的高性能操作的可擴(kuò)展性局限. 為了解決大規(guī)模哈希表結(jié)構(gòu)在CPU-GPU之間的高效吞吐問(wèn)題, Starfish基于CUDA Streaming對(duì)象策略, 在ChildTable數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上構(gòu)建了高效的哈希表內(nèi)存頁(yè)置換策略. 通過(guò)設(shè)置哈希表數(shù)據(jù)緩存區(qū)大小閾值,Starfish在哈希表數(shù)據(jù)量只夠部分存放于GPU顯存空間情況下, 自動(dòng)地啟用CPU與GPU間數(shù)據(jù)I/O輪轉(zhuǎn)策略, 將整體的哈希操作進(jìn)行均衡切分, 存放哈希表的部分于顯存. 下面, 本小節(jié)將對(duì)Starfish所支持的哈希表操作的插入(insert)、檢索(search)等關(guān)鍵操作的實(shí)現(xiàn)流程進(jìn)行詳細(xì)闡述.

    4.2.1 基于CUDA Streaming異步策略的插入操作

    在哈希表插入操作(insert)過(guò)程中, 無(wú)需把所有的輸入數(shù)據(jù)和整個(gè)哈希表都存放于顯存中. 如圖2所示,在輸入(input)哈希事務(wù)為3個(gè)事務(wù)數(shù)據(jù)列表時(shí), 每段輸入事務(wù)數(shù)據(jù)列表長(zhǎng)度相等且都為默認(rèn)的100萬(wàn)個(gè)鍵值對(duì), 允許最后一段長(zhǎng)度小于其他段. 在顯存上只開(kāi)辟兩段對(duì)應(yīng)的input事務(wù)列表空間以及兩段ChildTable空間. 以圖2為例, Starfish的插入過(guò)程: (1)考慮到GPU緩存空間局限, 將只對(duì)input1和input2的插入事務(wù)列表加載至GPU顯存空間. 進(jìn)一步據(jù)這兩個(gè)事務(wù)集合構(gòu)建GPU哈希表內(nèi)存頁(yè)ChildTable1和ChildTable2;進(jìn)而, input3插入事務(wù)集合的執(zhí)行無(wú)法完整地緩存至GPU顯存空間, 因此Starfish將ChildTable1從顯存中傳輸?shù)街鳈C(jī)上存放, 并且將input3加載至顯存, 在原有ChildTable1的緩存空間構(gòu)建ChildTable3顯存頁(yè); 以此操作循環(huán), 直至將所有的插入事務(wù)集合處理完成, 并且所有ChildTable數(shù)組都傳輸?shù)紺PU主存端備份. 由于對(duì)多個(gè)互相獨(dú)立的ChildTable操作獨(dú)立化, 因此Starfish在構(gòu)建插入事務(wù)哈希表空間時(shí)實(shí)現(xiàn)了高性能的并行加載和備份機(jī)制. 進(jìn)一步, 基于CUDA Streaming對(duì)象策略, Starfish CUDA通過(guò)設(shè)置若干個(gè)Stream來(lái)異步化ChildTable內(nèi)存頁(yè)的CPU-GPU的I/O操作和GPU核函數(shù)的并行執(zhí)行, 通過(guò)對(duì)不同ChildTable構(gòu)建任務(wù)異步化, 從而能讓不同ChildTable的PCI-E數(shù)據(jù)傳輸和kernel運(yùn)行同時(shí)進(jìn)行, 隱藏?cái)?shù)據(jù)傳輸時(shí)間或者kernel運(yùn)行時(shí)間.

    圖2 Starfish 哈希表事務(wù) insert 操作

    算法 1. Insert偽代碼(1) FUNCTION(Keys, Vals)(2) myKey = Kyes[myId]; myVal = Vals[myId];(3) myKV = makeKV(myKey, myVal);(4) myLocation = hashFunction(constants[0], myKey);(5) FOR I in 1 to maxAttempts do(6) KV = atomicExch(table[location], myKV);(7) IF KV is EMPTY or DELETED THEN break;(8) END IF(9) determine_next_location(KV);(10) END FOR(11) IF KV is not EMPTY THEN(12) IF TryToInsertIntoStash(KV) is successed THEN(13) RETURN true;(14) END IF(15) RETURN false;(16) END IF(17) RETURN true;(18) END FUNCTION

    4.2.2 基于順序粒度組合的高效索引(search)操作

    如圖3中所示, 在索引(search)過(guò)程中, 考慮到各個(gè)索引查詢(xún)(query)的粒度大小對(duì)于整個(gè)表的緩存空閑相對(duì)較小, 因此將所有查詢(xún)集合(queries)操作放入顯存空間后再進(jìn)行并行事務(wù)操作更為適合. 以圖3為例, 具體的查找過(guò)程如下: (1) Starfish構(gòu)建統(tǒng)一化query查詢(xún)數(shù)組對(duì)各個(gè)查詢(xún)事務(wù)進(jìn)行組合封裝形成查詢(xún)集, 歸并后加載至GPU顯存后, 執(zhí)行索引GPU核函數(shù)在GPU哈希緩存頁(yè)中進(jìn)行并行檢索. ChildTable1和ChildTable2內(nèi)存頁(yè)為階段性緩存于GPU內(nèi)存頁(yè)中,GPU將執(zhí)行檢索(search)核操作對(duì)所有輸入的查詢(xún)事務(wù)集合并行檢索. 然而, 在檢索過(guò)程中, 由于存在哈希索引沖突, 為了進(jìn)一步降低被重新索引開(kāi)銷(xiāo), 我們將成功哈希檢索到的鍵值key在查詢(xún)集合(queries)中置空.(4)在對(duì)ChildTable1和ChildTable2的操結(jié)束作之后,Starfish將ChildTable1內(nèi)存頁(yè)置換到主機(jī)內(nèi)存上, 然后將ChildTable3放入顯存, 再在ChildTable3上對(duì)查詢(xún)集合中還未被成功查找到的queries進(jìn)行查找.

    圖3 Starfish 哈希表事務(wù) search 操作

    4.3 基于高并發(fā)的 Starfish 哈希事務(wù)核函數(shù)優(yōu)化

    在GPU的SIMD編程模式下, GPU中的若干個(gè)線(xiàn)程可以并行運(yùn)行相同的代碼, 考慮到Starfish已經(jīng)具備了動(dòng)態(tài)插入的功能, 因此在核函數(shù)的設(shè)計(jì)中沿用了傳統(tǒng)的cuckoo策略來(lái)提高插入/查找的性能. 為了增強(qiáng)子表的容錯(cuò)性, Starfish在每個(gè)子表末尾增加了108個(gè)

    插入過(guò)程的核函數(shù)的偽代碼如算法1所示, 在第2-4行中每個(gè)線(xiàn)程從輸入的

    算法 2. Search偽代碼(1) FUNCTION(Queries, Outputs)(2) myKey = Queries[myId];(3) IF myKey is EMPTY THEN RETURN;(4) END IF(5) FOR j in 0 to numFunc do(6) location = hashFunction(constants[i], myKey);(7) KV = table[location];(8) IF getKey[KV] equals myKey THEN(9) Outputs[myId] = getVal[KV];(10) Queries[myId] = EMPTY; RETURN;(11) END IF(12) END FOR(13) Location = SearchInStash(myKey);(14) IF location is valid THEN(15) Outputs[myId] = stash[location];(16) Queries[myId] = EMPTY;(17) RETURN;(18) END IF(19) RETURN;(20) END FUNCTION

    查找過(guò)程核函數(shù)的偽代碼如算法2所示, 第2行從輸入請(qǐng)求查找數(shù)組中取出鍵, 第5-12行按照候選哈希函數(shù)的順序?qū)︽I進(jìn)行單詞或多次探測(cè), 若成功命中則將請(qǐng)求查找數(shù)組中當(dāng)前鍵的位置置空, 以避免接下來(lái)在其他子表中對(duì)其重復(fù)查找.

    5 實(shí)驗(yàn)和結(jié)果分析

    5.1 實(shí)驗(yàn)環(huán)境及數(shù)據(jù)

    實(shí)驗(yàn)運(yùn)行環(huán)境為Ubuntu 16.09, GPU為NVIDIA P100 12 GB, 代碼為C++, 用于測(cè)試的數(shù)據(jù)為隨機(jī)生成的不重復(fù)key的鍵值對(duì)序列. 本節(jié)會(huì)將Starfish與經(jīng)典的靜態(tài)哈?!猚udpp-Hash以及經(jīng)典的動(dòng)態(tài)哈希—SlabHash進(jìn)行對(duì)比, 將Starfish中每個(gè)ChildTable的容量設(shè)為最高100萬(wàn)個(gè)鍵值對(duì).

    5.2 哈希表構(gòu)建性能評(píng)估

    正常情況下, 哈希表構(gòu)建或者插入的時(shí)延應(yīng)該將輸入鍵值對(duì)傳入顯存的時(shí)間計(jì)算在內(nèi), 因此對(duì)于Starfish的構(gòu)建性能評(píng)估將會(huì)包含數(shù)據(jù)傳輸?shù)臅r(shí)間.

    由圖4可以看出, 在數(shù)據(jù)量超過(guò)500萬(wàn)個(gè)鍵值對(duì)時(shí)Starfish-x (這里的x代表顯存中開(kāi)辟的空間可容納x個(gè)ChildTable)的性能得到了顯著提升, 達(dá)到了cudpp-Hash的2倍. 同時(shí)可以發(fā)現(xiàn)ChildTable數(shù)據(jù)量(x)逐步增大時(shí), Starfish的性能表現(xiàn)更為優(yōu)越, 這是因?yàn)镃hild Table數(shù)據(jù)量越大時(shí), 通過(guò)PCI-E進(jìn)行緩存空間swap的頻率越低, 而PCI-E傳輸相對(duì)事務(wù)性并行操作開(kāi)銷(xiāo)較大.

    圖4 構(gòu)建性能對(duì)比

    緩存空間(swap)的頻率越低, 而PCI-E傳輸相對(duì)事務(wù)性并行操作開(kāi)銷(xiāo)較大. 另外, SlabHash-n (n代表平均鏈表長(zhǎng)度)在平均鏈表長(zhǎng)度越大時(shí)要進(jìn)行的平均顯存次數(shù)也會(huì)更大, 所以性能也越低.

    靜態(tài)哈希表在構(gòu)建過(guò)程中還可能發(fā)生插入失敗后重新構(gòu)建的情況, 因此只需要與cudpp-Hash進(jìn)行比較.由圖5可以看出, 在數(shù)據(jù)量超過(guò)100萬(wàn)時(shí), Starfish的重新構(gòu)建性能均超過(guò)了cudpp-Hash, 甚至能達(dá)到cudpp-Hash的兩倍, 這是因?yàn)閏udpp-Hash在插入失敗時(shí)需要重新構(gòu)建整個(gè)表, 而Starfish只需要構(gòu)建當(dāng)前的ChildTable.

    圖5 重新構(gòu)建性能對(duì)比

    5.3 哈希表查找性能評(píng)估

    進(jìn)一步, 本小節(jié)對(duì)Starfish的并發(fā)查找(search)操作的性能進(jìn)行了評(píng)估. 對(duì)比系統(tǒng)包括經(jīng)典的GPU下hash table靜態(tài)哈希表cudpp-Hash和動(dòng)態(tài)哈希表SlabHash(bucket長(zhǎng)度設(shè)置為2), 用以評(píng)估Starfish的查找性能和并發(fā)事務(wù)處理性能.

    如圖6所示, 本文對(duì)這兩類(lèi)哈希表和Starfish分別進(jìn)行了并發(fā)查找性能測(cè)試, 每種表均由800萬(wàn)個(gè)不重復(fù)的鍵值對(duì)進(jìn)行構(gòu)建. 在顯存駐留空間設(shè)置為2個(gè)ChildTable配置的情況下, Starfish-2在并發(fā)查找請(qǐng)求平均分布于第一個(gè)子表和前兩個(gè)子表時(shí), 查找速度顯著優(yōu)于cudpp-Hash和SlabHash, 達(dá)到cudpp-Hash的4.7倍和2.6倍. 這是由于Starfish在并發(fā)量滿(mǎn)足GPU計(jì)算局部性的情況下, 只需要對(duì)駐留于顯存中的子表進(jìn)行查找, 且在駐留子表中查找所用的開(kāi)銷(xiāo)會(huì)遠(yuǎn)低于在整張靜態(tài)哈希表(cudpp-Hash)中查找的開(kāi)銷(xiāo).同時(shí), 在并發(fā)查找請(qǐng)求局部性較差時(shí)(圖6中并發(fā)事務(wù)達(dá)到200萬(wàn)以上), Starfish需要在非駐留子表中進(jìn)行查找, 因此需要通過(guò)PCI-E總線(xiàn)交換子表數(shù)據(jù), 在訪(fǎng)存和CPU主存間的數(shù)據(jù)通信過(guò)程帶來(lái)了一定的開(kāi)銷(xiāo), 因此Starfish的并發(fā)事務(wù)查找速度略低于cudpp-Hash查找性能一半. 進(jìn)一步實(shí)驗(yàn)驗(yàn)證, Starfish-4與Starfish-2在查找性能上表現(xiàn)相似特征. 考慮到真實(shí)業(yè)務(wù)場(chǎng)景中在對(duì)哈希表查找事務(wù)的并發(fā)性要求著重于提供分布式配置優(yōu)化, 本文擬將本部分大規(guī)模并發(fā)性查找事務(wù)的性能優(yōu)化留于未來(lái)工作.

    圖6 并發(fā)查找性能對(duì)比

    5.4 低顯存性能評(píng)估

    對(duì)比現(xiàn)有哈希表的GPU并行化工作, Starfish的性能優(yōu)勢(shì)之一來(lái)源于GPU顯存的節(jié)約效果顯著以及顯存資源的充分利用. 因此, 本文將Starfish與cudpp-Hash以及SlabHash進(jìn)行了顯存占用量的對(duì)比, 評(píng)估中除去了CUDA context的空間, 只關(guān)注于哈希表本身.

    如圖7所示, 在同等輸入規(guī)模下, SlabHash的顯存使用量明顯高于Starfish與cudpp-Hash, 因?yàn)镾labHash以預(yù)分配GPU顯存空間機(jī)制, 在進(jìn)行哈希事務(wù)操作之前提前占用了所有的GPU顯存實(shí)現(xiàn)哈希動(dòng)態(tài)化插入策略, 帶來(lái)了大量的顯存資源開(kāi)銷(xiāo). 而Starfish所占用的顯存空間比cudpp-Hash要明顯降低, 并且Starfish在設(shè)置固定的駐留表數(shù)目之后的顯存占用量不會(huì)隨著輸入規(guī)模的增加而增加, 這也顯著地降低了cudpp-Hash以及SlabHash所帶來(lái)的GPU顯存開(kāi)銷(xiāo). Starfish不僅能夠支持高性能的GPU哈希表操作, 而且提供了相對(duì)更為節(jié)約的GPU顯存空間利用, 為大規(guī)模哈希表操作在GPU上的并行高性能應(yīng)用提供了支撐.

    圖7 顯存使用量對(duì)比

    6 結(jié)語(yǔ)

    針對(duì)目前GPU靜態(tài)哈希表面臨的可擴(kuò)展性差以及failure處理代價(jià)高昂的問(wèn)題, 提出了子表技術(shù)來(lái)應(yīng)對(duì). 對(duì)于動(dòng)態(tài)哈希表面臨的性能不佳問(wèn)題, 提出了在子表技術(shù)的基礎(chǔ)上, 將子表布局為靜態(tài)哈希表來(lái)提高局部性能的思路. 進(jìn)而, 為了應(yīng)對(duì)當(dāng)前GPU顯存資源不足的情況, 將子表技術(shù)結(jié)合頁(yè)面交換機(jī)制, 在保證性能的前提下極大降低了哈希表所占用的顯存空間, 并且在保證并發(fā)查找局部性的前提下顯著提高了查找性能.此外, 具有高可擴(kuò)展性、高性能以及低顯存占用的Starfish哈希表可用于大型數(shù)據(jù)庫(kù)、高性能計(jì)算中超大模型的局部計(jì)算等大數(shù)據(jù)加速任務(wù)當(dāng)中.

    亚洲五月天丁香| 欧美成人免费av一区二区三区| 少妇被粗大猛烈的视频| 91久久精品电影网| 亚洲成人精品中文字幕电影| 日日啪夜夜撸| 黄色丝袜av网址大全| 国产黄色小视频在线观看| 三级国产精品欧美在线观看| 天堂影院成人在线观看| 日本黄大片高清| 乱人视频在线观看| 一级黄色大片毛片| 亚洲内射少妇av| 男人和女人高潮做爰伦理| www日本黄色视频网| 好男人在线观看高清免费视频| 国产高清三级在线| 亚洲一级一片aⅴ在线观看| 中文字幕免费在线视频6| 国产精品人妻久久久影院| 久久精品国产99精品国产亚洲性色| 中亚洲国语对白在线视频| 久久久久性生活片| 国产免费一级a男人的天堂| 国产三级中文精品| 免费看日本二区| 国内精品久久久久精免费| 麻豆精品久久久久久蜜桃| 亚洲中文字幕一区二区三区有码在线看| 亚洲无线观看免费| 变态另类丝袜制服| 精品午夜福利视频在线观看一区| 亚洲欧美日韩无卡精品| 亚洲av免费在线观看| 很黄的视频免费| 身体一侧抽搐| 少妇裸体淫交视频免费看高清| 最新在线观看一区二区三区| 精品不卡国产一区二区三区| 欧美性感艳星| 国产极品精品免费视频能看的| 亚洲最大成人av| 日韩亚洲欧美综合| 最后的刺客免费高清国语| 亚洲精品成人久久久久久| 在线免费观看的www视频| 男人的好看免费观看在线视频| 国产伦精品一区二区三区视频9| 桃色一区二区三区在线观看| 国产成人影院久久av| 一区二区三区四区激情视频 | 少妇人妻一区二区三区视频| 日韩大尺度精品在线看网址| 亚洲乱码一区二区免费版| 久久国产乱子免费精品| 又紧又爽又黄一区二区| 亚洲乱码一区二区免费版| 老熟妇乱子伦视频在线观看| 在线观看午夜福利视频| 亚州av有码| 伦精品一区二区三区| 日韩欧美精品免费久久| 国产淫片久久久久久久久| 午夜福利成人在线免费观看| 久久热精品热| 国产男人的电影天堂91| 国语自产精品视频在线第100页| 久久久久久久久久成人| 午夜免费男女啪啪视频观看 | 亚洲av中文av极速乱 | 97碰自拍视频| 日韩av在线大香蕉| 十八禁国产超污无遮挡网站| 99久久中文字幕三级久久日本| 精品欧美国产一区二区三| 中出人妻视频一区二区| 午夜激情欧美在线| 国产美女午夜福利| 婷婷亚洲欧美| 亚洲国产欧洲综合997久久,| 99在线视频只有这里精品首页| 欧美xxxx性猛交bbbb| a级一级毛片免费在线观看| 嫩草影视91久久| 国产av一区在线观看免费| 大型黄色视频在线免费观看| 亚洲经典国产精华液单| 22中文网久久字幕| 久久天躁狠狠躁夜夜2o2o| 午夜免费男女啪啪视频观看 | www.www免费av| 国产精品一区二区三区四区久久| 91午夜精品亚洲一区二区三区 | 国产高清视频在线播放一区| 欧美日韩瑟瑟在线播放| 欧美黑人巨大hd| 日韩强制内射视频| 国产不卡一卡二| 琪琪午夜伦伦电影理论片6080| 欧美日韩精品成人综合77777| 久久久久久久久中文| 联通29元200g的流量卡| 亚洲最大成人中文| 久久婷婷人人爽人人干人人爱| 中文字幕高清在线视频| 亚洲精品影视一区二区三区av| 色噜噜av男人的天堂激情| 国内精品一区二区在线观看| 赤兔流量卡办理| 亚洲国产欧洲综合997久久,| 欧美一区二区国产精品久久精品| 亚洲狠狠婷婷综合久久图片| 亚洲av电影不卡..在线观看| 简卡轻食公司| 99热这里只有精品一区| 日韩欧美 国产精品| bbb黄色大片| 亚洲成人久久性| 别揉我奶头 嗯啊视频| 精品不卡国产一区二区三区| 成人欧美大片| 精品久久国产蜜桃| 色综合亚洲欧美另类图片| 一区福利在线观看| 成人精品一区二区免费| 久久久久国产精品人妻aⅴ院| 亚洲av免费在线观看| 中出人妻视频一区二区| 少妇高潮的动态图| 免费看a级黄色片| ponron亚洲| xxxwww97欧美| 欧美区成人在线视频| 一级毛片久久久久久久久女| 久久精品国产亚洲av香蕉五月| 亚洲avbb在线观看| 亚洲在线观看片| 熟妇人妻久久中文字幕3abv| 最好的美女福利视频网| 精品一区二区三区av网在线观看| 18禁在线播放成人免费| 中国美白少妇内射xxxbb| 日本-黄色视频高清免费观看| 成人亚洲精品av一区二区| 十八禁国产超污无遮挡网站| 99热这里只有是精品50| av.在线天堂| 国产高清不卡午夜福利| 精华霜和精华液先用哪个| netflix在线观看网站| 最近视频中文字幕2019在线8| 美女xxoo啪啪120秒动态图| 欧美成人免费av一区二区三区| 一级毛片久久久久久久久女| 国产av一区在线观看免费| 赤兔流量卡办理| 久久精品国产鲁丝片午夜精品 | 一本久久中文字幕| x7x7x7水蜜桃| 日本一二三区视频观看| 国产亚洲精品久久久久久毛片| 国产精品美女特级片免费视频播放器| 久久久午夜欧美精品| 日日啪夜夜撸| 亚洲av电影不卡..在线观看| 国产精品久久久久久亚洲av鲁大| 久久精品国产亚洲网站| 舔av片在线| 免费看光身美女| 成年版毛片免费区| 中文字幕免费在线视频6| 国产成人av教育| 黄片wwwwww| 欧美xxxx黑人xx丫x性爽| 日韩一本色道免费dvd| 联通29元200g的流量卡| 久久九九热精品免费| 最近最新免费中文字幕在线| 麻豆国产av国片精品| .国产精品久久| 男女之事视频高清在线观看| av.在线天堂| 国语自产精品视频在线第100页| 亚洲av二区三区四区| av视频在线观看入口| 亚洲无线在线观看| 一卡2卡三卡四卡精品乱码亚洲| 高清日韩中文字幕在线| 久久精品国产鲁丝片午夜精品 | 午夜福利在线观看吧| 亚洲精品一卡2卡三卡4卡5卡| 久久精品国产亚洲av天美| 我要看日韩黄色一级片| 久9热在线精品视频| 国产91精品成人一区二区三区| 日本爱情动作片www.在线观看 | 国产精品无大码| 国产精品三级大全| 亚洲欧美日韩高清专用| 国产极品精品免费视频能看的| 少妇裸体淫交视频免费看高清| 别揉我奶头~嗯~啊~动态视频| 亚洲综合色惰| 日韩欧美精品免费久久| 级片在线观看| 欧美色视频一区免费| 97热精品久久久久久| 白带黄色成豆腐渣| 欧美性猛交黑人性爽| 熟女人妻精品中文字幕| 亚洲一区二区三区色噜噜| 精品久久久久久久久久久久久| 亚洲精品日韩av片在线观看| 久久久久久久亚洲中文字幕| 一进一出好大好爽视频| 12—13女人毛片做爰片一| 久久久久久大精品| 亚洲四区av| 久久久国产成人精品二区| 免费在线观看日本一区| 国内精品宾馆在线| 搞女人的毛片| 九九热线精品视视频播放| 亚洲av一区综合| 在线免费十八禁| 在线观看一区二区三区| 尤物成人国产欧美一区二区三区| 少妇的逼好多水| av视频在线观看入口| 亚洲男人的天堂狠狠| 看免费成人av毛片| 自拍偷自拍亚洲精品老妇| 我要搜黄色片| 又紧又爽又黄一区二区| 成人国产一区最新在线观看| 午夜福利高清视频| 国产精品精品国产色婷婷| 干丝袜人妻中文字幕| 亚洲中文字幕日韩| 国产 一区 欧美 日韩| 99国产极品粉嫩在线观看| 99久久精品一区二区三区| 丰满乱子伦码专区| 日韩精品有码人妻一区| 国内精品一区二区在线观看| 精品一区二区免费观看| 麻豆久久精品国产亚洲av| 日本 欧美在线| 亚洲中文日韩欧美视频| 国产精品av视频在线免费观看| 国产又黄又爽又无遮挡在线| 又爽又黄a免费视频| 亚洲最大成人中文| 欧美中文日本在线观看视频| 久久6这里有精品| 一个人免费在线观看电影| 免费电影在线观看免费观看| 欧美日韩亚洲国产一区二区在线观看| 欧美精品国产亚洲| 嫩草影院新地址| 国产精品不卡视频一区二区| 亚洲精品在线观看二区| 亚洲在线观看片| 小蜜桃在线观看免费完整版高清| 免费黄网站久久成人精品| aaaaa片日本免费| 97超视频在线观看视频| 悠悠久久av| 香蕉av资源在线| 精品人妻一区二区三区麻豆 | 日本熟妇午夜| 变态另类成人亚洲欧美熟女| 91精品国产九色| 免费人成视频x8x8入口观看| 久久精品夜夜夜夜夜久久蜜豆| 亚洲欧美激情综合另类| 精品一区二区三区视频在线观看免费| 日日夜夜操网爽| 桃色一区二区三区在线观看| 可以在线观看的亚洲视频| 午夜福利欧美成人| 日本在线视频免费播放| 搡老妇女老女人老熟妇| 91av网一区二区| 亚洲成人免费电影在线观看| 免费大片18禁| 在线免费观看的www视频| 在线观看一区二区三区| 久久人人爽人人爽人人片va| 不卡视频在线观看欧美| 久99久视频精品免费| 九九热线精品视视频播放| 一级毛片久久久久久久久女| 欧美丝袜亚洲另类 | 日本爱情动作片www.在线观看 | 中文在线观看免费www的网站| 给我免费播放毛片高清在线观看| 国产亚洲av嫩草精品影院| 给我免费播放毛片高清在线观看| 高清在线国产一区| 国产精品一区二区三区四区免费观看 | 中文字幕av成人在线电影| 天堂动漫精品| 亚洲欧美清纯卡通| 99久久成人亚洲精品观看| 国产毛片a区久久久久| 自拍偷自拍亚洲精品老妇| 亚洲国产欧美人成| 99在线视频只有这里精品首页| 真实男女啪啪啪动态图| 欧美最新免费一区二区三区| 日韩中字成人| av视频在线观看入口| 国产精品伦人一区二区| 天堂网av新在线| 亚洲中文字幕一区二区三区有码在线看| 久久久成人免费电影| 69av精品久久久久久| 国产单亲对白刺激| 国产精品亚洲美女久久久| 国产男靠女视频免费网站| 日韩强制内射视频| 午夜老司机福利剧场| 欧美高清性xxxxhd video| 欧美绝顶高潮抽搐喷水| 精品久久久久久,| 制服丝袜大香蕉在线| 女人被狂操c到高潮| 国产精品亚洲美女久久久| 国产视频一区二区在线看| 成人国产麻豆网| 99久久无色码亚洲精品果冻| 蜜桃亚洲精品一区二区三区| 国产成人一区二区在线| 国产精品久久久久久亚洲av鲁大| 丰满乱子伦码专区| 无人区码免费观看不卡| 国产伦精品一区二区三区四那| av在线蜜桃| 国产av不卡久久| 在现免费观看毛片| 亚洲在线自拍视频| 我的老师免费观看完整版| 亚洲精品粉嫩美女一区| 日韩亚洲欧美综合| 精品久久久噜噜| 欧美三级亚洲精品| 亚洲内射少妇av| 国产v大片淫在线免费观看| 国产视频一区二区在线看| 91久久精品国产一区二区三区| 99久国产av精品| 亚洲国产高清在线一区二区三| 亚洲无线在线观看| 亚洲av电影不卡..在线观看| 亚洲中文字幕一区二区三区有码在线看| 黄色视频,在线免费观看| 欧洲精品卡2卡3卡4卡5卡区| 免费在线观看影片大全网站| 免费看美女性在线毛片视频| 色尼玛亚洲综合影院| 午夜福利在线观看免费完整高清在 | 精品99又大又爽又粗少妇毛片 | 人妻少妇偷人精品九色| 日韩国内少妇激情av| 欧美日韩精品成人综合77777| 男女视频在线观看网站免费| 在线播放国产精品三级| h日本视频在线播放| 久久精品国产清高在天天线| 毛片女人毛片| 国内精品久久久久精免费| 色5月婷婷丁香| 美女免费视频网站| 久久久精品欧美日韩精品| x7x7x7水蜜桃| 国产精品99久久久久久久久| 91av网一区二区| 成人午夜高清在线视频| 亚洲精品乱码久久久v下载方式| 亚洲av二区三区四区| 热99在线观看视频| 一边摸一边抽搐一进一小说| 国产在线精品亚洲第一网站| av.在线天堂| 免费高清视频大片| 简卡轻食公司| 99久久精品一区二区三区| 国产精品福利在线免费观看| 久久6这里有精品| 久久精品国产鲁丝片午夜精品 | 日本色播在线视频| 99久久无色码亚洲精品果冻| 国产aⅴ精品一区二区三区波| 亚洲一区二区三区色噜噜| 国产一区二区亚洲精品在线观看| 色播亚洲综合网| 天堂影院成人在线观看| 亚洲一区二区三区色噜噜| 男女边吃奶边做爰视频| 欧美丝袜亚洲另类 | 22中文网久久字幕| 我要搜黄色片| 国产久久久一区二区三区| 国产熟女欧美一区二区| 99国产极品粉嫩在线观看| 色综合站精品国产| 欧美丝袜亚洲另类 | 99热精品在线国产| 日韩精品中文字幕看吧| 久久精品综合一区二区三区| 直男gayav资源| 亚洲第一区二区三区不卡| 深夜精品福利| 午夜激情福利司机影院| 两性午夜刺激爽爽歪歪视频在线观看| 亚洲欧美日韩无卡精品| 69av精品久久久久久| 国产高清三级在线| 婷婷六月久久综合丁香| 禁无遮挡网站| 久久精品国产亚洲av涩爱 | 少妇的逼水好多| 国产精品亚洲一级av第二区| 免费看美女性在线毛片视频| 级片在线观看| 久久热精品热| 日本a在线网址| 十八禁国产超污无遮挡网站| 亚洲精品一区av在线观看| 性色avwww在线观看| 国产欧美日韩精品一区二区| 亚洲欧美日韩无卡精品| 最后的刺客免费高清国语| 赤兔流量卡办理| 色噜噜av男人的天堂激情| 国产亚洲av嫩草精品影院| 91狼人影院| 国产精品,欧美在线| 51国产日韩欧美| 亚洲色图av天堂| 女生性感内裤真人,穿戴方法视频| 极品教师在线视频| 少妇熟女aⅴ在线视频| 国产欧美日韩精品亚洲av| 久久精品国产亚洲网站| 不卡视频在线观看欧美| 香蕉av资源在线| 少妇人妻精品综合一区二区 | 色综合色国产| 国产一区二区三区视频了| 岛国在线免费视频观看| 国产精品一区二区免费欧美| 国产极品精品免费视频能看的| 在线观看美女被高潮喷水网站| 精品久久久久久久久久久久久| 久久精品91蜜桃| 偷拍熟女少妇极品色| 国产色爽女视频免费观看| 午夜影院日韩av| 嫁个100分男人电影在线观看| 亚洲无线观看免费| 免费看a级黄色片| 久久天躁狠狠躁夜夜2o2o| 日韩在线高清观看一区二区三区 | 3wmmmm亚洲av在线观看| 99热精品在线国产| 伊人久久精品亚洲午夜| 国产一区二区在线观看日韩| 成人av在线播放网站| 免费av不卡在线播放| 中文字幕熟女人妻在线| 日日夜夜操网爽| 国内少妇人妻偷人精品xxx网站| 亚洲成人精品中文字幕电影| x7x7x7水蜜桃| 中文字幕av成人在线电影| 成人av在线播放网站| 中文亚洲av片在线观看爽| 国产欧美日韩精品亚洲av| 久久久久久久亚洲中文字幕| 久久久久久伊人网av| 亚洲人成网站在线播| 精品久久久久久久久亚洲 | 成人精品一区二区免费| 哪里可以看免费的av片| 精品国内亚洲2022精品成人| 日本精品一区二区三区蜜桃| 国产在线精品亚洲第一网站| 国产精品一及| 久久精品国产鲁丝片午夜精品 | 尤物成人国产欧美一区二区三区| 久久精品国产亚洲av香蕉五月| 亚洲av不卡在线观看| 国产真实伦视频高清在线观看 | 色在线成人网| 国产亚洲欧美98| 最好的美女福利视频网| 国产中年淑女户外野战色| 日韩人妻高清精品专区| 熟女人妻精品中文字幕| ponron亚洲| 国产真实乱freesex| 一进一出抽搐gif免费好疼| 亚洲欧美日韩高清专用| av在线蜜桃| 免费观看的影片在线观看| 99精品在免费线老司机午夜| 一进一出好大好爽视频| 尤物成人国产欧美一区二区三区| 亚洲综合色惰| 国产又黄又爽又无遮挡在线| 免费不卡的大黄色大毛片视频在线观看 | 他把我摸到了高潮在线观看| 亚洲天堂国产精品一区在线| 国产精品一及| 亚洲人成网站高清观看| 欧美黑人欧美精品刺激| 精品久久久噜噜| 天堂√8在线中文| 天堂av国产一区二区熟女人妻| 久久久久久大精品| 亚洲国产日韩欧美精品在线观看| 18禁在线播放成人免费| 久久精品国产亚洲av涩爱 | 亚洲精品在线观看二区| x7x7x7水蜜桃| 国产精品无大码| 婷婷丁香在线五月| 色噜噜av男人的天堂激情| 久久精品国产鲁丝片午夜精品 | 亚洲av成人精品一区久久| 美女高潮喷水抽搐中文字幕| 国内精品久久久久精免费| 成年女人永久免费观看视频| 真人做人爱边吃奶动态| 99九九线精品视频在线观看视频| 欧美激情国产日韩精品一区| 成人午夜高清在线视频| 国产黄片美女视频| 一本久久中文字幕| 亚洲中文字幕一区二区三区有码在线看| 简卡轻食公司| 日日啪夜夜撸| 精品日产1卡2卡| 久久亚洲精品不卡| 观看免费一级毛片| 哪里可以看免费的av片| 免费av观看视频| 亚洲欧美日韩卡通动漫| 在线观看66精品国产| 午夜精品在线福利| 男女啪啪激烈高潮av片| 美女高潮的动态| 美女免费视频网站| av黄色大香蕉| 国产欧美日韩精品亚洲av| 亚洲精华国产精华液的使用体验 | 成人毛片a级毛片在线播放| 51国产日韩欧美| 亚洲欧美日韩无卡精品| 久久精品国产亚洲av天美| 久久精品国产清高在天天线| 啦啦啦韩国在线观看视频| 国产精品日韩av在线免费观看| 熟妇人妻久久中文字幕3abv| 女人十人毛片免费观看3o分钟| 又紧又爽又黄一区二区| 欧美色视频一区免费| 日本五十路高清| 极品教师在线视频| 国产精品,欧美在线| 国产精品野战在线观看| 观看美女的网站| 欧美最新免费一区二区三区| 久久午夜亚洲精品久久| 成人国产一区最新在线观看| 一级av片app| www.色视频.com| 欧美一级a爱片免费观看看| 听说在线观看完整版免费高清| 国产精品一区二区三区四区免费观看 | 色综合站精品国产| 91在线观看av| 亚洲av免费在线观看| 老女人水多毛片| 欧美黑人欧美精品刺激| 欧美日本视频| 亚洲七黄色美女视频| 久久香蕉精品热| 午夜激情欧美在线| 久久精品国产自在天天线| 亚洲在线观看片| 欧美一区二区亚洲| .国产精品久久| 简卡轻食公司| 美女免费视频网站| 真实男女啪啪啪动态图| 91久久精品国产一区二区三区| 日韩精品中文字幕看吧| 国产亚洲av嫩草精品影院| 亚洲精品一区av在线观看| 日韩欧美在线二视频| 波多野结衣高清作品| 在线播放无遮挡| 啪啪无遮挡十八禁网站| 国产精品一区二区性色av| 啦啦啦啦在线视频资源| 日日撸夜夜添| 真人做人爱边吃奶动态| 欧美成人性av电影在线观看| 日本-黄色视频高清免费观看| 久久久久性生活片| 日韩欧美一区二区三区在线观看|