新聞中心

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

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

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

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

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

本文引用地址:http://www.butianyuan.cn/article/156187.htm

d.JPG


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

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


上一頁 1 2 3 下一頁

關(guān)鍵詞: 實現(xiàn) 算法 AES GPU 基于

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉