• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于GPU的LDPC存儲(chǔ)優(yōu)化并行譯碼結(jié)構(gòu)設(shè)計(jì)

      2013-11-05 06:55:58劉榮科
      關(guān)鍵詞:譯碼線程吞吐量

      葛 帥 劉榮科 侯 毅

      (北京航空航天大學(xué) 電子信息工程學(xué)院,北京100191)

      LDPC(Low-DensityParity-Check)碼由Gallager于1962最早提出[1],但限于當(dāng)時(shí)的計(jì)算機(jī)仿真水平,它的出現(xiàn)并沒有得到足夠的重視.直到20世紀(jì)末,Mackay,Neal等人發(fā)現(xiàn)其為具有逼近香農(nóng)限性能的優(yōu)秀糾錯(cuò)編碼,具有很強(qiáng)的糾錯(cuò)和檢錯(cuò)能力.準(zhǔn)循環(huán)低密度奇偶校驗(yàn)碼(QCLCPC,Quasi-Cyclic LDPC)以其碼字設(shè)計(jì)的低復(fù)雜度,正逐漸取代Turbo碼成為信道編碼的研究熱點(diǎn).經(jīng)典的LDPC碼的譯碼方式是基于Tanner圖的雙相消息傳遞(TPMP,Two Phase Message Passing)譯碼算法.TPMP譯碼算法具有性能優(yōu)異且易于使用并行計(jì)算實(shí)現(xiàn)等優(yōu)點(diǎn).現(xiàn)今采用的LDPC碼譯碼方式大多由TPMP譯碼算法演化而來.由于現(xiàn)今采用的LDPC碼多為準(zhǔn)循環(huán)碼,其校驗(yàn)陣可按行劃分為最大列重不大于1的若干行塊,譯碼時(shí)可以將LDPC碼看作若干單校驗(yàn)分量碼的級聯(lián)碼,利用Turbo原理進(jìn)行分量碼之間的迭代消息傳遞過程,稱為Turbo消息傳遞(TDMP,Turbo Decoding Message Passing)譯碼算法[2-3],也稱分層譯碼算法.

      在實(shí)際應(yīng)用中,為獲得高吞吐量和實(shí)時(shí)處理能力,LDPC碼的譯碼實(shí)現(xiàn)通常采用硬件平臺(tái),如FPGA(Field Pregrammable Gate Arrays).但通常硬件平臺(tái)靈活性和可擴(kuò)展性較差[4-6],只能勝任某些固定碼率和碼長的LDPC碼的譯碼工作.由于LDPC碼的應(yīng)用場合不斷擴(kuò)大,對譯碼靈活性、擴(kuò)展性的要求越來越高,使得傳統(tǒng)硬件平臺(tái)實(shí)現(xiàn)的LDPC碼的譯碼架構(gòu)難以應(yīng)付多碼長、變碼率譯碼的缺點(diǎn)日益突出.

      如今,采用多核并行處理是提升處理器性能的重要方式[7].圖形處理單元(GPU,Graphic Processing Unit)通常包含成并行結(jié)構(gòu)的海量運(yùn)算單元.由于市場的需要對GPU所提出的要求越來越高,GPU已經(jīng)發(fā)展成為了并行度高、多線程、計(jì)算快速、儲(chǔ)存器帶寬大的高性能通用計(jì)算設(shè)備[8-9].然而傳統(tǒng)的GPU編程大多需依靠如Direct3D或OpenGL的標(biāo)準(zhǔn)圖形接口,這使GPU編程受限于圖形應(yīng)用程序編程接口,使用這些圖像渲染語言要求編程者擁有相應(yīng)的計(jì)算機(jī)圖形學(xué)知識(shí).Nvidia公司發(fā)布的統(tǒng)一計(jì)算設(shè)備架構(gòu)(CUDA,Compute Unified Device Architecture),通過對標(biāo)準(zhǔn)C語言的一定拓展與改造,使得用戶可以通過類C語言代碼來實(shí)現(xiàn)GPU線程的調(diào)度,為GPU在通用計(jì)算領(lǐng)域的應(yīng)用提供了良好的開發(fā)環(huán)境.

      由于GPU執(zhí)行高并行計(jì)算任務(wù)體現(xiàn)出的巨大優(yōu)勢,尤其是其相對于傳統(tǒng)硬件平臺(tái)的靈活性與可擴(kuò)展性優(yōu)勢,其在LDPC碼譯碼領(lǐng)域具有很高的應(yīng)用前景,得到了廣泛的研究.文獻(xiàn)[10]中利用OpenGL提供的標(biāo)準(zhǔn)圖型接口,在Caravela平臺(tái)上對5種碼字進(jìn)行譯碼,相對于CPU譯碼吞吐量獲得3.5倍加速.文獻(xiàn)[11]中利用異步數(shù)據(jù)傳輸技術(shù)在NVIDIA Tesla C1060平臺(tái)上相比CPU平臺(tái)未優(yōu)化結(jié)果獲得了271倍的譯碼速度提升.文獻(xiàn)[12]中通過分析LDPC碼譯碼的數(shù)據(jù)結(jié)構(gòu),提出針對GPU平臺(tái)的聯(lián)合內(nèi)存訪問的優(yōu)化方式,在NVIDIA 8800GTX平臺(tái)和8位精度條件下,獲得了40 MB/s的吞吐量.文獻(xiàn)[13]提出通過充分利用顯存帶寬并引入提前停止準(zhǔn)則的方式提高LDPC碼TPMP譯碼的吞吐量.文獻(xiàn)[14]采用一種校驗(yàn)陣壓縮存儲(chǔ)的方式,將校驗(yàn)陣存儲(chǔ)在常量內(nèi)存中,對規(guī)則和非規(guī)則QC-LDPC碼,相比傳統(tǒng)存儲(chǔ)方法分別獲得了2倍和1.5倍的加速.

      本文提出一種基于Nvidia公司Fermi GPU架構(gòu)的LDPC存儲(chǔ)器優(yōu)化分層譯碼算法實(shí)現(xiàn)結(jié)構(gòu),幀間與幀內(nèi)并行相結(jié)合的并行結(jié)構(gòu),減少節(jié)點(diǎn)信息更新的運(yùn)算分支,對全局存儲(chǔ)器采用高效的聯(lián)合內(nèi)存訪問以及使用常數(shù)存儲(chǔ)器.測試結(jié)果表明,在同等硬件條件下,本文提出的基于GPU的兩級并行和合并訪存的譯碼優(yōu)化方案可以顯著提升LDPC譯碼速度.

      1 分層譯碼算法

      分層算法(TDMP)是一種按照因子圖上的校驗(yàn)節(jié)點(diǎn)順序進(jìn)行消息更新傳遞的串行譯碼機(jī)制,對目前廣泛應(yīng)用的QC-LDPC碼,將校驗(yàn)矩陣依據(jù)列重不超過1的原則分為若干行塊,每一行塊為一層,層內(nèi)校驗(yàn)節(jié)點(diǎn)的更新可并行完成,層間的消息傳遞為串行方式.每層可以定義一個(gè)新的校驗(yàn)矩陣Ct,各層校驗(yàn)矩陣的總和構(gòu)成了原校驗(yàn)矩陣,即:

      在迭代過程中逐層進(jìn)行更新,以最后一層的輸出作為當(dāng)前次迭代的譯碼輸出,進(jìn)行硬判決以及提前停止校驗(yàn).

      基于Log-BP的TDMP的算法描述如下:

      第一步:初始化信息:

      第二步:各層依次進(jìn)行迭代更新:

      在每一層中,對于校驗(yàn)節(jié)點(diǎn)c和變量節(jié)點(diǎn)v,層間的置信度傳遞如下計(jì)算:

      第三步:譯碼判決.待一次迭代結(jié)束后將獲得的信息進(jìn)行比特硬判決:

      若譯碼結(jié)果滿足校驗(yàn)方程或達(dá)到最大迭代次數(shù)則終止譯碼迭代.其中,對于第k次迭代中的第t層,校驗(yàn)節(jié)點(diǎn) c傳遞給變量節(jié)點(diǎn) v的信息由Rk,t,cv表示,變量節(jié)點(diǎn) v傳遞給校驗(yàn)節(jié)點(diǎn) c的信息由 Lk,t,cv表示,第 t層傳遞給下一層的變量節(jié)點(diǎn)的信息由 Lk,t,v表示,Li表示從信道接收得到的對數(shù)似然比軟信息,log-BP算法中的函數(shù)φ(x)定義為

      相較于傳統(tǒng)的TPMP譯碼算法,分層譯碼算法對比特節(jié)點(diǎn)的信息利用更加及時(shí),對每一層進(jìn)行并行譯碼后,立即將更新的置信信息傳遞到下一層進(jìn)行置信度更新,減少了譯碼的迭代次數(shù).根據(jù)文獻(xiàn)[3],相對于TPMP算法,分層譯碼算法能夠?qū)⑹諗康螖?shù)降低約50%.

      部分并行的分層譯碼算法利于并行資源受限的GPU平臺(tái)進(jìn)行譯碼結(jié)構(gòu)實(shí)現(xiàn),尤其是碼長上千的中長碼.本文提出的分層譯碼結(jié)構(gòu)利用幀間與幀內(nèi)并行相結(jié)合,充分發(fā)掘了GPU運(yùn)算潛力.

      2 結(jié)構(gòu)優(yōu)化設(shè)計(jì)

      2.1 校驗(yàn)陣壓縮與constant memory

      constant memory是GPU的片上只讀存儲(chǔ)器,其訪問延遲相比片外顯存中的global memory低兩個(gè)數(shù)量級.在Fermi架構(gòu)中,constant memory存儲(chǔ)空間為64 KB,多用于存儲(chǔ)CUDA程序中需讀取頻繁的只讀參數(shù).對于計(jì)算能力為2.x的GPU,當(dāng)屬于同一個(gè)half-warp的線程訪問constant memory中的同一數(shù)據(jù)時(shí),則發(fā)生數(shù)據(jù)廣播,只需一個(gè)訪存周期即可獲取數(shù)據(jù).

      傳統(tǒng)的校驗(yàn)陣存儲(chǔ)方式是將校驗(yàn)陣中每一行的非零元素所對應(yīng)的列號(hào)依次存儲(chǔ)至片下global memory存儲(chǔ)器中.譯碼過程中對校驗(yàn)陣的頻繁讀取會(huì)導(dǎo)致譯碼延遲.本文提出的LDPC碼分層譯碼結(jié)構(gòu)采用constant memory存儲(chǔ)校驗(yàn)矩陣,如圖1.短碼的校驗(yàn)矩陣可以直接寫入存儲(chǔ)器,但對中長碼,其校驗(yàn)矩陣規(guī)模遠(yuǎn)超過constant memory大小,必須對校驗(yàn)陣進(jìn)行壓縮存儲(chǔ).

      對于大部分QC-LCPC碼,其校驗(yàn)矩陣可分割為多個(gè)子方陣,每個(gè)子方陣為零陣或經(jīng)循環(huán)右移后的單位陣.對非零子陣,其所在列號(hào)、層號(hào)、層內(nèi)序號(hào)及右移次數(shù)即可表征其全部性質(zhì),層內(nèi)序號(hào)U指本子陣在本層內(nèi)為第U個(gè)非零子陣.存儲(chǔ)校驗(yàn)陣時(shí),僅需記錄非零子陣的位置信息與其單位陣右移位數(shù)即可.如圖1所示,將第L層層內(nèi)序號(hào)為U非零子陣的列號(hào)及其循環(huán)右移的位數(shù)分別存至兩個(gè)位寬為32 byte的constant memory區(qū)塊中的第L行第U列內(nèi).故存儲(chǔ)校驗(yàn)陣非零子陣列號(hào)及右移次數(shù)所需空間分別為G×32 byte.其中G為校驗(yàn)陣總層數(shù).以碼長40960校驗(yàn)位24576,子方陣階數(shù)2048的QC-LDPC碼為例,校驗(yàn)陣層數(shù)為G=24576/2048=12,存儲(chǔ)空間共需32×12×2=768 byte.

      圖1 校驗(yàn)陣壓縮方式

      2.2 global memory的聯(lián)合訪問

      global memory位于GPU片外的顯存中,在聯(lián)合讀取的條件下,global memory可提供很高的訪問帶寬,否則會(huì)產(chǎn)生分區(qū)訪問沖突,造成較高的訪存延遲.聯(lián)合訪問是指對于計(jì)算性能為2.x的Fermi架構(gòu)GPU,當(dāng)同一warp中的32個(gè)線程按照一定字長依次訪問對齊后的數(shù)據(jù)段時(shí),僅需一次傳輸就可處理warp內(nèi)線程的訪存要求.

      對QC-LDPC碼的分層譯碼結(jié)構(gòu),式(2)、式(3)中的 Rk,t,cv和 Lk,t,v的對數(shù)似然比數(shù)值存儲(chǔ)于global memory中.對于一個(gè)校驗(yàn)陣大小為P×Q,子陣為D階方陣最大行重為B的QC-LDPC碼,對校驗(yàn)節(jié)點(diǎn) c傳遞給變量節(jié)點(diǎn) v的信息 Rk,t,cv,傳統(tǒng)的訪存方式的存儲(chǔ)地址為

      其中,pc為當(dāng)前線程更新的 Rk,t,cv對應(yīng)列號(hào);U 為當(dāng)前線程更新的 Rk,t,cv所在子陣的層內(nèi)序號(hào),這種訪存方式的訪存位置依據(jù)于線程處理的Rk,t,cv對應(yīng)于校驗(yàn)陣的位置,易于理解,但訪存不能滿足聯(lián)合的訪問要求.

      本文提出的訪存模式如圖2所示,Rk,t,cv的存儲(chǔ)位置不依據(jù)校驗(yàn)陣的位置,而依據(jù)于線程所在線程網(wǎng)格的位置.通過對 Rk,t,cv重新排列,將編號(hào)為 T 的線程所讀取的 Rk,t,cv存放于:

      T代表當(dāng)前線程編號(hào);M代表該線程所處線程塊編號(hào).通過重排不同線程訪存地址隨線程號(hào)增加,使得每個(gè)線程塊內(nèi)的線程依次訪問global memory內(nèi)連續(xù)存儲(chǔ)空間,滿足聯(lián)合存儲(chǔ)要求.

      對于譯碼過程中層間傳遞信息 Lk,t,v,傳統(tǒng)訪存方法為按塊對齊,當(dāng)某warp訪問至對齊邊緣時(shí),若不能滿足同一warp內(nèi)的32個(gè)線程同時(shí)處于對齊邊緣內(nèi),則會(huì)產(chǎn)生分區(qū)沖突,導(dǎo)致多次訪存.如圖3a中,當(dāng)某warp訪問至子塊邊緣時(shí),若第K號(hào)線程與第K+1號(hào)線程屬于同一warp,則會(huì)發(fā)生分區(qū)訪問沖突.

      圖2 Rk,t,cv 聯(lián)合存儲(chǔ)信息更新模式

      圖3 更新至子塊邊緣時(shí)訪存狀況

      對此,本文所提譯碼結(jié)構(gòu)采用圖4所示訪存模式:圖中W為warp的包含的線程總數(shù),對于Fermi架構(gòu)的GPU,W取為32.圖中LK,D代表第K個(gè)子塊中的第D個(gè)層間傳遞信息,在按塊大小對齊的原信息塊基礎(chǔ)上前后分別添加長度為W-1的數(shù)據(jù)作為對齊頭和補(bǔ)齊尾,將第K個(gè)子塊的前W-1個(gè)數(shù)據(jù)拷貝至第K個(gè)子塊的補(bǔ)齊尾,將第K個(gè)子塊的后W-1個(gè)數(shù)據(jù)拷貝至第K個(gè)子塊的對齊頭,并保持?jǐn)?shù)據(jù)同步.當(dāng)某warp訪問至對齊邊緣時(shí),如圖3b,若第K號(hào)線程與第K+1號(hào)線程屬于同一warp,則將線程號(hào)大于K的線程得出的層間傳遞信息數(shù)據(jù)寫入補(bǔ)齊尾,以保證同一warp內(nèi)的線程數(shù)據(jù)滿足聯(lián)合讀取,再將補(bǔ)齊尾中的數(shù)據(jù)同步至原始數(shù)據(jù)中對應(yīng)的字段.譯碼判決時(shí),只需舍棄對齊頭與補(bǔ)齊尾,便可進(jìn)行譯碼判決.

      圖4 Lk,t,v 聯(lián)合存儲(chǔ)信息更新模式

      2.3 多幀并行處理

      對于Fermi架構(gòu)的 GPU,每個(gè)流多處理器(SM,Streaming Multiprocessor)至少需運(yùn)行576個(gè)線程才能隱藏算數(shù)流水延遲.而分層譯碼算法要求每一層的列重至多為1,這限制了GPU架構(gòu)下分層譯碼結(jié)構(gòu)的并行度,對GPU資源形成浪費(fèi).以本文在實(shí)驗(yàn)中采用的40 960×24 576層寬為2048的QC-LDPC碼為例,單個(gè)碼字的最大并行度即為層寬,假設(shè)每個(gè)SM內(nèi)放置1 024個(gè)線程,則譯碼過程占用兩個(gè) SM,僅為 GeForce GTX580提供的SM總數(shù)的12.5%.

      對此,本文采用多幀并行處理,即在GPU內(nèi)并行進(jìn)行多幀譯碼,以提高GPU資源利用率.文獻(xiàn)[14]中指出多幀處理會(huì)帶來大量條件分支,在GPU架構(gòu)下將導(dǎo)致warp內(nèi)的指令執(zhí)行延遲增加,降低譯碼吞吐量.本文采用減少控制流指令及謂詞執(zhí)行(predicate execution)的方式以減少條件分支對譯碼吞吐量的影響.謂詞執(zhí)行是指將分支中的指令作為代碼塊處理,并將其中指令與謂詞關(guān)聯(lián),執(zhí)行時(shí),謂詞為假的指令隨謂詞為真的指令共同執(zhí)行,但不將結(jié)果寫回.

      表1以利用 GeForceGTX580GPU對40960×24576層寬為2048的LDPC碼進(jìn)行譯碼為例,分別展示了采用8幀并行處理與單幀處理時(shí)GPU內(nèi)的資源的利用情況以及可用運(yùn)算資源總量.

      表1 單幀處理與8幀并行時(shí)GPU資源使用情況

      由表1可得,采用多幀并行處理技術(shù)可以提高SM的使用效率,更好的利用GPU提供的資源.圖5展示了信噪比為1.1 dB時(shí)在不同并行幀數(shù)下相對于單幀處理時(shí)的譯碼吞吐量倍率.

      根據(jù)圖5,在GPU架構(gòu)下采用多幀并行可以的提升LDPC碼譯碼的吞吐量.

      圖5 不同并行幀數(shù)下譯碼吞吐量

      3 實(shí)驗(yàn)結(jié)果

      3.1 硬件原則與編譯環(huán)境

      表2顯示了本文采用并行譯碼結(jié)構(gòu)硬件環(huán)境.其中基于 GPU的 LDPC碼譯碼結(jié)構(gòu)采用Nvidia公司CUDA4.0版本編譯器編譯,基于CPU的LDPC碼譯碼結(jié)構(gòu)則采用Visual Studio 2010提供的標(biāo)準(zhǔn)的C編譯器編譯.

      表2 硬件環(huán)境

      3.2 測試結(jié)果

      本文對所提出的分層譯碼結(jié)構(gòu)在兩種不同長度的QC-LDPC碼條件下分別進(jìn)行測試,最大迭代次數(shù)設(shè)定為20次.H矩陣選取CCSDS標(biāo)準(zhǔn)[15]中的碼型.校驗(yàn)矩陣的詳細(xì)參數(shù)參見表3.

      在消息迭代過程中本文采用32 bit量化標(biāo)準(zhǔn)以及雙曲正切函數(shù)實(shí)時(shí)計(jì)算的方式,以獲得更優(yōu)的譯碼性能,相比FPGA譯碼實(shí)現(xiàn)平臺(tái),GPU平臺(tái)具備更優(yōu)秀的高精度運(yùn)算優(yōu)勢.

      表3 校驗(yàn)陣參數(shù)

      表4、表5為對10 000幀進(jìn)行譯碼所需時(shí)間以及吞吐量對比.其中表4是校驗(yàn)矩陣為H1信噪比為1.8 dB對應(yīng)的測試結(jié)果,表5是校驗(yàn)矩陣為H2信噪比為1.1 dB的測試結(jié)果.其中優(yōu)化方式Ⅰ代表global memory聯(lián)合訪問的優(yōu)化方式,優(yōu)化方式Ⅱ代表校驗(yàn)陣壓縮與采用constant memory優(yōu)化方式.其中H1和H2分別采用并行度為32和8的多幀并行譯碼.

      表4 檢驗(yàn)矩陣為H1時(shí)譯碼時(shí)間與吞吐量

      表5 檢驗(yàn)矩陣為H2時(shí)譯碼時(shí)間與吞吐量

      根據(jù)表4、表5,對于10000幀進(jìn)行譯碼時(shí),校驗(yàn)矩陣為H1和H2的碼對應(yīng)的譯碼時(shí)間分別為2.38 s和15.4 s,而未優(yōu)化的譯碼時(shí)間則分別為80.97s和230.8s,優(yōu)化后的相對于未優(yōu)化的GPU譯碼吞吐量分別提升34.8倍和14.9倍.

      分塊子矩陣的維數(shù)即碼字層寬較低時(shí),吞吐量的提升較大,其主要原因是碼字層寬較低時(shí)采用多幀處理對吞吐量的提升較大.通過采用多幀并行處理可以分別提升校驗(yàn)陣為H1的碼字和校驗(yàn)陣為H2的碼字譯碼速度12.4倍和6.1倍,這是由于校驗(yàn)陣為H1的碼字層寬即分塊子矩陣的維數(shù)為256,采用單幀處理時(shí)最高并行度為256,嚴(yán)重限制了GPU譯碼器的并行度.在采用多幀并行處理時(shí)對分塊子矩陣的維數(shù)較低的LDPC碼可采用較高的并行幀數(shù),以獲得更大的吞吐量提升.由此可得對于利用分層譯碼算法對分塊子矩陣的維數(shù)較低的LDPC碼進(jìn)行譯碼時(shí)采用多幀并行處理優(yōu)化效果優(yōu)于對分塊子矩陣的維數(shù)較高的LDPC碼進(jìn)行分層譯碼算法,可以有效消除幀內(nèi)并行度不足對譯碼吞吐造成的限制.

      采用global memory的聯(lián)合訪問的優(yōu)化方式對于譯碼速度的提升達(dá)到約1.8倍,這是由于未優(yōu)化的譯碼器在消息節(jié)點(diǎn)更新過程中由于訪存沖突導(dǎo)致極大地訪存延遲.

      采用constant memory存儲(chǔ)校驗(yàn)陣對于對校驗(yàn)陣為H1和H2的碼字速度提升別為1.6倍和1.35倍.對于校驗(yàn)陣為 H1的 LDPC碼采用constant memory存儲(chǔ)校驗(yàn)陣優(yōu)化效果優(yōu)于校驗(yàn)陣為H2的 LDPC碼,這是由于校驗(yàn)陣為 H1的LDPC碼的平均行重和列重大于校驗(yàn)陣為H2的LDPC碼,譯碼過程中對校驗(yàn)陣讀取更加頻繁,因此采用此優(yōu)化方式效果相對更明顯.

      4 結(jié)論

      1)本文提出一種新的基于Fermi架構(gòu)GPU平臺(tái)下的QC-LDPC碼存儲(chǔ)器優(yōu)化并行譯碼結(jié)構(gòu)設(shè)計(jì).本設(shè)計(jì)采用32 bit精度值的分層譯碼算法.實(shí)驗(yàn)結(jié)果表明,相對于未優(yōu)化GPU平臺(tái)下分層算法譯碼結(jié)構(gòu),本文提出譯碼結(jié)構(gòu)在校驗(yàn)陣為7168×4096層寬為256和校驗(yàn)陣為40960×24 576層寬為2048的QC-LCPC碼情況下分別可以獲得34.8倍和14.9倍的譯碼吞吐量提升.

      2)通過采用多幀并行譯碼處理,可提高譯碼并行度,分塊子矩陣的維數(shù)較低時(shí),GPU譯碼器的并行度受到限制,采用本文的多幀并行譯碼處理對譯碼速度提升效果尤為顯著.通過采用多幀并行處理可以分別提升子矩陣維度為256和2048的QC-LDPC碼譯碼吞吐量12.4倍和6.1倍.

      3)在校驗(yàn)陣為7168×4096層寬為256和校驗(yàn)陣為40 960×24 576層寬為2 048的QC-LCPC碼情況下,采用global memory的聯(lián)合訪問以及constant memory存儲(chǔ)壓縮校驗(yàn)陣兩種優(yōu)化方式分別可以提升譯碼吞吐量2.76倍和2.45倍.

      References)

      [1] Gallager R G.Low-density-parity-check-codes[J].IRE Trans-In-formation Theory,1962,18:21-28

      [2] Mansour M M,Shanbhag N R.Turbo decoder architectures for low-density parity-check codes[C]//Chi-kuo Mao.Global Telecommunications Conference.Taipei:Cornell University,2002:1383-1388

      [3] Mansour M M,Shanbhag N R.A 640-Mb/s 2048-bit programmable LDPC decoder chip[J].IEEE Journal on Solid-State Circuits,2006,41(3):684-698

      [4] Zhang T,Parhi K.Joint(3,k)-regular LDPC code and decoder/encoder design[J].IEEE Trans Signal Processing,2004,52(4):1065-1079

      [5] Dielissen J,Hekstra A.Low cost LDPC decoder for DVB-S2[C]//Cyprian Grassmann.Proc Conf Design,Automation and Test in Europe(DATE ’06).Munich,Germany:Designers’Forum,2006:130-136

      [6] Daesun Oh,Keshab K Parhi.Low-complexity switch network for reconfigurable LDPC decoders[J].IEEE Transactions on Very Large Scale Integration Systems,2010,18(1):85-94

      [7] Blake G,Dreslinski R G,Mudge T.A survey of multicore processors[J].IEEE Signal Processing Magazine,2009,26(6):26-37

      [8] Sanders J,Kandrot E.CUDA by example[M].New Jersey,USA:Addison-Wesley,2010:4-6

      [9] Goodnight N,Wang R,Humphreys G.Computation on programmable graphics hardware[J].IEEE Computer Graphics and Applications,2005,25(5):12-15

      [10] Falc?o G,Yamagiwa S,Silva V L.Parallel LDPC decoding on GPUs using a stream-based computing approach[J].Journal of Computer Science and Technology,2006,24:913-924

      [11] Chang Chengchun,Chang Yanglang,Huang Minyu,et al.Accelerating regular LDPC code decoders on GPUs[J].IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing September,2011,4(3):653-659

      [12] Gabriel Falc?o,Leonel Sousa,Vitor Silva.Massively LDPC decoding on multicore architectures[J].IEEE Transactions on Parallel and Distributed Systems,2011,22(2):309-322

      [13] Wang Guohui,Wu Michael,Sun Yang.A massively parallel implementation of QC-LDPC decoder on GPU[C]//Walid Najjar.2011 IEEE 9th Symposium on Application Specific Processors.San Diego,CA,USA:IEEE Computer Society,2011:82-85

      [14] Ji Hyunwoo,Cho Junho,Sung Wonyong.Memory access optimized implementation of cyclic and quasi-cyclic LDPC codes on a GPGPU [J].Journal of Signal Processing Systems,2010,64(1):149-159

      [15] CCSDS 131.1-O-2 Low density parity check codes for use in near-earth and deep space applications[S]

      猜你喜歡
      譯碼線程吞吐量
      基于校正搜索寬度的極化碼譯碼算法研究
      2016年10月長三角地區(qū)主要港口吞吐量
      集裝箱化(2016年11期)2017-03-29 16:15:48
      2016年11月長三角地區(qū)主要港口吞吐量
      集裝箱化(2016年12期)2017-03-20 08:32:27
      淺談linux多線程協(xié)作
      從霍爾的編碼譯碼理論看彈幕的譯碼
      新聞傳播(2016年3期)2016-07-12 12:55:27
      LDPC 碼改進(jìn)高速譯碼算法
      遙測遙控(2015年2期)2015-04-23 08:15:19
      2014年1月長三角地區(qū)主要港口吞吐量
      集裝箱化(2014年2期)2014-03-15 19:00:33
      基于概率裁剪的球形譯碼算法
      上海港11月集裝箱吞吐量同比增長4.25%
      廣東造船(2013年6期)2013-04-29 16:34:55
      Linux線程實(shí)現(xiàn)技術(shù)研究
      永平县| 新源县| 康平县| 长葛市| 宜川县| 崇明县| 云南省| 三都| 开原市| 榆社县| 科技| 达拉特旗| 文化| 若尔盖县| 淮安市| 二连浩特市| 东乡县| 云梦县| 禹州市| 东乡县| 吉安县| 容城县| 阜城县| 遵化市| 青浦区| 凤城市| 泊头市| 公安县| 修文县| 漳平市| 鸡东县| 通海县| 静乐县| 曲阜市| 乌鲁木齐市| 咸宁市| 竹北市| 许昌市| 黄浦区| 丹棱县| 信宜市|