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

    GPU通用計(jì)算及其在計(jì)算智能領(lǐng)域的應(yīng)用

    2015-11-26 01:50:50丁科譚營(yíng)
    智能系統(tǒng)學(xué)報(bào) 2015年1期
    關(guān)鍵詞:線(xiàn)程內(nèi)存編程

    丁科,譚營(yíng)

    (1.北京大學(xué) 機(jī)器感知與智能教育部重點(diǎn)實(shí)驗(yàn)室,北京100871;2.北京大學(xué) 信息科學(xué)技術(shù)學(xué)院,北京100871)

    GPU通用計(jì)算(general purpose computing on GPUs,GPGPU)是一種利用圖形處理器(graphics processing unit,GPU)解決通用計(jì)算任務(wù)的異構(gòu)計(jì)算方式。

    最初的GPU只是功能專(zhuān)一的協(xié)處理器,用以幫助中央處理器(central processing unit,CPU)從繁重的圖形圖像處理任務(wù)中解脫出來(lái)。為滿(mǎn)足人們對(duì)圖像處理實(shí)時(shí)性和精確度不斷高漲的需求,在過(guò)去的十多年間,GPU的體系結(jié)構(gòu)和制造工藝都取得了長(zhǎng)足的進(jìn)步;GPU的計(jì)算性能及計(jì)算精度都得到了大幅提升。如今,GPU的浮點(diǎn)計(jì)算能力早已遠(yuǎn)超同時(shí)期的CPU。

    圖像處理任務(wù)具有高度并行的特點(diǎn),這使得GPU從誕生之日起,便采用多核心的設(shè)計(jì)方案。隨著GPU性能的不斷增強(qiáng)和可編程性的日漸提高,GPU的用途不再局限于傳統(tǒng)的圖形圖像處理。目前,GPU已經(jīng)廣泛應(yīng)用于從小到圖像解碼,大到超級(jí)計(jì)算機(jī)的各種計(jì)算領(lǐng)域,進(jìn)入到了高性能計(jì)算的主流行列。

    Owens等[1-2]全面綜述了 2007 年之前的 GPU通用計(jì)算的進(jìn)展情況。然而,在過(guò)去的幾年里,GPU軟硬件條件都發(fā)生了極大的發(fā)展變化。GPU高級(jí)編程平臺(tái),如CUDA、OpenCL等的出現(xiàn),更是使得GPU通用計(jì)算的面貌發(fā)生了深刻的變化。

    本文在已有文獻(xiàn)綜述的基礎(chǔ)上,總結(jié)了GPU通用計(jì)算領(lǐng)域最新的軟硬件發(fā)展及在計(jì)算智能領(lǐng)域的應(yīng)用。文章首先介紹GPU通用計(jì)算出現(xiàn)的背景,包括傳統(tǒng)CPU面臨的困難與挑戰(zhàn)以及GPU作為通用計(jì)算器件的特點(diǎn)與優(yōu)勢(shì)。接著,文章回顧GPU通用計(jì)算開(kāi)發(fā)工具和平臺(tái)的發(fā)展歷程。然后,本文轉(zhuǎn)向GPU通用計(jì)算的現(xiàn)狀,重點(diǎn)介紹主流的GPU編程平臺(tái)——NVIDIA GPU專(zhuān)屬的CUDA平臺(tái)和開(kāi)放標(biāo)準(zhǔn)的OpenCL平臺(tái)。GPU通用計(jì)算的主要在計(jì)算智能領(lǐng)域的重要應(yīng)用將在之后予以介紹。最后,文章對(duì)GPU通用計(jì)算的目前存在的挑戰(zhàn)及未來(lái)發(fā)展趨勢(shì)進(jìn)行展望。

    1 GPU通用計(jì)算背景

    1.1 多核計(jì)算時(shí)代

    CPU是計(jì)算機(jī)系統(tǒng)的核心部件,它為各種任務(wù)提供計(jì)算能力,是一種通用的計(jì)算單元。CPU的計(jì)算能力可以用每秒鐘執(zhí)行指令數(shù)(instructions per second,IPS)來(lái)衡量,而IPS則是由CPU的指令吞吐量(instructions per clock,IPC)和時(shí)鐘頻率F所共同決定的:

    為了提高CPU的性能,可以從兩方面入手:增加指令吞吐量(IPC)和提高時(shí)鐘頻率(F)。

    隨著制作工藝的不斷提高,CPU芯片的集成度越來(lái)越高[3]。一方面,在集成度更高的芯片中,各個(gè)單元在物理上更加靠近,從而可以使器件運(yùn)行在更高的頻率上。另一方面,更多的晶體管也使得設(shè)計(jì)更復(fù)雜精細(xì)的邏輯控制結(jié)構(gòu),以提高單位時(shí)鐘周期的指令吞吐量。

    在經(jīng)過(guò)了多年的發(fā)展之后,這2種策略都遭遇到了巨大的瓶頸。時(shí)鐘頻率的提高使得芯片消耗的功率密度(W/cm2)隨之提高,供電和散熱即將達(dá)到某些基本的物理極限。如圖1所示,CPU的時(shí)鐘頻率在經(jīng)歷了長(zhǎng)期高速增長(zhǎng)后,其提升勢(shì)頭難以為繼。

    通過(guò)復(fù)雜的邏輯結(jié)構(gòu)提高指令吞吐量也逐漸達(dá)到了收益遞減點(diǎn)?,F(xiàn)代處理器的內(nèi)部結(jié)構(gòu)已經(jīng)十分復(fù)雜,并已經(jīng)能夠從指令流中壓榨出大量的并行性。通過(guò)設(shè)計(jì)更復(fù)雜的結(jié)構(gòu)來(lái)提高指令的執(zhí)行能力變得更加困難[3]。

    圖1 CPU時(shí)鐘頻率變化趨勢(shì)Fig.1 The tendency of CPU’s frequency

    為應(yīng)對(duì)上述困難,多核解決方案被提出,以便充分利用晶體管數(shù)量的增加,進(jìn)一步改善CPU。

    事實(shí)上,2004之后,主要的CPU廠商如Intel和AMD等相繼轉(zhuǎn)移到多核解決方案,多核計(jì)算時(shí)代已全面到來(lái)。

    1.2 GPU的特點(diǎn)與優(yōu)勢(shì)

    GPU最初是為了加速圖形處理而設(shè)計(jì)的專(zhuān)用硬件。圖形渲染等任務(wù)具有很強(qiáng)的并行性,需要密集的計(jì)算與巨大的數(shù)據(jù)傳輸帶寬。因此,GPU從誕生之日起便被設(shè)計(jì)為擁有眾多核心,具有高吞吐量的計(jì)算。并且,由于GPU的專(zhuān)用性,GPU芯片的晶體管也更多的用于計(jì)算,而非控制和緩存(如圖2所示)。由于GPU與CPU在設(shè)計(jì)上存著巨大的差別,GPU通用計(jì)算有著自身的特點(diǎn)與優(yōu)勢(shì)。

    1)計(jì)算能力強(qiáng)大

    與CPU相比,GPU具有更加強(qiáng)大的計(jì)算能力。在相同時(shí)期,GPU的浮點(diǎn)計(jì)算的理論峰值能力相比CPU要高出一個(gè)數(shù)量級(jí)[6]。

    強(qiáng)大的計(jì)算能力使GPU在高性能計(jì)算領(lǐng)域獲得了廣泛的應(yīng)用。在全球最快的超級(jí)計(jì)算機(jī)之中,中國(guó)國(guó)家超級(jí)計(jì)算天津中心的天河1A號(hào)超級(jí)計(jì)算機(jī)和美國(guó)橡樹(shù)嶺實(shí)驗(yàn)室的TITAN號(hào)超級(jí)計(jì)算機(jī),都是依靠裝配GPU來(lái)提升性能,并提供大部分運(yùn)算能力。GPU為高性能計(jì)算提供了新的巨大的發(fā)展?jié)撃堋?/p>

    圖2 GPU的晶體管更多的用于計(jì)算單元Fig.2 GPUs devote more transistors to data processing

    2)廉價(jià)易得

    相比與基于CPU的計(jì)算機(jī)系統(tǒng),GPU更加廉價(jià),也更容易為個(gè)人和小型機(jī)構(gòu)所利用。

    以NVIDIA的旗艦版GPU TITAN為例。TITAN GPU價(jià)格不足一萬(wàn)元人民幣,共有2 688個(gè)計(jì)算核心,雙精度浮點(diǎn)運(yùn)算理論峰值計(jì)算能力達(dá)到1 500 GFLP/s,額定功耗約為250 W。作為對(duì)比,北京大學(xué)理論與應(yīng)用地球物理研究所的集群,由1個(gè)服務(wù)器(Dell PowerEdge R710)、46個(gè)計(jì)算結(jié)點(diǎn)(Dell PowerEdge M610)、3個(gè)刀片機(jī)箱(Dell PowerEdge M1000)組成。每個(gè)計(jì)算結(jié)點(diǎn)有2顆四核Intel Xeon E5520(2.26 GHz,Nehalem-EP 架構(gòu))處理器,共 368個(gè)計(jì)算核心,理論計(jì)算峰值3 327 GFLP/s,滿(mǎn)載功耗約為12 kW。

    可以看到,在提供相同數(shù)量級(jí)的計(jì)算能力的情況下,GPU非常的廉價(jià),也易于裝配(只需要一臺(tái)能夠支持獨(dú)立顯卡的PC),個(gè)人和小型實(shí)驗(yàn)室都有條件利用。而集群等傳統(tǒng)高性能計(jì)算設(shè)備,不但價(jià)格昂貴,對(duì)場(chǎng)地、供電和維護(hù)等有較高的要求。可以說(shuō),GPU為PC提供了小型集群的計(jì)算能力[7]。

    3)開(kāi)發(fā)靈活

    現(xiàn)代的GPU都采用統(tǒng)一渲染架構(gòu),具有很強(qiáng)的可編程性。GPU編程的軟件開(kāi)發(fā)平臺(tái)也趨于成熟,CUDA、OpenCL等工具的推出,使開(kāi)發(fā)者能夠使用高級(jí)編程語(yǔ)言為GPU開(kāi)發(fā)通用計(jì)算程序?,F(xiàn)在主流的GPU也對(duì)單精度和雙精度浮點(diǎn)運(yùn)算提供了滿(mǎn)足IEEE標(biāo)準(zhǔn)的完全支持。對(duì)于GPU編程,我們會(huì)在下面的章節(jié)詳細(xì)介紹。

    2 GPU通用計(jì)算編程平臺(tái)

    最初的GPU功能固定,只能執(zhí)行圖形流水線(xiàn)中的特定任務(wù),缺乏可編程性。此時(shí),為了利用GPU進(jìn)行通用計(jì)算,必須將計(jì)算任務(wù)封裝成圖形處理任務(wù),然后交由GPU完成。這可以通過(guò)底層的匯編命令(低級(jí)著色語(yǔ)言)編程實(shí)現(xiàn)。更為高效的,通常我們可以通過(guò)諸如OpenGL、Cg等圖形編程接口,利用高級(jí)著色語(yǔ)言(shading language,SL)進(jìn)行編程。

    但即使利用高級(jí)著色語(yǔ)言,這種方式也還存在諸多不便。首先,開(kāi)發(fā)者需要熟悉圖形處理的流程,掌握一系列圖形處理接口,并且需要以與任務(wù)完成完全無(wú)關(guān)的一套圖形處理思路來(lái)考慮問(wèn)題的編程求解。其次,圖形接口是專(zhuān)用的程序接口,缺乏通用計(jì)算所需要的靈活性,開(kāi)發(fā)者必須面臨如何將問(wèn)題重新表述成圖形處理問(wèn)題的挑戰(zhàn)。

    為了簡(jiǎn)化GPU編程,具有更高層硬件層次的編程模式被相繼提出。GPU的統(tǒng)一著色器被抽象為與具體硬件無(wú)關(guān)的、能夠以特定方式并行執(zhí)行線(xiàn)程的流處理器單元。GPU的內(nèi)存、紋理緩存等存儲(chǔ)單元,被抽象為具有層級(jí)結(jié)構(gòu)的存儲(chǔ)體系。經(jīng)過(guò)抽象后,可以在流處理模式下,利用高級(jí)語(yǔ)言為GPU編寫(xiě)程序,完成通用的計(jì)算任務(wù)。

    本節(jié)首先介紹與GPU通用計(jì)算密切相關(guān)的流處理模式。之后,轉(zhuǎn)向介紹基于流行的GPU編程語(yǔ)言和工具。

    2.1 流處理模式

    流處理模式(stream programming model)是一種類(lèi)似于單指令多數(shù)據(jù)(SIMD)的編程模式。

    通過(guò)將數(shù)據(jù)組織成數(shù)據(jù)流,將計(jì)算表達(dá)成作用于數(shù)據(jù)流的核函數(shù)的方式,流處理能夠暴露程序中內(nèi)在的并行性。通過(guò)流處理模式,程序開(kāi)發(fā)者能夠更容易地利用GPU、FGPA等計(jì)算硬件的并行能力而不用顯式地處理空間分配、同步和計(jì)算單元間的通信等問(wèn)題。對(duì)于數(shù)據(jù)并行性良好的應(yīng)用,流處理能夠取得良好的性能[8]。

    如圖3所示,流處理與SIMD最大的不同之處在于,SIMD是以指令為操作單位的,而流處理模式則是以指令序列(核函數(shù))為操作單元。數(shù)據(jù)流(輸入流)與核函數(shù)一同進(jìn)入流處理器,流中每個(gè)數(shù)據(jù)元素同時(shí)被核函數(shù)執(zhí)行,從而完成指定的操作,得到輸出數(shù)據(jù)(輸出流)。

    圖3 流處理與SIMDFig.3 Stream processing and SIMD

    流(stream)和核函數(shù)(kernel)是流處理模式中最重要的2個(gè)概念。流是一個(gè)數(shù)據(jù)集合,包含待處理的數(shù)據(jù)元素,并且這些數(shù)據(jù)的處理方式是相同或相似的。核函數(shù)是由若干操作(指令)組成的操作序列,它決定著要對(duì)每個(gè)數(shù)據(jù)做何種操作和處理。對(duì)GPU平臺(tái)而言,紋理單元充當(dāng)了流的角色,待處理數(shù)據(jù)需要作為2維的紋理信息被流處理器讀取和操作。許多問(wèn)題也可以很自然的映射為2維的紋理,如矩陣代數(shù)、物理仿真等等;而可編程著色器則起著核函數(shù)的作用。

    2.2 Brook

    Brook是一種基于標(biāo)準(zhǔn)C語(yǔ)言的流編程語(yǔ)言。它旨在基于流編程模式,對(duì)圖形API進(jìn)行封裝,將GPU視為能夠進(jìn)行并行計(jì)算的協(xié)處理器,從而簡(jiǎn)化GPU通用計(jì)算的編程[8]。

    Brook使人們看到了將GPU用于通用計(jì)算的巨大潛力,對(duì)GPU通用計(jì)算的發(fā)展有著深遠(yuǎn)的影響。Brook將GPU封裝為通用的并行處理器的思想及語(yǔ)言規(guī)范更是為現(xiàn)在主流的GPU編程平臺(tái)CUDA和OpenCL所借鑒,而這兩者正是現(xiàn)在GPU編程的主流開(kāi)發(fā)平臺(tái)。

    2.3 OpenACC

    OpenACC是一個(gè)異構(gòu)并行計(jì)算標(biāo)準(zhǔn)。與OpenMP類(lèi)似,OpenACC定義了一套編譯器指令,這些指令應(yīng)用于C、C++和Fortran代碼,以指導(dǎo)編譯器將指定的循環(huán)或代碼塊,從主機(jī)CPU轉(zhuǎn)移到相連的加速設(shè)備(例如GPU)上進(jìn)行運(yùn)算。

    簡(jiǎn)言之,OpenACC提供了一種簡(jiǎn)潔的利用并行硬件的開(kāi)發(fā)方式。目前,OpenACC已經(jīng)在多種操作系統(tǒng)下實(shí)現(xiàn),并支持NVIDIA、AMD和Intel的多種硬件計(jì)算設(shè)備[21]。未來(lái),OpenACC可能會(huì)并入OpenMP標(biāo)準(zhǔn),形成一個(gè)同時(shí)支持多核與眾核并行編程的統(tǒng)一標(biāo)準(zhǔn)。

    2.4 C++AMP

    C++accelerated massive parallelism(C++AMP)是一個(gè)由微軟倡導(dǎo)的開(kāi)放標(biāo)準(zhǔn),旨在直接利用C++語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)的并行化編程[9]。

    相比于常規(guī)的C++代碼,C++AMP只需要按規(guī)定格式對(duì)數(shù)據(jù)進(jìn)行綁定,然后應(yīng)用并行原語(yǔ)啟動(dòng)數(shù)據(jù)操作(核函數(shù))的運(yùn)行。因此,C++AMP完全隱藏了硬件的細(xì)節(jié)。開(kāi)發(fā)者只需要預(yù)先綁定數(shù)組和數(shù)組元素上的操作,并行化由C++AMP負(fù)責(zé)完成。C++AMP能夠根據(jù)實(shí)際的硬件情況(GPU或CPU,計(jì)算核心算數(shù)等),決定并行化策略。當(dāng)實(shí)際硬件不支持并行化時(shí),代碼還可以串行執(zhí)行。

    2.5 高級(jí)編程平臺(tái)

    在OpenACC和C++AMP這2種異構(gòu)編程模式下,硬件對(duì)開(kāi)發(fā)者而言完全是透明的。一方面,這簡(jiǎn)化了并行程序的開(kāi)發(fā)——串行代碼只需要少量的改動(dòng),便可以利用GPU等多核計(jì)算設(shè)備的并行計(jì)算能力。但這種簡(jiǎn)化并非沒(méi)有代價(jià),它使得并行化的過(guò)程不能被程序員顯示地加以控制。而在很多情況下,根據(jù)硬件和程序的具體情況,對(duì)負(fù)載和并行粒度進(jìn)行調(diào)整,對(duì)于充分利用計(jì)算設(shè)備能力、提高程序性能是至關(guān)重要的。

    正如前文所述,CUDA和OpenCL是當(dāng)前基于GPU的異構(gòu)編程的主流平臺(tái)。它們的共同特點(diǎn)是,既對(duì)硬件的計(jì)算和存儲(chǔ)單元進(jìn)行了很好的抽象,同時(shí)又對(duì)計(jì)算設(shè)備的計(jì)算核心數(shù)量這一重要參數(shù),加以適度地暴露,并且對(duì)并行粒度和并行方式也給予了更大的控制可能。這樣便對(duì)完全隱藏硬件這一極端情況的進(jìn)行了良好的折衷。同時(shí),這2種平臺(tái)為GPU通用提供了從編程到調(diào)試再到性能測(cè)試的完整解決方案。

    3 統(tǒng)一計(jì)算設(shè)備架構(gòu)

    統(tǒng)一計(jì)算設(shè)備架構(gòu)(compute unified device architecture,CUDA)是由 NVIDIA公司于 2006年 11月發(fā)布的基于NVIDIA GPU的并行程序開(kāi)發(fā)架構(gòu)[10]。它包括一個(gè)SDK(NVCC編譯器、調(diào)試器、函數(shù)庫(kù)等)、一套API,以及添加了少量擴(kuò)展的C/C++語(yǔ)言(CUDA C/C++)。由它開(kāi)發(fā)的程序能夠在所有支持CUDA的NVIDIA GPU上運(yùn)行。CUDA的推出大大簡(jiǎn)化了對(duì)GPU進(jìn)行并行編程的難度。圖3示意了NVIDIA GPU的主要計(jì)算和存儲(chǔ)部件。接合圖3,對(duì)CUDA開(kāi)發(fā)平臺(tái)的核心逐一進(jìn)行簡(jiǎn)要介紹。

    3.1 核函數(shù)

    CUDA允許使用C/C++為CUDA計(jì)算核心(CUDA Core,在較早的文檔中也稱(chēng)了 Streaming Processor(SP),即流處理器)編寫(xiě)程序——“核函數(shù)”(kernel)。

    不同于常規(guī)的C/C++函數(shù),當(dāng)核函數(shù)被調(diào)用后,它會(huì)被N個(gè)不同的CUDA線(xiàn)程(thread)并行的執(zhí)行N次。執(zhí)行核函數(shù)的每個(gè)線(xiàn)程都被賦予一個(gè)一的線(xiàn)程索引ID。

    3.2 線(xiàn)程的層級(jí)結(jié)構(gòu)

    如圖4所示,CUDA中的線(xiàn)程具有層次結(jié)構(gòu)。一定數(shù)量線(xiàn)程組成線(xiàn)程塊(block);線(xiàn)程塊再組成更大的單位線(xiàn)程格(grid)。

    圖4 線(xiàn)程的層級(jí)結(jié)構(gòu)Fig.4 Hierarchy of threads

    核函數(shù)啟動(dòng)后,每個(gè)線(xiàn)程塊(thread block)被分配給某個(gè)流多處理器(streaming multiprocessor,SM)上執(zhí)行。線(xiàn)程塊執(zhí)行的先后順序是不確定的,它們必須相互獨(dú)立地被執(zhí)行。即不論它們按何種次序,也不論是按并行還是串行方式,最后的執(zhí)行結(jié)果都應(yīng)該一致。

    不同流多處理器上的線(xiàn)程是相互獨(dú)立的,相同流多處理器上的線(xiàn)程則是阻塞式的[10]。前者意味著,不同流多處理器上的線(xiàn)程由不同的處理器以任意先后順序執(zhí)行;后者意味著,當(dāng)一個(gè)活躍線(xiàn)程受到阻塞(如執(zhí)行延遲較大的數(shù)據(jù)讀寫(xiě)操作)時(shí),流多處理器可以切換執(zhí)行其他的線(xiàn)程,避免浪費(fèi)寶貴的計(jì)算資源。

    3.3 內(nèi)存層級(jí)結(jié)構(gòu)

    同基于CPU的常規(guī)計(jì)算機(jī)體系類(lèi)似,GPU的存儲(chǔ)體系也具有層次性:容量大的存儲(chǔ)器,遠(yuǎn)離GPU,讀寫(xiě)也延遲大;延遲小的存儲(chǔ)單元容量小,位置靠近GPU。

    如圖5,CUDA程序在運(yùn)行過(guò)程中,線(xiàn)程能夠從不同的內(nèi)存空間中讀取數(shù)據(jù)。每個(gè)線(xiàn)程都有僅本線(xiàn)程可見(jiàn)的局部?jī)?nèi)存(local memory)。局部空間一般是片上的寄存器,可以幾乎無(wú)延遲的讀寫(xiě)。每個(gè)線(xiàn)程塊分配有一塊共享內(nèi)存(shared memory),塊中的所有線(xiàn)程都可以讀寫(xiě)共享內(nèi)存的數(shù)據(jù)。共享內(nèi)存靠近GPU,雖然不如寄存器讀寫(xiě)速度快,但訪問(wèn)延遲也非常小。離GPU最遠(yuǎn)的是大容量的全局內(nèi)存。所有線(xiàn)程都可以訪問(wèn)全局內(nèi)存,但讀寫(xiě)延遲非常大,大約要比共享內(nèi)存高出一個(gè)數(shù)量級(jí)。

    圖5 線(xiàn)程的層級(jí)結(jié)構(gòu)Fig.5 Hierarchy of threads

    表1對(duì)比了在NVIDIA GeForce 560 Ti GPU中,不同層級(jí)內(nèi)存的數(shù)據(jù)傳輸率。

    表1 GPU 內(nèi)存數(shù)據(jù)傳輸率(560 Ti,PCIe 2.0 x16)Table 1 GPU memory bandwidth(560 Ti,PCIe 2.0 x16)

    除以上介紹的幾種存儲(chǔ)空間外,還存在2種對(duì)所有線(xiàn)程可見(jiàn)的只讀存儲(chǔ)空間——常量?jī)?nèi)存(constant memory)和紋理內(nèi)存(texture memory)。常量?jī)?nèi)存和紋理內(nèi)存的訪問(wèn)延遲同全局內(nèi)存相同,但前者配備有緩存(cache),在數(shù)據(jù)局部性較好時(shí),訪問(wèn)延遲要小于全局內(nèi)存(參見(jiàn)圖6)。

    圖6 NVIDIA GPU主要結(jié)構(gòu)簡(jiǎn)圖Fig.6 Diagram of NVIDIA GPU structure

    同一線(xiàn)程塊內(nèi)的線(xiàn)程可以通過(guò)共享內(nèi)存(shared memory)(塊中每個(gè)都可以讀寫(xiě)共享內(nèi)存中的數(shù)據(jù))和同步機(jī)制來(lái)相互協(xié)作。具體而言,程序員可以在核函數(shù)內(nèi)調(diào)用內(nèi)建函數(shù)來(lái)設(shè)置同步點(diǎn),以使線(xiàn)程執(zhí)行到該處后,停下來(lái)等待,直到同一塊中的所有線(xiàn)程均達(dá)到同步點(diǎn)。

    3.4 函數(shù)庫(kù)

    除了提供以C/C++為基礎(chǔ)語(yǔ)言的高級(jí)編程平臺(tái),CUDA SDK還提供了許多函數(shù)庫(kù),高效實(shí)現(xiàn)常見(jiàn)操作,提高開(kāi)發(fā)速度。例如,矩陣計(jì)算的cuBLAS和cuSPARSE,實(shí)施快速傅里葉變換的cuFFT,用于批量生成隨機(jī)數(shù)的cuRAND,以及用于加速人工神經(jīng)網(wǎng)絡(luò)的 cuDNN[12-13]等。除了函數(shù)庫(kù)外,還有大量第三方開(kāi)源或商業(yè)函數(shù)庫(kù)可供選擇。這些函數(shù)庫(kù)涵蓋基本代數(shù)運(yùn)算、數(shù)值計(jì)算、統(tǒng)計(jì)、圖像處理、機(jī)器視覺(jué)、視頻編碼解碼、GIS等領(lǐng)域。這些函數(shù)的數(shù)量和范圍也在不斷的增加,最新進(jìn)展可以參見(jiàn)文獻(xiàn)[11]。

    3.5 調(diào)試與性能分析

    調(diào)試和優(yōu)化是編程開(kāi)發(fā)重要的環(huán)節(jié),也是GPU編程的一個(gè)難點(diǎn)。為簡(jiǎn)化調(diào)試和優(yōu)化流程,提高開(kāi)發(fā)效率,CUDA提供了一系列軟件工具。

    Parallel Nsight是集調(diào)試和性能測(cè)試于一體的編程輔助工具。Nsight可以集成在 Visual Studio(Windows下)和Eclipse(Linux下),實(shí)現(xiàn)交互式調(diào)試。在Linux環(huán)境下,開(kāi)發(fā)者還可以在cuda-gdb在命令下進(jìn)行調(diào)試,或?qū)uda-gdb同IDE配合使用。此外,CUDA SDK還提供了cuda-memcheck程序,檢查內(nèi)存越界訪問(wèn)錯(cuò)誤。

    除了上面提到的Nsight可以用于性能分析外,CUDA SDK還提供Visual Profiler工具,能夠以可視化的方式展示程序各部分的運(yùn)行時(shí)間,方便尋找性能瓶頸,以便有針對(duì)性地進(jìn)行優(yōu)化。

    4 開(kāi)放計(jì)算語(yǔ)言

    開(kāi)放計(jì)算語(yǔ)言(open computing language,OpenCL)是一個(gè)完全開(kāi)放和免費(fèi)的異構(gòu)計(jì)算編程標(biāo)準(zhǔn),它由非盈利性技術(shù)組織Khronos Group負(fù)責(zé)維護(hù)。OpenCL提供了一種跨平臺(tái)、硬件無(wú)關(guān)的并行計(jì)算解決方案。由它編寫(xiě)的程序不僅能夠在多核CPU、APU及GPU上運(yùn)行,還能運(yùn)行在單核CPU甚至DSP和FPGA等硬件設(shè)備上。OpenCL獲得了主要硬件廠商Intel、AMD和NVIDIA的積極支持。

    OpenCL的目標(biāo)是提出一種跨硬件、跨平臺(tái)的異構(gòu)編程框架標(biāo)準(zhǔn)。OpenCL規(guī)范主要由平臺(tái)模型、執(zhí)行模型、內(nèi)存模型和編程模型[13]4部分組成,它在硬件的抽象描述的基礎(chǔ)上,制定了異構(gòu)的并行編程模式。在制定OpenCL標(biāo)準(zhǔn)時(shí),Khronos Group大量借鑒了CUDA[14],因此,2種并行解決方案有很多相似之處,其中,大部分關(guān)鍵概念都可以一一對(duì)應(yīng)。

    4.1 設(shè)備的層級(jí)模型

    OpenCL定義了具有多級(jí)結(jié)構(gòu)的異構(gòu)并行體系模型。如圖7所示,這一體系包括一個(gè)主機(jī)(host),多個(gè)設(shè)備(device);每個(gè)設(shè)備中包括若干計(jì)算單元(compute unit,CU)。計(jì)算單元對(duì)應(yīng)于AMD GPU的計(jì)算單元(CU)或CUDA中的流多處理器(SM),但它也可以是CPU核心,還可以是DSP和FPGA等運(yùn)算設(shè)備。計(jì)算單元又由若干處理單元(processing element,PE)組成。圖8給出了內(nèi)存模型。

    圖7 OpenCL設(shè)備模型Fig.7 OpenCL device model

    圖8 OpenCL內(nèi)存模型Fig.8 OpenCL memory model

    如圖8所示,OpenCL規(guī)范還定義了內(nèi)存的層級(jí)結(jié)構(gòu)和可見(jiàn)性:遠(yuǎn)離計(jì)算單元的全局內(nèi)存(global memory)和常量?jī)?nèi)存(constant memory)是全局可見(jiàn)的,片上的局部?jī)?nèi)存(local memory)、計(jì)算單元內(nèi)部的私有內(nèi)存(private memory)則是局部可見(jiàn)的。

    4.2 數(shù)據(jù)并行模型

    OpenCL定義了程序的執(zhí)行模式。圖9給出了OpenCL抽象的數(shù)據(jù)并行模型。在OpenCL的概念中,執(zhí)行單元也同是以層級(jí)結(jié)構(gòu)進(jìn)行組織的:工作項(xiàng)(work item)組成工作組(work group),工作組進(jìn)而構(gòu)成索引空間——NDRange。OpenCL的工作項(xiàng),相當(dāng)于CUDA的線(xiàn)程,是核函數(shù)執(zhí)行的最小單元;工作組對(duì)應(yīng)于CUDA的線(xiàn)程塊,工作組內(nèi)的項(xiàng)有更加方便的數(shù)據(jù)共享和同步機(jī)制,便于彼此協(xié)作。工作組又被置于更大的索引空間NDRange中,它發(fā)揮著CUDA中線(xiàn)程格的作用,為工作組和工作項(xiàng)提供全局索引。

    圖9 OpenCL并行執(zhí)行模型Fig.9 OpenCL execution model

    同CUDA一樣,工作項(xiàng)除了擁有在工作組內(nèi)的坐標(biāo)外,也具有工作組內(nèi)的唯一的索引和唯一的全局索引;工作組也有著類(lèi)似的索引結(jié)構(gòu)。

    4.3 設(shè)備管理與核函數(shù)啟動(dòng)

    OpenCL的核函數(shù)的基本結(jié)構(gòu)同CUDA完全相同,只是在具體編寫(xiě)時(shí)所使用的關(guān)鍵字不同。

    OpenCL的核函數(shù)啟動(dòng)后,每個(gè)工作項(xiàng)都會(huì)執(zhí)行核函數(shù)中指令,這一點(diǎn)也與 CUDA相同。由于OpenCL是與具體硬件無(wú)關(guān)的,因此,核函數(shù)的啟動(dòng)相對(duì)CUDA要復(fù)雜一些。(CUDA中,復(fù)雜的維護(hù)工作由運(yùn)行時(shí)負(fù)責(zé),用戶(hù)也可以通過(guò)Driver API來(lái)顯示的管理和查詢(xún)。由于CUDA是針對(duì)專(zhuān)用硬件平臺(tái),因此,一般而言沒(méi)有這樣做的必要。)

    如圖10,OpenCL首先需要?jiǎng)?chuàng)建一個(gè)上下文(context)來(lái)管理設(shè)備,不同類(lèi)型的硬件對(duì)應(yīng)不同類(lèi)型的上下文。上下文對(duì)硬件設(shè)備進(jìn)行了封裝,為主機(jī)調(diào)用設(shè)備的提供了統(tǒng)一的接口。主機(jī)啟動(dòng)核函數(shù)后,核函數(shù)被放在一個(gè)命令隊(duì)列(CMD queue)中,等待執(zhí)行。當(dāng)設(shè)備完成一個(gè)核函數(shù)的執(zhí)行后,會(huì)取出隊(duì)列中的第一個(gè)核函數(shù)繼續(xù)執(zhí)行。關(guān)于OpenCL更詳細(xì)的說(shuō)明,可以參考[13,15];關(guān)于基于 AMD GPU的編程開(kāi)發(fā),可以參見(jiàn)[16]。

    圖10 OpenCL通過(guò)命令隊(duì)列和上下文管理核函數(shù)執(zhí)行Fig.10 OpenCL manages the kernels through command queue and context

    4.4 函數(shù)庫(kù)

    OpenCL的生態(tài)系統(tǒng)也提供了大量的函數(shù)庫(kù),方便開(kāi)發(fā)者利用。開(kāi)源的數(shù)學(xué)函數(shù)庫(kù)clMath實(shí)現(xiàn)了快速傅里葉變換(FFT)和基礎(chǔ)線(xiàn)性代數(shù)全程庫(kù)(BLAS)。其中,F(xiàn)FT支持1~3維的實(shí)數(shù)和復(fù)數(shù)變換;BLAS支持全部 1~3級(jí)別的代數(shù)運(yùn)算。在clMath的基礎(chǔ)上,MAGMA提供了矩陣的LU、QR和Chokesky分解、特征值計(jì)算等重要的矩陣操作的OpenCL實(shí)現(xiàn)。

    4.5 調(diào)試和性能工具

    目前已有許多優(yōu)秀的工具,用于OpenCL程序的調(diào)試和優(yōu)化。AMD APP SDK中的CodeXL包含了一整套軟件工具,幫助開(kāi)發(fā)者最大限度地發(fā)掘GPU的計(jì)算潛力。CodeXL包括功能強(qiáng)大的調(diào)試器,能夠?qū)PU和GPU端的代碼進(jìn)行細(xì)致的監(jiān)測(cè),同時(shí)還能對(duì)OpenCL的kernel函數(shù)進(jìn)行表態(tài)分析。CodeXL可以配合Visual Studio使用,也可以單獨(dú)使用。

    5 計(jì)算智能領(lǐng)域應(yīng)用

    GPU通用計(jì)算已經(jīng)進(jìn)入高性能計(jì)算的主流行列,被用于流體模擬、物理仿真、圖像和信號(hào)處理、數(shù)值計(jì)算等諸多,并取得了良好的加速效果。文獻(xiàn)[1-2]和[17]給出了GPU在許多關(guān)鍵領(lǐng)域和問(wèn)題上的重要應(yīng)用。本節(jié)主要回顧GPU在計(jì)算智能領(lǐng)域的應(yīng)用。

    計(jì)算智能算法一般具備并行性的特點(diǎn),因此,特別適用利用GPU平臺(tái)進(jìn)行高效的并行化實(shí)現(xiàn)。

    5.1 人工神經(jīng)網(wǎng)絡(luò)

    人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN),模仿生物神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和功能,通過(guò)聯(lián)結(jié)大量的人工神經(jīng)元進(jìn)行計(jì)算。由于出色的特征學(xué)習(xí)能力,深度神經(jīng)網(wǎng)絡(luò)已經(jīng)在圖像識(shí)別、語(yǔ)言識(shí)別等領(lǐng)域取得了突破性進(jìn)展。圖11展示了深層卷積神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)圖像的低階和高階特征上表現(xiàn)出的良好性能[18]。

    圖11 通過(guò)深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的低階和高階特征[27]Fig.11 Low level and high level features learned by DNN[27]

    隨著深度學(xué)習(xí)[19](deep learning)研究的不斷深入,人工神經(jīng)網(wǎng)絡(luò)的規(guī)模越來(lái)越大,計(jì)算復(fù)雜性不斷膨脹。通常,深度神經(jīng)網(wǎng)絡(luò)包含上百萬(wàn)甚至上億個(gè)自由參數(shù),需要在海量的數(shù)據(jù)集上進(jìn)行學(xué)習(xí)。因此,加速深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度是工程和科學(xué)領(lǐng)域的重要研究?jī)?nèi)容,直接關(guān)系到對(duì)深度神經(jīng)網(wǎng)絡(luò)的研究以及其在實(shí)際中的應(yīng)用。

    超級(jí)計(jì)算機(jī)和大規(guī)模集群的成本高昂,個(gè)人和中小型研究機(jī)和企業(yè)構(gòu)難于負(fù)擔(dān)。GPU通用計(jì)算,極大地降低了深度神經(jīng)網(wǎng)絡(luò)的研究和應(yīng)用的門(mén)檻。

    2012,Krizhevsky等[20],搭建了一個(gè)深度神經(jīng)網(wǎng)絡(luò)并用于圖像識(shí)別。這個(gè)神經(jīng)網(wǎng)絡(luò)含有6 000萬(wàn)個(gè)參數(shù),650 000個(gè)神經(jīng)元。這個(gè)神經(jīng)網(wǎng)絡(luò)在ImageNet測(cè)試集(共有1 000個(gè)類(lèi)別)上,取得了17%的Top 5分類(lèi)錯(cuò)誤率,取得了突破性的進(jìn)展。而這個(gè)超大型神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,正是得益于兩塊GPU的強(qiáng)大計(jì)算能力。

    Stanford大學(xué)的研究人員提出了基于GPU陣列和分布式運(yùn)算加速神經(jīng)網(wǎng)絡(luò)的計(jì)算框架[21]。這個(gè)由16個(gè)GPU組成的GPU陣列,能夠訓(xùn)練比1 000 CPU的Google集群大6.5倍規(guī)模的深度神經(jīng)網(wǎng)絡(luò)。巨大的實(shí)用性使得基于GPU的人工神經(jīng)網(wǎng)絡(luò)受到科研機(jī)構(gòu)和IT企業(yè)的重視,是GPU能用計(jì)算研究熱點(diǎn)。

    5.2 群體智能優(yōu)化算法

    群體智能優(yōu)化算法是一類(lèi)基于群體的啟發(fā)式隨機(jī)優(yōu)化算法,在工程和科學(xué)領(lǐng)域有著廣泛的應(yīng)用。然而,群體算法優(yōu)化過(guò)程中需要對(duì)目標(biāo)函數(shù)進(jìn)行大量的評(píng)估,這也極大的限制了群體算法在某些問(wèn)題中的應(yīng)用。群體算法的內(nèi)在并行性,使得它們可以很好地利用GPU多核心、高度并行的特性。

    Zhou等[22]最早利用GPU進(jìn)行PSO算法的加速工作,在當(dāng)時(shí)的硬件條件下,取得了8X倍的加速比。隨后,基于GPU的PSO變種及多目標(biāo)群體算也相繼被提出[23-24]。

    作為典型的基于GPU的群體智能優(yōu)化方法實(shí)現(xiàn),Ding等[25]提出了基于GPU并行加速的煙花算法(GPU-FWA)[26]。圖 12 示意了煙花算法基于GPU實(shí)現(xiàn)的基本流程。

    圖12 基于GPU的煙花算法實(shí)現(xiàn)示意圖Fig.12 Diagram of GPU-FWA

    GPU-FWA充分利用了GPU內(nèi)存層級(jí)結(jié)構(gòu),主要數(shù)據(jù)通訊被限制在共享內(nèi)存之間,從而減少了數(shù)據(jù)傳輸開(kāi)銷(xiāo)。同時(shí),GPU-FWA通過(guò)一種改進(jìn)后的交互機(jī)制,進(jìn)一步提高了運(yùn)行速度。在對(duì)經(jīng)典基準(zhǔn)測(cè)試函數(shù)上的測(cè)試表明,GPU-FWA相對(duì)于傳統(tǒng)基于CPU的煙花算法,加速近200倍。

    群體智能優(yōu)化方法也在大量實(shí)際問(wèn)題獲得良好應(yīng)用。Rymut等[27]實(shí)現(xiàn)的GPU版本的基于PSO的體追蹤算法提速20~40倍。Mussi等[28]實(shí)現(xiàn)的基于異步PSO的人體追蹤算法,將原程序由CPU端的幾分鐘,提升到了幾秒鐘內(nèi)完成,實(shí)現(xiàn)了跟蹤的實(shí)時(shí)性,提高的算法的實(shí)用性。Nobile等[29]將GPU多種群PSO應(yīng)用于生物系統(tǒng)的參數(shù)估計(jì),運(yùn)行時(shí)間從6 h縮減到14 min,大大加快了參數(shù)選擇過(guò)程。利用GPU加速群體算法,不僅提高了原有應(yīng)用的速度,而且也擴(kuò)展了群體優(yōu)化方法的應(yīng)用范圍。新的基于GPU的群體算法的應(yīng)用在不斷的出現(xiàn),成研究的熱點(diǎn)。

    6 分析與討論

    6.1 GPU通用計(jì)算的缺點(diǎn)

    首先,并非所有的計(jì)算任務(wù)都適合利用GPU進(jìn)行計(jì)算。GPU適用于存在大量的數(shù)據(jù)并行性并且數(shù)據(jù)之間無(wú)復(fù)雜邏輯依賴(lài)的計(jì)算任務(wù)(典型的如矩陣計(jì)算)。對(duì)于存在復(fù)雜邏輯和隨機(jī)讀寫(xiě)的應(yīng)用場(chǎng)景,GPU可能并不是最佳的選擇。

    其次,GPU對(duì)于算數(shù)運(yùn)算的支持還有待提高。雖然現(xiàn)在主流GPU都支持符合IEEE標(biāo)準(zhǔn)的浮點(diǎn)運(yùn)算,但在對(duì)雙精度浮點(diǎn)的支持上還有待提高。例如,經(jīng)驗(yàn)表明,對(duì)于同樣的網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練方法,使用單精度運(yùn)算的出錯(cuò)概率要明顯高于雙精度運(yùn)算。同時(shí),普通消費(fèi)級(jí)別的GPU不支持ECC校驗(yàn),這一點(diǎn)在開(kāi)發(fā)對(duì)運(yùn)算可靠性要求較高的應(yīng)用時(shí)需要特別注意。

    同常規(guī)的并行編程一樣,GPU的高度并行性也使得程序的調(diào)試工作較為困難。雖然已有大量工具可以用來(lái)輔助調(diào)試,但對(duì)于邏輯錯(cuò)誤等的調(diào)試依然是一項(xiàng)艱巨的挑戰(zhàn)。

    另外,目前基于GPU開(kāi)發(fā)的程序在可移植上還存在不足。CUDA由于其簡(jiǎn)易性和相對(duì)完善的生態(tài),在GPGPU領(lǐng)域處于絕對(duì)的領(lǐng)先地位,然而它僅僅支持NVIDIA的GPU?;陂_(kāi)放標(biāo)準(zhǔn)的OpenCL的程序雖然具有移植性,但是移植性能情況取決于硬件平臺(tái)OpenCL驅(qū)動(dòng)性能。目前,OpenCL的流行度正在不斷提升,軟硬件廠商對(duì)OpenCL支持力度也在不斷增大。在未來(lái)幾年,GPU編程的可移植性有望逐漸改善。

    6.2 GPU通用計(jì)算發(fā)展趨勢(shì)

    由于智能手機(jī)、平板電腦和可穿戴設(shè)備的普及,以及人們對(duì)于語(yǔ)音、視頻等多媒體資源需要的不斷高漲,GPU也在這是相對(duì)新興的領(lǐng)域得到廣泛應(yīng)用。未來(lái),GPU通用計(jì)算也很有可能在這些領(lǐng)域發(fā)揮重要影響,有望在這一領(lǐng)域帶來(lái)一場(chǎng)計(jì)算變革。而這些非傳統(tǒng)的計(jì)算設(shè)備往往具有低功耗和嵌入式的特點(diǎn),這也給GPU計(jì)算帶來(lái)了新的挑戰(zhàn)[30,31]。

    互聯(lián)網(wǎng)的日新月異,大數(shù)據(jù)的來(lái)勢(shì)洶洶,也為大規(guī)模服務(wù)器端計(jì)算帶來(lái)了巨大的挑戰(zhàn)。將GPU用于服務(wù)器將是應(yīng)對(duì)挑戰(zhàn)的一種潛在的應(yīng)對(duì)方案。由于GPU缺乏CPU的通用性和靈活性,選擇合適的組織方式便尤為重要。一種可能的方案是將GPU和CPU按照一定的比例組合(例如,一個(gè)計(jì)算結(jié)點(diǎn)配置若干數(shù)量的CPU和GPU)。目前,針對(duì)GPU陣列或分布式集群,已經(jīng)有一些硬件連接解決方案和中間件支持。然而,這CPU和GPU之間的通信可能帶來(lái)潛在的性能瓶頸?;旌霞軜?gòu)是另一種可能的選擇方案。例如,AMD等硬件廠商提出HSA(heterogeneous system architecture)概念,試圖將 GPU和CPU在物理架構(gòu)上進(jìn)行深度整合,通過(guò)共享物理內(nèi)存方式減小通信開(kāi)銷(xiāo)。由于基于HAS這一新型體系結(jié)構(gòu)的硬件還未大規(guī)模面世,因此其性能還有待在理論和實(shí)踐中進(jìn)一步檢驗(yàn)。

    7 結(jié)束語(yǔ)

    在計(jì)算領(lǐng)域,已經(jīng)從多核時(shí)代跨向眾核時(shí)代,具有眾核架構(gòu)的GPU已經(jīng)進(jìn)入高性能計(jì)算的主流行列。目前,GPU通用編程的軟硬件平臺(tái)已經(jīng)相對(duì)成熟,成為了計(jì)算領(lǐng)域的重要力量。GPU能以相對(duì)低廉的價(jià)格提供巨大的計(jì)算能力,從而獲得了廣泛的應(yīng)用。GPU通用計(jì)算的普及,使個(gè)人和小型機(jī)構(gòu)能有機(jī)會(huì)獲得以往昂貴的大型、超級(jí)計(jì)算機(jī)才能提供的計(jì)算能力。可以說(shuō),GPU在一定程度上改變了計(jì)算領(lǐng)域的格局和編程開(kāi)發(fā)模式。

    GPU高度并行的特點(diǎn)使得GPU能夠高效地實(shí)現(xiàn)計(jì)算智能算法,以應(yīng)對(duì)大規(guī)模復(fù)雜問(wèn)題,并且已經(jīng)在人工神經(jīng)網(wǎng)絡(luò)和群體智能優(yōu)化算法等方面獲得了大量的成功應(yīng)用。GPU已經(jīng)成為深度學(xué)習(xí)領(lǐng)域中事實(shí)上的標(biāo)準(zhǔn)計(jì)算平臺(tái),在圖像、語(yǔ)音自然語(yǔ)言處理等領(lǐng)域發(fā)揮著不可替代的作用?;诙郍PU和GPU集群的深度網(wǎng)絡(luò)實(shí)現(xiàn)與訓(xùn)練,也是深度學(xué)習(xí)領(lǐng)域的研究熱點(diǎn)。群體智能優(yōu)化方法以其內(nèi)在并行性,在GPU平臺(tái)獲得了良好的加速效果,從而擴(kuò)大了群體算法求解問(wèn)題的規(guī)模和范圍。隨著多目標(biāo)優(yōu)化應(yīng)用和研究的日益廣泛,基于GPU的多目標(biāo)群體智能優(yōu)化方法將逐步流行,以更好地應(yīng)對(duì)大規(guī)模復(fù)雜優(yōu)化問(wèn)題。

    總之,作為通用計(jì)算單元,GPU將以更加多樣化的形式活躍在智能計(jì)算及其他計(jì)算領(lǐng)域。

    [1]OWENS J D,LUEBKE D,GOVINDARAJU N,et al.A survey of general-purpose computation on graphics hardware[J].Computer Graphics Forum,2007,26(1):80-113.

    [2]OWENS J D,LUEBKE D,GOVINDARAJU N,et al.GPU computing[J].Proceedings of the IEEE,2008,96(5):879-899.

    [3]SUTTER H.The free lunch is over:a fundamental turn toward concurrency in software[J].Dr.Dobb’s Journal,2005,30(3):202-210.

    [4]ROSS P E.Why CPU frequency stalled[J].Spectrum,2008,45(4):72-78.

    [5]BORKAR S.Getting gigascale chips:challenges and opportunities in continuing Moore's Law[J].Queue,2003,1(7):26-33.

    [6]NVIDIA.CUDA C programming guide v6.5[R].Santa Clara,CA,USA:NVIDIA Corporation,2014.

    [7]JARARWEH Y,JARRAH M,BOUSSELHAM A,et al.GPU-based personal supercomputing[C]//2013 IEEE Jordan Conference on Applied Electrical Engineering and Computing Technologies.Amman,2013:1-5.

    [8]KAPASI U J,RIXNER S,DALLY W J,et al.Programmable stream processors[J].Computer,2003,36(8):54-62.

    [9]BUCK I,F(xiàn)OLEY T,HORN D,et al.Brook for GPUs:stream computing on graphics hardware[J].ACM Transactions on Graphics,2004,23(3):777-786.

    [10]Microsoft.C++accelerated massive parallelism[Z].Redmond,WA,USA:Microsoft,2013.

    [11]NVIDIA.CUDA C best practices guide version 4.1[R].Santa Clara,CA,USA:NVIDIA Corporation,2012.

    [12]NVIDIA.GPU-Accelerated Libraries[OL/EB].[2015-01-05].https://developer.nvidia.com/gpu-accelerated-libraries.

    [13]JIA Y,SHELHAMER E,DONAHUE J,et al.Caffe:convolutional architecture for fast feature embedding[C]//Proceedings of the ACM International Conference on Multimedia,[s.l.],2014:675-678.

    [14]GASTER B,HOWES L,KAELI D R,等.OpenCL異構(gòu)計(jì)算[M].北京:清華大學(xué)出版社,2012:10-35.

    [15]KIRK D B,HWU W W.Programming massively parallel processors:a Hands-on approach[M].Beijing:Tsinghua University Press,2010:205-220.

    [16]MUNSHI A,GASTER B,MATTSON T G,et al.OpenCL Programming Guide[M].Boston:Addison_Wesley Professional,2011:63-68.

    [17]AMD上海研發(fā)中心.跨平臺(tái)的多核與從核編程講義——OpenCL 的方式[M].上海:AMD,2010:1-154.

    [18]FARBER R.高性能CUDA應(yīng)用設(shè)計(jì)與開(kāi)發(fā)[M].北京:機(jī)械工業(yè)出版社,2013:1-49.

    [19]ZEILER M,F(xiàn)ERGUS R.Visualizing and understanding convolutional networks[C]//Proceedings of the 13th European Conference on Computer Vision.Zurich,Switzerland,2014:818-833.

    [20]HINTON G,OSINDERO S,WELLING M,et al.Unsupervised discovery of nonlinear structure using contrastive backpropagation[J].Nature,2006,30(4):725-731.

    [21]KRIZHEVSKY A,SUTSKEVER I,HINTON G.Imagenet classification with deep convolutionalneuralnetworks[C]//Advances in Neural Information Processing Systems 25.Reno,Nevada,USA,2012:1106-1114.

    [22]COATES A,HUVAL B,WANG T,et al.Deep learning with COTS HPC systems[C]//Proceedings of the 30th International Conference on Machine Learning.Atlanta,USA,2013:1337-1345.

    [23]ZHOU Y,TAN Y.GPU-based parallel particle swarm optimization[C]//IEEE Congress on Evolutionary Computation.Trondheim,Norway,2009:1493-1500.

    [24]ZHOU Y,TAN Y.Particle swarm optimization with triggered mutation and its implementation based on GPU[C]//GECCO'10:Proceedings of the 12th Annual Conference on Genetic and Evolutionary Computation.Portland,Oregon,USA,2010:1-8.

    [25]ZHOU Y,TAN Y.GPU-based parallel multi-objective particle swarm optimization[J].International Journal of Artificial Intelligence,2011,7(A11):125-141.

    [26]DING K,TAN Y.A GPU-based parallel fireworks algorithm for optimization[C]//GECCO'13:Proceedings of the Fifteenth Annual Conference on Genetic and Evolutionary Computation Conference.Amsterdam,the Netherlands,2013:9-16.

    [27]TAN Y,ZHU Y.Fireworks algorithm for optimization[C]//First International Conference of Swarm Intelligence.Beijing,China,2010:355-364.

    [28]RYMUT B,KWOLEK B.GPU-supported object tracking using adaptive appearance models and particle swarm optimization[C]//International Conference on Computer Vi-sion and Graphics,Warsaw,Poland,2010:227-234.

    [29]MUSSI L,IVEKOVIC S,CAGNONI S.Markerless articulated human body tracking from multi-view video with GPU-PSO[C]//9th International Conference on Environmental Systems.York,UK,2010:97-108.

    [30]NOBILE M S,BESOZZI D,CAZZANIGA P,et al.A GPU-based multi-swarm PSO method for parameter estimation in stochastic biological systems exploiting discretetime target series[C]//10th European Conference on Evolutionary Computation,Machine Learning and Data Mining in Computational Biology.Málaga,Spain,2012,7246:74-85.

    [31]MAGHAZEH A,BORDOLOI UD,ELES P,et al.General purpose computing on low-power embedded GPUs:has it come of age[R].Link?ping University Electronic Press,2013.

    [32]HALLMANS D,SANDSTROM K,LINDGREN M,et al.GPGPU for industrial control systems[C]//2013 IEEE 18th Conference on Emerging Technologies Factory Automation.Cagliari,Italy,2013:1-4.

    猜你喜歡
    線(xiàn)程內(nèi)存編程
    我家有只編程貓
    我家有只編程貓
    我家有只編程貓
    我家有只編程貓
    “春夏秋冬”的內(nèi)存
    淺談linux多線(xiàn)程協(xié)作
    基于內(nèi)存的地理信息訪問(wèn)技術(shù)
    Linux線(xiàn)程實(shí)現(xiàn)技術(shù)研究
    么移動(dòng)中間件線(xiàn)程池并發(fā)機(jī)制優(yōu)化改進(jìn)
    上網(wǎng)本為什么只有1GB?
    精品人妻在线不人妻| 国产女主播在线喷水免费视频网站| 少妇精品久久久久久久| 美女视频免费永久观看网站| 91精品伊人久久大香线蕉| 中文精品一卡2卡3卡4更新| 久久精品久久久久久噜噜老黄| 久久久精品国产亚洲av高清涩受| 18禁黄网站禁片午夜丰满| 超色免费av| 国产精品一国产av| 欧美精品人与动牲交sv欧美| 国产在线免费精品| h视频一区二区三区| 国产野战对白在线观看| 成年av动漫网址| 超碰97精品在线观看| 国产日韩欧美视频二区| 亚洲午夜精品一区,二区,三区| 五月天丁香电影| 咕卡用的链子| 女人爽到高潮嗷嗷叫在线视频| 高清不卡的av网站| 久久精品国产综合久久久| 国产1区2区3区精品| 我要看黄色一级片免费的| 日韩免费高清中文字幕av| 欧美国产精品va在线观看不卡| 欧美国产精品va在线观看不卡| 免费在线观看视频国产中文字幕亚洲 | av不卡在线播放| 天天躁日日躁夜夜躁夜夜| 天天躁日日躁夜夜躁夜夜| 下体分泌物呈黄色| 美女视频免费永久观看网站| 一级a爱视频在线免费观看| 午夜福利影视在线免费观看| 一级黄色大片毛片| 黄网站色视频无遮挡免费观看| 一边摸一边抽搐一进一出视频| 建设人人有责人人尽责人人享有的| 97人妻天天添夜夜摸| 韩国高清视频一区二区三区| 亚洲精品中文字幕在线视频| 一级黄片播放器| 免费日韩欧美在线观看| 亚洲精品一卡2卡三卡4卡5卡 | 久久久久国产一级毛片高清牌| 欧美人与性动交α欧美精品济南到| 国产国语露脸激情在线看| 各种免费的搞黄视频| 美女扒开内裤让男人捅视频| 欧美少妇被猛烈插入视频| 欧美黄色淫秽网站| 国产成人免费观看mmmm| 成人国语在线视频| 人人妻,人人澡人人爽秒播 | 国产精品免费大片| 婷婷色综合大香蕉| 免费观看a级毛片全部| 精品欧美一区二区三区在线| 欧美少妇被猛烈插入视频| 天堂8中文在线网| 久久青草综合色| 高清不卡的av网站| 亚洲精品第二区| 亚洲精品一区蜜桃| 国产精品久久久av美女十八| 国产在线一区二区三区精| 亚洲人成网站在线观看播放| 黄片小视频在线播放| 成人免费观看视频高清| 精品少妇黑人巨大在线播放| 久久精品人人爽人人爽视色| 夫妻性生交免费视频一级片| 国产成人精品久久二区二区91| 大型av网站在线播放| 51午夜福利影视在线观看| 日韩av不卡免费在线播放| 操出白浆在线播放| 久久午夜综合久久蜜桃| 国产99久久九九免费精品| 免费av中文字幕在线| 中国国产av一级| 国产高清videossex| 欧美 亚洲 国产 日韩一| 中文乱码字字幕精品一区二区三区| 日韩免费高清中文字幕av| 王馨瑶露胸无遮挡在线观看| 午夜激情av网站| 天堂俺去俺来也www色官网| 国产亚洲精品第一综合不卡| 青春草视频在线免费观看| 亚洲,欧美精品.| 一二三四社区在线视频社区8| 亚洲欧美精品自产自拍| 一区二区三区精品91| 99久久精品国产亚洲精品| 国产视频首页在线观看| 丰满少妇做爰视频| 亚洲精品中文字幕在线视频| 国产欧美日韩一区二区三 | 国产成人精品久久二区二区免费| 日日摸夜夜添夜夜爱| 好男人视频免费观看在线| 亚洲成av片中文字幕在线观看| 90打野战视频偷拍视频| 国产成人精品无人区| 国产成人精品无人区| 久久久精品国产亚洲av高清涩受| 亚洲,一卡二卡三卡| 久久久精品区二区三区| 人妻 亚洲 视频| 亚洲精品美女久久久久99蜜臀 | 亚洲精品av麻豆狂野| 夜夜骑夜夜射夜夜干| 男人爽女人下面视频在线观看| 午夜激情av网站| 久久久久久人人人人人| 国产主播在线观看一区二区 | 熟女少妇亚洲综合色aaa.| 少妇猛男粗大的猛烈进出视频| 国产免费视频播放在线视频| 老司机在亚洲福利影院| 777久久人妻少妇嫩草av网站| 人人妻,人人澡人人爽秒播 | 免费看十八禁软件| 别揉我奶头~嗯~啊~动态视频 | 两人在一起打扑克的视频| 国产成人免费观看mmmm| 啦啦啦在线观看免费高清www| 欧美大码av| 精品久久久精品久久久| 精品国产超薄肉色丝袜足j| 97在线人人人人妻| 大香蕉久久网| 日本a在线网址| 免费人妻精品一区二区三区视频| 一级毛片电影观看| 色播在线永久视频| 国产亚洲av高清不卡| 女人高潮潮喷娇喘18禁视频| 久久狼人影院| 精品视频人人做人人爽| 天堂中文最新版在线下载| 亚洲免费av在线视频| 熟女少妇亚洲综合色aaa.| 色视频在线一区二区三区| 男男h啪啪无遮挡| 午夜日韩欧美国产| 两个人看的免费小视频| 国产精品一区二区免费欧美 | 国产片内射在线| 亚洲综合色网址| 国产高清videossex| 国产99久久九九免费精品| 又黄又粗又硬又大视频| 久久国产亚洲av麻豆专区| 国语对白做爰xxxⅹ性视频网站| 国产黄色视频一区二区在线观看| 少妇精品久久久久久久| 久久久久精品人妻al黑| 交换朋友夫妻互换小说| 久久99精品国语久久久| 亚洲精品乱久久久久久| 看免费av毛片| 秋霞在线观看毛片| 国产高清视频在线播放一区 | 成人国产一区最新在线观看 | 亚洲一码二码三码区别大吗| 日韩av在线免费看完整版不卡| 又大又爽又粗| 欧美日韩福利视频一区二区| 国产精品人妻久久久影院| 色视频在线一区二区三区| www日本在线高清视频| 国产精品一区二区精品视频观看| 久久人人97超碰香蕉20202| 欧美黑人精品巨大| av有码第一页| 满18在线观看网站| 后天国语完整版免费观看| 免费不卡黄色视频| 国产成人av激情在线播放| 一级毛片我不卡| 亚洲精品第二区| 精品人妻1区二区| 赤兔流量卡办理| 黄色视频不卡| 欧美激情高清一区二区三区| 日韩大码丰满熟妇| www.精华液| 亚洲精品国产av成人精品| 久久久久久免费高清国产稀缺| 亚洲国产成人一精品久久久| 国产av一区二区精品久久| 精品少妇黑人巨大在线播放| 人成视频在线观看免费观看| 欧美日韩福利视频一区二区| 搡老乐熟女国产| 超碰成人久久| 亚洲精品中文字幕在线视频| 日韩精品免费视频一区二区三区| 人体艺术视频欧美日本| 又大又黄又爽视频免费| 亚洲欧美日韩高清在线视频 | 久久性视频一级片| 熟女少妇亚洲综合色aaa.| 国产精品一二三区在线看| 波野结衣二区三区在线| e午夜精品久久久久久久| 又紧又爽又黄一区二区| 黄频高清免费视频| 国产日韩一区二区三区精品不卡| 亚洲伊人色综图| 一级,二级,三级黄色视频| 性色av乱码一区二区三区2| 中文字幕最新亚洲高清| videos熟女内射| 美女大奶头黄色视频| 国产99久久九九免费精品| 国产在线观看jvid| 精品熟女少妇八av免费久了| 国产精品99久久99久久久不卡| 久久精品国产亚洲av涩爱| 中文字幕色久视频| 自线自在国产av| 国产精品 国内视频| 免费一级毛片在线播放高清视频 | 在现免费观看毛片| 亚洲中文av在线| 熟女少妇亚洲综合色aaa.| 少妇粗大呻吟视频| 久久天躁狠狠躁夜夜2o2o | 天天操日日干夜夜撸| 人人澡人人妻人| 天天躁狠狠躁夜夜躁狠狠躁| 日本午夜av视频| 国产成人a∨麻豆精品| 热re99久久精品国产66热6| 妹子高潮喷水视频| 搡老岳熟女国产| 国产高清不卡午夜福利| 亚洲国产欧美在线一区| 手机成人av网站| 日韩欧美一区视频在线观看| 欧美亚洲 丝袜 人妻 在线| 欧美久久黑人一区二区| 国产高清视频在线播放一区 | 精品国产一区二区三区久久久樱花| 少妇人妻 视频| 在现免费观看毛片| 国产精品久久久人人做人人爽| 中国美女看黄片| 亚洲 欧美一区二区三区| 精品人妻一区二区三区麻豆| 中文字幕人妻丝袜制服| 国产男女内射视频| 亚洲精品在线美女| 黄色视频不卡| 亚洲av成人精品一二三区| 午夜免费鲁丝| 亚洲精品av麻豆狂野| 麻豆乱淫一区二区| 熟女av电影| 免费观看a级毛片全部| 欧美 亚洲 国产 日韩一| 捣出白浆h1v1| 国产高清国产精品国产三级| 欧美av亚洲av综合av国产av| 成年人黄色毛片网站| 久久精品亚洲熟妇少妇任你| 黑丝袜美女国产一区| 免费av中文字幕在线| av在线app专区| 成年人黄色毛片网站| 成年人午夜在线观看视频| 亚洲中文av在线| av天堂久久9| 天天影视国产精品| 亚洲伊人久久精品综合| 亚洲专区中文字幕在线| 国产精品成人在线| 秋霞在线观看毛片| 日韩人妻精品一区2区三区| 国产免费一区二区三区四区乱码| 久久精品国产亚洲av涩爱| 午夜久久久在线观看| 国产在线一区二区三区精| 两性夫妻黄色片| 亚洲国产精品成人久久小说| 国产亚洲精品久久久久5区| 校园人妻丝袜中文字幕| 久久亚洲国产成人精品v| 18禁裸乳无遮挡动漫免费视频| 超碰97精品在线观看| 99国产精品一区二区蜜桃av | 久久人妻熟女aⅴ| av在线播放精品| 久久天堂一区二区三区四区| 午夜福利在线免费观看网站| 69精品国产乱码久久久| 亚洲人成电影观看| 亚洲九九香蕉| 黄色视频不卡| 在线天堂中文资源库| 久久精品国产亚洲av涩爱| 两个人免费观看高清视频| 捣出白浆h1v1| 亚洲av美国av| 极品人妻少妇av视频| 狂野欧美激情性bbbbbb| 成年美女黄网站色视频大全免费| 国产一区二区三区综合在线观看| www.熟女人妻精品国产| 日本91视频免费播放| 两性夫妻黄色片| 99国产精品一区二区三区| 啦啦啦 在线观看视频| 一边亲一边摸免费视频| 精品亚洲成国产av| 日本一区二区免费在线视频| 欧美日韩黄片免| 男女下面插进去视频免费观看| av天堂久久9| 天天躁狠狠躁夜夜躁狠狠躁| 一区二区av电影网| 亚洲av综合色区一区| 亚洲欧美色中文字幕在线| 婷婷色综合大香蕉| 热re99久久精品国产66热6| 久久99一区二区三区| 真人做人爱边吃奶动态| 在线精品无人区一区二区三| 国产人伦9x9x在线观看| 男女无遮挡免费网站观看| 日本wwww免费看| 激情视频va一区二区三区| 大话2 男鬼变身卡| 又大又爽又粗| 国产av精品麻豆| 80岁老熟妇乱子伦牲交| 成人午夜精彩视频在线观看| 国产精品二区激情视频| 亚洲国产精品一区二区三区在线| 大香蕉久久成人网| 日本色播在线视频| 日本色播在线视频| 纵有疾风起免费观看全集完整版| 肉色欧美久久久久久久蜜桃| 国产女主播在线喷水免费视频网站| 高清黄色对白视频在线免费看| 老司机午夜十八禁免费视频| 校园人妻丝袜中文字幕| 久久精品久久久久久久性| 国产淫语在线视频| 欧美xxⅹ黑人| 国产成人一区二区三区免费视频网站 | 国产欧美亚洲国产| 狠狠婷婷综合久久久久久88av| 性色av乱码一区二区三区2| 亚洲五月婷婷丁香| 亚洲av成人精品一二三区| 爱豆传媒免费全集在线观看| 国产亚洲欧美精品永久| 精品一区二区三区av网在线观看 | 免费一级毛片在线播放高清视频 | 十八禁网站网址无遮挡| av有码第一页| 久久精品亚洲av国产电影网| 久久久国产一区二区| 人妻人人澡人人爽人人| 亚洲国产欧美日韩在线播放| 国产精品二区激情视频| 国产一区二区三区av在线| 男女国产视频网站| 婷婷色综合www| 午夜免费成人在线视频| 捣出白浆h1v1| 大香蕉久久成人网| 在线av久久热| 午夜日韩欧美国产| 超碰成人久久| 中文乱码字字幕精品一区二区三区| 亚洲av综合色区一区| kizo精华| 亚洲激情五月婷婷啪啪| 国产男人的电影天堂91| 国产免费一区二区三区四区乱码| 女人被躁到高潮嗷嗷叫费观| 国产免费又黄又爽又色| 天天添夜夜摸| 99热国产这里只有精品6| 中文字幕色久视频| 国产av国产精品国产| 国产高清视频在线播放一区 | 尾随美女入室| 一区在线观看完整版| 国产成人免费无遮挡视频| 亚洲图色成人| 免费观看人在逋| 午夜激情久久久久久久| 亚洲欧美一区二区三区国产| 亚洲成人国产一区在线观看 | 秋霞在线观看毛片| 国产精品久久久人人做人人爽| 国产99久久九九免费精品| 每晚都被弄得嗷嗷叫到高潮| 看免费成人av毛片| 视频区图区小说| 91精品伊人久久大香线蕉| 嫩草影视91久久| 久久人妻福利社区极品人妻图片 | 国产成人欧美| 黄色视频不卡| 1024视频免费在线观看| 亚洲欧洲精品一区二区精品久久久| 一级黄色大片毛片| 精品少妇黑人巨大在线播放| 亚洲一卡2卡3卡4卡5卡精品中文| av国产精品久久久久影院| 欧美日韩亚洲高清精品| 欧美激情 高清一区二区三区| 这个男人来自地球电影免费观看| svipshipincom国产片| 欧美精品啪啪一区二区三区 | 多毛熟女@视频| 日本欧美国产在线视频| 国产xxxxx性猛交| 男女之事视频高清在线观看 | xxxhd国产人妻xxx| 婷婷成人精品国产| 精品人妻熟女毛片av久久网站| 一区二区三区精品91| 国产片内射在线| 热re99久久精品国产66热6| 精品少妇黑人巨大在线播放| 欧美人与性动交α欧美精品济南到| 美女视频免费永久观看网站| 十八禁网站网址无遮挡| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲,一卡二卡三卡| 狠狠精品人妻久久久久久综合| 亚洲av日韩精品久久久久久密 | 精品欧美一区二区三区在线| 十八禁网站网址无遮挡| 成年美女黄网站色视频大全免费| 久久久国产一区二区| 国产无遮挡羞羞视频在线观看| 日韩,欧美,国产一区二区三区| 日韩伦理黄色片| 91精品伊人久久大香线蕉| 精品亚洲成国产av| 亚洲黑人精品在线| 成人18禁高潮啪啪吃奶动态图| 欧美日韩亚洲高清精品| videosex国产| 久久精品久久久久久噜噜老黄| 久久国产亚洲av麻豆专区| 无遮挡黄片免费观看| 18禁黄网站禁片午夜丰满| 91精品国产国语对白视频| 99久久人妻综合| 国产精品久久久久久人妻精品电影 | 中文字幕制服av| 嫁个100分男人电影在线观看 | 2018国产大陆天天弄谢| 亚洲国产成人一精品久久久| 亚洲人成电影观看| 狂野欧美激情性bbbbbb| 满18在线观看网站| 日韩免费高清中文字幕av| 国产在线免费精品| 黑人欧美特级aaaaaa片| 亚洲,欧美精品.| 国产精品欧美亚洲77777| 男女无遮挡免费网站观看| 成年女人毛片免费观看观看9 | 九色亚洲精品在线播放| 免费久久久久久久精品成人欧美视频| 久久久久久人人人人人| 欧美亚洲 丝袜 人妻 在线| 只有这里有精品99| 欧美日韩av久久| 大陆偷拍与自拍| 91精品国产国语对白视频| 亚洲,欧美精品.| 男女国产视频网站| 国产免费又黄又爽又色| 日本vs欧美在线观看视频| 狂野欧美激情性bbbbbb| 99精国产麻豆久久婷婷| 丁香六月欧美| a级片在线免费高清观看视频| 美女扒开内裤让男人捅视频| 日本五十路高清| 日本色播在线视频| 国产亚洲av高清不卡| 日韩大码丰满熟妇| 最新在线观看一区二区三区 | 91字幕亚洲| 后天国语完整版免费观看| 亚洲三区欧美一区| 男的添女的下面高潮视频| 免费在线观看视频国产中文字幕亚洲 | 免费在线观看影片大全网站 | 制服人妻中文乱码| 欧美97在线视频| 两人在一起打扑克的视频| 亚洲专区中文字幕在线| 精品国产乱码久久久久久小说| 美女视频免费永久观看网站| 国产色视频综合| 黄网站色视频无遮挡免费观看| 久久精品成人免费网站| 亚洲一区中文字幕在线| 国产成人精品久久久久久| 黄色毛片三级朝国网站| 久久av网站| 男女高潮啪啪啪动态图| 日韩精品免费视频一区二区三区| 日韩大片免费观看网站| 精品人妻一区二区三区麻豆| 国产成人91sexporn| 亚洲国产精品国产精品| 操出白浆在线播放| 激情视频va一区二区三区| 丰满饥渴人妻一区二区三| 电影成人av| 曰老女人黄片| 人成视频在线观看免费观看| 免费日韩欧美在线观看| 国产免费福利视频在线观看| 五月天丁香电影| 老鸭窝网址在线观看| 九色亚洲精品在线播放| 美女大奶头黄色视频| 9热在线视频观看99| 国产精品麻豆人妻色哟哟久久| 美女主播在线视频| 妹子高潮喷水视频| 成年人黄色毛片网站| 超碰97精品在线观看| 如日韩欧美国产精品一区二区三区| 亚洲三区欧美一区| 久久性视频一级片| 亚洲熟女毛片儿| 亚洲美女黄色视频免费看| 一区二区三区激情视频| 日韩av在线免费看完整版不卡| 欧美精品亚洲一区二区| 母亲3免费完整高清在线观看| 下体分泌物呈黄色| 日韩av在线免费看完整版不卡| 亚洲成人免费电影在线观看 | 丝袜脚勾引网站| 伊人亚洲综合成人网| 狂野欧美激情性bbbbbb| 国产黄色免费在线视频| 黄网站色视频无遮挡免费观看| 在线观看免费日韩欧美大片| 午夜两性在线视频| 香蕉国产在线看| 亚洲国产欧美日韩在线播放| 精品熟女少妇八av免费久了| 飞空精品影院首页| 亚洲人成电影免费在线| 伊人久久大香线蕉亚洲五| 久久这里只有精品19| 涩涩av久久男人的天堂| 爱豆传媒免费全集在线观看| 国产淫语在线视频| 亚洲精品国产色婷婷电影| 人妻一区二区av| av国产精品久久久久影院| 19禁男女啪啪无遮挡网站| 一区二区三区四区激情视频| 国产亚洲欧美在线一区二区| 丝袜美足系列| 亚洲九九香蕉| 久久久久网色| 亚洲av欧美aⅴ国产| 国产精品一二三区在线看| 亚洲色图 男人天堂 中文字幕| 欧美成人精品欧美一级黄| 精品一区二区三区四区五区乱码 | 中文字幕人妻丝袜制服| www日本在线高清视频| 老鸭窝网址在线观看| 日韩中文字幕欧美一区二区 | 久久人人爽人人片av| 只有这里有精品99| 欧美成人精品欧美一级黄| 久久这里只有精品19| 天天影视国产精品| 午夜久久久在线观看| 少妇被粗大的猛进出69影院| 9色porny在线观看| 亚洲中文av在线| 高清不卡的av网站| 亚洲av电影在线进入| 2021少妇久久久久久久久久久| av网站免费在线观看视频| 亚洲熟女毛片儿| 在线观看免费日韩欧美大片| 国产爽快片一区二区三区| 日韩一卡2卡3卡4卡2021年| 国产精品久久久av美女十八| 国产激情久久老熟女| 亚洲男人天堂网一区| 亚洲 欧美一区二区三区| 久久国产精品大桥未久av| 超碰成人久久| 免费看十八禁软件| 亚洲av综合色区一区|