<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 基于GPU的AES算法實現(xiàn)

          基于GPU的AES算法實現(xiàn)

          作者: 時間:2011-06-14 來源:網(wǎng)絡 收藏

          和內(nèi)存的數(shù)據(jù)交換是一筆很大的開銷,因此從整體上減小這部分的開銷是優(yōu)化的關鍵。從執(zhí)行的特點來看,每個線程都獨自從內(nèi)存中讀取一個分組長度的數(shù)據(jù)塊,加密完成后寫回到內(nèi)存中。這樣,每加密一個分組長度都要讀寫一次內(nèi)存,整體IO效率低。根據(jù)程序的局部性原理,如果一次讀入相鄰的多個分組,IO效率會大大提高。在前面的程序中,我們是在一個線程里加密一個分組?,F(xiàn)在我們一次讀取多個分組進行加密。這樣從整體上提高了IO效率。鑒于線程處理器還可以進行并行操作,我們還可以使用流數(shù)據(jù)類型,進一步提高并行度。
          改進的如下:
          brook::Streamint>*datastream;
          datastream.read(Block[m][n]);
          Encrypt_CPU_Simple(dtatastream);
          Datastream.write(Block[m][n]);
          改進后,每個線程一次讀取n個相鄰的分組進行加密。

          4 實驗設計
          實驗采用的CPU是GeForce 9800 GTX+,軟件使用GUDA2.1,是在WmdowsXP操作系統(tǒng)下運行的。
          CPU對的加速結果如圖1所示。從圖中可以看出,當數(shù)據(jù)量較小時(小于100kB),GPU上的運行性能要低于CPU,這是因為GPU的特點是適合用作高密度數(shù)據(jù)的并行計算,而當數(shù)據(jù)量較小時并無法充分利用到GPU的計算資源,而且從主機向設備傳輸輸入數(shù)據(jù)和由設備向主機返回數(shù)據(jù)又會占用一定的開銷,因此對于小數(shù)據(jù)量的處理并不適合使用GPU。隨著數(shù)據(jù)量的增加,GPU運算的性能就會明顯高于CPU。當數(shù)據(jù)量大于1MB時,GPU具有將近兩倍的加速倍數(shù),之后加速倍數(shù)就基本穩(wěn)定下來,達到飽和,這是因為當數(shù)據(jù)量已經(jīng)足夠多,充分利用了GPU的計算資源。由于GPU的計算能力遠遠高于它訪問設備內(nèi)存的帶寬以及主機與設備之間的數(shù)據(jù)傳輸帶寬,在應用中這些數(shù)據(jù)傳輸?shù)拈_銷會成為限制GPU運算整體性能的瓶頸,需要對GPU進行優(yōu)化,才能充分開發(fā)出GPU的計算優(yōu)勢。
          圖1 GPU對的加速效果

          本文引用地址:http://www.ex-cimer.com/article/156187.htm

          d.JPG


          對實驗結果進行優(yōu)化。通過優(yōu)化,可以提高超過兩倍的加速效果,在數(shù)據(jù)量大時,優(yōu)化結果更為明顯,如圖2所示。

          5 結論
          本文介紹了在GPU上AES加密算法的方法。首先介紹了AES算法,然后對CUDA中的GPU結構和CUDA編程模型進行了深入的研究。最后在GPU和CPU平臺上對設計進行了實驗對比,取得了理想的加速效果。其實在大多數(shù)應用情況下,目前計算機顯卡配置的GPU運算潛能并沒有完全釋放出來,本文介紹的加密方法是GPU通用計算具體應用的一個體現(xiàn)。雖然目前以CUDA為代表的GPU仍然存在精度不高,程序編寫限制較多的缺點,但隨著并行流處理概念的進一步發(fā)展,GPU通用計算技術將在各個領域發(fā)揮更大的作用。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();