GPU/APU加速庫、算法及應用

GPU/APU加速庫、算法及應用

通過和全球業界夥伴、高校、研究機構之間的廣泛合作AMD一直致力於異構計算生態系統的建立和發展。我們將APU/GPU異構開發資源分享於此,並持續更新中,給開發人員以啓發和參考;同時,我們希望能拋磚引玉,期待大家的參與與貢獻,不斷豐富和完善異構開發資源!

如果您需要添加資源或更詳細信息,請聯繫[email protected] 。

一、開源庫源代碼優化

  • 1、圖像處理相關
  • 2、視頻處理與多媒體技術
  • 3、數據加密、壓縮與管理
  • 4、網絡防禦
  • 5、數學庫

二、算法及應用優化

  • 1、計算機視覺相關
  • 2、經典數學問題並行優化
  • 3、數據挖掘與人工智能
  • 4、其他

三、更多開發工具與庫

*感謝MULTICOREWARE公司(MCW)的支持,以下帶*號資料由MCW公司提供。

一、開源庫源代碼優化

1、圖像處理相關

GIMP*

GIMP是一個GNU圖像處理程序,是一個功能強大的Photoshop的替代軟件,基於GTK+開發,可以再Windows, Linux和Mac下運行。然而,GIMP圖像處理性能低,一直是個很大的問題。

通過優化GIMP核心庫GEGL和BABL,我們可以提高了GIMP的圖像處理性能。優化後的GEGL利用GPU實現了色彩空間轉換,而不是使用串行的BABL,轉換效率明顯提升。我們還可以進一步優化了GEGL和GIMP之間的數據傳輸,並利用OpenCL對超過20個算法進行了優化,都取得了非常明顯的性能提升。

OpenCV*

OpenCV 是一個知名的開源圖像處理工具包。我們爲OpenCV實現了一系列基於OpenCL加速的API,包括人臉識別算法等複雜算法。其中人臉識別算法被應用到一個叫IrfanView的圖像處理軟件裏面。通過OpenCV的加速,這個軟件具備了在大量照片中過濾人物照的功能。除此以外,一些更底層的算法同樣有GPU的版本,這些算法方便開發人員用多個算法構造一個pipeline型的複雜應用,從而充分發揮GPU和CPU的綜合性能。

人臉識別在IrfanView當中的應用在AFDS2012當中有單獨的報告來展示。

ImageMagick*

ImageMagick 是一個開源的圖像處理庫和個人照片增強工具。它將數百個應用集合成一個庫。它可以處理各種各樣的圖片格式,包括DPXEXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. 用戶可以使用ImageMagick來對圖像進行縮放,翻轉,備份,旋轉,扭曲,裁剪,轉換,調節顏色,應用各種特效或者是繪製文本、線、多邊形、橢圓和貝塞爾曲線。我們使用OpenCL來優化ImageMagick處理圖像的過程,在AMD Trinity平臺下得到90倍的加速。下面試進行的修改:

  • 使用OpenCL優化圖像處理中的濾鏡
  • 引用了一個OpenCL管理組件,它包含了一個OpenCL後臺程序,可以用來管理所有的OpenCL操作,例如在圖像處理命令之外執行kernel程序,這個功能提高了整體效率。
  • 用OpenCL優化了JPEG解碼。
  • 使用x86和x86-64指令來優化霍夫曼解碼和編碼過程。

這些工作已在AFDS2012公開發布。 

JPEG for Browsers*

JPEG是在網頁上使用最頻繁,有着非常大的影響力一項圖片壓縮技術。

我們實現了libjpeg-turbo的OpenCL加速版本,優化了JPEG解碼算法,並集成進Chromium,加速後的解碼算法包括了baseline模式和progressive模式,支持不同的JPEG採樣比率(4:1:1, 4:2:2(H), 4:2:2(V), 4:4:4)。

2、視頻處理與多媒體技術

X264*

X264 是一個開源的,世界領先的H264視頻編碼庫,無論在質量,速度,還是在下載量上看都是排名靠前的編碼器。據估計,已有超過10億的下載量。許多視頻處理相關的第三方應用程序都把x264作爲其內在的H264編碼器,其中就有非常著名的VLC播放器,視頻轉碼器Handbrake等等的。

我們的工作就是對x264的look ahead的功能採用OpenCL來進行優化。Look ahead的工作主要是通過對每個視頻幀進行計算,其中包括計算MV,判斷場景切成等等,來確定該幀的幀類型(I幀, P幀和B幀),從而供x264編碼器的後續編碼流程來使用。我們通過優化該部分的功能,使得編碼器的一部分計算轉移到了GPU上,這樣在利用GPU的情況下,提高了CPU處理在整個編碼器流程中更加有效的工作。

我們已經在 AMD主辦的AFDS2012的會議上,展示了look ahead 功能的優化。

VLC*

VLC是世界上下載量最多的、免費的、開源的跨平臺多媒體播放器,其框架支持大多數類型的多媒體文件的播放。在優化工作中,我們將AMD APU獨有的“steady video”硬件特性集成到VLC中,在播放過程中可以減少視頻的抖動。我們使用OpenCL優化了VLC的scale過濾器,在播放期間可以快速的放大或縮小視頻。VLC中的De-noise過濾器是用來減少視頻中的噪點。對De-noise過濾器我們也使用OpenCL進行了優化。在AMD APU平臺上,這些特性和優化可以獲得更好的視頻播放體驗。

這些工作在AFDS2012期間已經發布。

Handbrake*

Handbrake是非常流行的視頻轉碼應用程序,其使用了x264編碼器作爲H264編碼器。我們實現了“OpenCL-scale”,在Handbrake的工作管線中使用OpenCL優化了scale過濾器;實現了“OpenCL-x264”,使用OpenCL優化了x264編碼器;實現了“Hardware-decode”,使用AMD硬件解碼功能實現了硬件解碼;而且優化了Handbrake的轉碼流程。

FFMPEG*

FFmpeg是一款領先的多媒體框架。其能夠解碼,編碼,轉碼,封裝,解封裝,流處理,濾波以及支持播放用戶可能會遇到的幾乎所有的視頻格式。它支持目前的領先的最廣泛的格式,無論格式是否由一個標準委員會,一個社區或一個公司設計的。我們集成AMD硬件解碼器(DXVA2和OpenDecode)、OpenCL加速濾波器以及AMD的硬件編碼器(OpenEncode)到FFmpeg中。同時,還對許多FFmpeg中的濾波器進行了優化,比如deshake和scale。對處理單一視頻的Thumbnail操作進行了優化。我們還實現了interop功能,這個功能使視頻數據在視頻解碼器和後續的視頻後處理操作保證數據在GPU中。

3、數據壓縮、加密以及管理

Crypto++*

Crypto++ (也被稱爲CryptoPP)是一個自由且開源的關於加密算法與加密方案的C++類庫。它已經被廣泛應用於學術界、開源項目、非商業項目以及商業領域。據估計,有超過200個項目使用了Crypto++。AES(Advanced Encryption Standard)是Crypto++的衆多加密算法中一個以高性能著稱的分組密碼算法。由於它在一些通用模式中有着較小的上下文依賴,我們可以用並行計算顯著地優化它的性能。在過去,通過優化初始pipeline的方式,我們可以靈活運用CPU計算力(例如AES-NI)與OpenCL GPU處理能力取得預期的總體處理性能。

這項工作被公佈在AFDS2012

Hadoop / Mahout*

Apache Hadoop是一個支持數據密集型分佈式應用的開源軟件框架。它支持在由日常硬件組成的大型集羣上運行應用程序。Hadoop框架透明地爲應用程序提供可依賴性與數據轉移。Apache Mahout是一個可擴展機器學習庫的集合。

我們實現了在GPU上的Map階段(Map-phase)排序算法優化,與Reduce階段(Reduce-phace)歸併排序算法優化。MCW在此基礎上實現了 Aparapi矩陣相乘,並且使用 OpenCL、JOCL 和Aparapi根據測試用例做出了性能比較。其他相關工作包括I/O分析、MD5校驗和(checksum)、壓縮、調度,與使用JNI代替JOCL後的性能結果測試。其他實現的項目包括 CRC CheckSum加速,Mahout K-Means加速與一個新的GPU壓縮算法。

Memcached*

Memcached是數據庫緩存機制,通常被一些公司當做一種重要的優化基礎設施來響應大量的互聯網驅動的數據庫查詢,例如google和facebook。

我們實現了一個memcached的基準測試工具,對memcached內部結構的性能做了一些優化,以及通過UDP多端口回覆進行網絡優化。使用OpenCL實現了memcached的哈希查找功能,通過一個循環的緩衝區技術減少了memcached中"get" 的延遲。

4、網絡防禦

Snort*

Snort是一個由Sourcefire開發的開放源代碼的網絡入侵檢測與防禦系統。使用了偵測簽章,通訊協議以及基於異常的檢測的偵測方法的Snort是全世界最廣泛使用的入侵預防與偵測軟件。

我們在配置文件中增加了OpenCL加速選項,利用循環緩衝區實現了深度包檢測,當一次存儲多個包傳遞給GPU處理的時候,能夠得到期望的效果。

5、數學庫

clAmdBlas

BLAS (Basic Linear Algebra Subprograms)是最核心最基本的數學庫之一,其包含了一組高質量的向量、矩陣計算子程序,如矩陣乘加操作等。BLAS在科學計算等領域具備廣泛的應用,也是另一些大型數學庫如LAPACK和LINPACK的支撐。BLAS有三個級別的API,分別完成向量-向量操作、矩陣-向量操作和矩陣-矩陣操作。BLAS在GPU上可以獲得很好的加速效果,目前AMD在ACML基礎上完成了OpenCL版本的BLAS數學庫,並進行免費發佈。

具體信息可參考:http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-math-libraries/

clMAGMA

LAPACK(Linear Algebra PACKage)是用於數值計算的線性代數函數庫。LAPACK提供了豐富的工具函式,可用於諸如解多元線性方程式、線性系統方程組的最小平方解、計算特徵向量、用於計算矩陣QR分解的Householder轉換、以及奇異值分解等問題。MAGMA是由美國田納西大學發起的面向於異構計算系統的LAPACK庫,其OpenCL目前版本爲1.0,我們可以從下面地址獲取更具體的信息:http://icl.cs.utk.edu/magma/

二、OpenCL優化應用項目

1、計算機視覺相關

基於局部域考察的圖像模糊化算法的加速實現(表面模糊,高斯模糊)圖像模糊化

圖像模糊化算法的特點是根據被考察點的局部域特徵對被考察點的顏色進行調整,由於各被考察點的局部域相對獨立,這類算法比較適合於用GPU進行優化,我們通過OpenCL並行編程,並行處理各圖像點的局部域,能將圖像模糊化的速度提高5倍以上。

基於Haar  Cascades分類器的人臉檢測方法的OpenCL加速實現

用haar 級聯分類器對圖像特徵進行提取的過程就是將圖像分割各成指定尺寸的窗口,對每一個窗口用級聯分類器進行過濾,由於各窗口的過濾相互獨立,這種算法比較合適於用GPU進行優化,我們通過OpenCL並行編程,對人臉檢測中,各個窗口的過濾,積分圖的計算 都進行了並行化,總體上能提高人臉檢測時間5至10倍。

基於紋理匹配的圖像修復算法的加速實現

基於紋理的圖像修復過程涉及兩個步驟,首先是從待修復區域邊界的點集中尋找一個優先級最高的點,然後爲該點在整個圖像區域中進行搜索,找到最佳匹配方塊,這兩個步驟的操作都可以表示成對多個獨立數據的併發操作,比較適合於用GPU進行優化,我們通過OpenCL編程,優化了基於紋理的圖像修復中這兩個步驟,使總體的加速比達到5倍以上。

基於非局部均值的圖像去噪算法的 OpenCL 加速實現

非局部均值算法通過利用數字圖像中大量的冗餘信息,建立待去噪像素點鄰域與搜索區域的像素點鄰域的相似函數,計算搜索區域各像素點與待去噪像素點的相似度權重,然後對搜索區域內的像素點進行加權平均,從而得到去噪點的新的灰度值。該算法在紋理, 邊緣信息的保持,以及去噪效果方面是目前最好的兩種算法之一,  由於非局部算法是從像素點到像素點逐個進行處理的,故其計算複雜度較大,但對於各個被考察像素點來說,對其領域和搜索區域的操作都是獨立的,比較適合GPU加速。我們通過OpenCL編程,對該算法實現了30倍以上的加速比。

三維人體運動視覺重建與跟蹤系統的GPU實現

基於視覺信息的三維人體姿態跟蹤和三維人體表麪點雲重建,是計算機視覺領域的重要研究方向,相關技術在虛擬現實、電影動畫、智能監控、高級人機交互、體育和醫療等領域具有廣闊的應用前景。人體運動三維重建與跟蹤的主要目標是從圖像和視頻信息中恢復和估計以參數表示的人體姿態,求解真實人體在三維世界座標系中的位置和姿態參數。由於問題的複雜度較高,計算量較大,一直以來都是計算機視覺領域的一個挑戰性難題。目前,隨着計算機硬件系統的不斷升級和計算機視覺理論的繼續完善,建立應用級的人體姿態重建系統已成爲極具商業前景的研究項目,而GPU計算在計算機視覺中的普及應用爲構建實時、快速的人體姿態重建系統提供了契機。

基於OpenCL的Adaboost並行人臉檢測算法

Boosting是一個將一個弱學習算法提升爲強學習算法的過程,主要應用在機器學習領域中,比如運動目標檢測和識別等, Adaboost算法(Adaptive Boosting)是最具代表性的算法之一。Adaboost算法及與之相關的積分圖運算過程具有很高的並行性。在基於CPU的算法中,Haar小波基函數的特徵值計算是串行求值的過程,與之對應的窗口掃描過程也是串行的。利用GPU的高度並行計算特性,我們可以將Haar小波基特徵值計算過程以及窗口掃描過程並行化,從而大大加快算法運行速度。

基於OpenCL的SIFT算法優化設計

在計算機視覺領域,圖像匹配是解決許多具有挑戰性難題的基石,例如: 物體、場景識別,從多幅圖像中恢復3維結構,立體匹配以及動作追蹤。 SIFT (Scale-invariant feature transform,尺度不變特徵轉換) 是一種很好的用來偵測和描述圖象局部特徵的算法,它通過從訓練圖象集中提取大量的特徵點,從而獲得識別的圖象的大量信息,最大程度上減小遮擋和噪聲對檢測圖象的影響。我們結合OpenCV提供的API和OpenCL編程,提高了SIFT的執行性能,尤其對高清圖片的處理相對CPU更加從容。

圖像重採樣算法的GPU優化

圖像重採樣是利用插值手段放大縮小圖像,達到目標分辨率。它是圖像處理中的基本操作。爲了保持圖像的準確信息,很多不同的插值算法被開發出來。作爲一種基本操作,重採樣具有很重要的應用場景和市場基礎。我們選用開源的H.264/SVC的參考軟件模型中的重採樣算法作爲優化依據,通過任務並行和數據並行來優化亞像素的插值濾波器運算。

視頻圖像去隔行算法GPU優化

隔行掃描是視頻採集中一種常見的手段,它通常把每幀圖像分爲兩場進行隔行採集,這樣可以在陰極射線管爲基礎的顯示器上很好的恢復運動圖像。然而,在數字圖像領域則會造成隔行失真。因此,很多不同的視頻去隔行算法被開發出來,其有助於提高人們對隔行視頻的體驗效果,在視頻處理領域有重要作用。我們選用開源的VLC播放器的視頻去隔行算法作爲優化依據,通過任務並行和數據並行來優化其各種運算。

基於GPU加速的3D超聲圖像去噪

三維醫學圖像在現在的醫療診斷中發揮着很大的作用,但是由於3D超聲成像機制使得採集到的3D超聲圖像都存在着相干斑噪聲,影響了醫療診斷,目前已經有一些相應的去噪算法,但是由於數據量太大處理速度很慢,GPU並行計算的出現使得3D超聲圖像的實時處理成爲了可能。我們在3D SRAD算法的基礎上提出了基於GPU的並行加速算法,該算法對串行算法進行了細化和分解,利用GPU的並行計算能力,能大大提高計算速度。

基於GPU的HARRIS角點快速提取的研究與實現

角點檢測在目標檢測跟蹤、物體識別、圖像配準、3D重建、立體視覺等方面都有着重要的應用。Harris算法就是通過分析圖像局部灰度值實現角點提取的一種重要算法,但是該算法利用高斯濾波,有大量卷積和鄰域操作,導致運算量較大,實時處理能力較差。結合GPU體系結構特點,我們研究了一種基於GPU實現Harris角點檢測的並行算法以達到角點的快速提取,並對提取出的角點進行了角點的匹配,可以利用匹配的角點完成對非接觸物體的實時測量和感知,爲物聯網在物物感知上提供了一種新的方法和手段。如機場、車站旅客的行李體積計算、高速公路車輛超載的判定等等。這種基於harris角點檢測的圖像匹配技術對非接觸測量有着廣泛的實際應用前景。

基於GPU的圖像小波變換的研究和實現

通過小波分解可以減少圖像分辨率,降低圖像維度,在降低運算量的同時還可以保持圖像特徵信息,是很多圖像處理應用的基礎。但由於其運算複雜,在CPU上的串行實現佔用CPU的運算時間長,嚴重影響了計算效率,涉及到大規模數據處理時更是難於滿足實時性要求。結合GPU的結構體系特點,我們研究了小波變換的算法,並將其改造爲適於並行計算的矩陣表達形式,實現了一種基於GPU的圖像小波變換並行處理,它能有效提升圖像分解效率,基本滿足大規模數據圖像處理的實時性要求。

基於OpenCL的三維模型凸包生成算法

在計算機軟件以及電腦遊戲中,三維凸包的計算常見於三維模型的碰撞檢測、體積近似計算、三維空間分析、幾何相似度計算、三維模型分割與分塊等諸多應用。對於複雜物體,如何快速精確的構造三維物體的凸包一直是技術難點。爲了三維凸包的快速生成和實時計算,我們提出一種基於GPU的三維凸包快速並行生成算法。該算法採用了基於OpenCL 架構的局部內存讀寫、流數據縮減等加速方法,並通過GPU實現了map、vector、queue等數據結構,更充分地利用了GPU的並行處理能力。實驗結果表明,與基於CPU的算法相比,該算法可以精確計算三維凸包,並且可以並且獲得13-16倍的計算速度提升。

基於廣義勢力場的3D骨架抽取算法的GPU OpenCL實現

3D骨架在很多領域內有着重要的應用,如碰撞檢測、虛擬導航、科學分析、模式識別、模型渲染、形狀分析、表面重建、動作規劃等。在進行骨架抽取時,計算量和準確度是解決問題的關鍵。有着顯著的魯棒性和靈活性的基於廣義勢力場的曲線骨架抽取算法卻因爲面臨着沉重的計算負荷而無法突出其優勢。它是通過模擬物理學中的勢力場,尋找3D物體上的勢力平衡的點,形成其一維表示—曲線骨架,因此需要計算每個內部點所受的勢力總和,計算量大。但是該算法本身具有高度可並行性,若能挖掘其運算能力,提高性能,可得到進一步的廣泛應用。

通過分析基於廣義勢力場的3D骨架抽取算法的並行結構,給出了其CPU和GPU的OpenCL的實現。

2、經典數學問題並行優化

B樣條曲線幾何插值算法的GPU實現

B樣條在計算機圖形學中有非常廣泛的應用,特別是計算機輔助設計、製造和工程(CAD,CAM,CAE),也是很多業界廣泛採用的標準的一部分,例如IGES, STEP,和PHIGS,並且是許多標準計算機圖形包的一部分。在實際應用中往往要建立高精度模型,此時數據量和計算量都非常大。幾何插值算法由Maekawa等人在2007年時提出,該算法通過尋找插值點到當前生成的B樣條參數曲線的最近點,以此爲基礎迭代調整控制點直到插值點與生成曲線之間的距離達到精度要求。該算法既能用於局部調整,也能用於整條曲線的插值,且具有一定的並行性。

通過分析幾何插值算法的並行結構,設計適用於OpenCL框架的計算流程,給出了B樣條曲線幾何插值算法的GPU實現。

大型非負矩陣分解算法(NMF)的OpenCL加速實現

近些年由於社區網絡服務(如微博,人人,甚至是每個網站對相關業務對象附帶的推薦系統)需求的激增以及應用範圍的不斷擴大,網絡聚類算法的不斷完善與改進成爲趨勢。人們需要響應更迅速、精度更準確的聚類管理。非負矩陣分解算法(NMF)是解決網絡聚類問題的十分有效的辦法,對大型網絡進行聚類劃分的問題可歸結爲對大型鄰接矩陣進行NMF分解,且NMF分解過程涉及很多的矩陣運算和數組歸約操作, 可利用GPU給出速度上令人滿意的結果。我們通過OpenCL編程,對NMF分解過程中的矩陣乘法,點積,數組求和,矩陣模塊度計算等步驟都進行了並行化,使整體NMF過程能達到30倍以上的加速比,我們的加速方法還特別支持對稀疏格式存儲矩陣(CSR)的NMF分解。由於該算法在網絡上有很大的應用價值,其響應速度和性能是我們應該優先考慮的.

基於OpenCL的自適應快速傅里葉變換(FFT)算法的實現與優化

快速傅里葉變換(Fast Fourier Transform, FFT),是離散傅里葉變換(Discrete Fourier Transform, DFT)的快速算法。採用快速算法能使計算機計算離散傅里葉變換所需要的乘法冊數大爲減少,特別是被變換的抽樣點數N越多,FFT算法計算量的節省就越明顯。作爲二十世紀科學和工程界最具影響力的十大算法之一,FFT在數字濾波、計算大整數乘法、求解偏微分方程和信號分解等領域有着廣泛的應用。

由於FFT算法本身的複雜度,使得在不同的輸入規模下,不同的分解策略除了浮點運算次數不一樣外,其訪存結構也截然不同,因而會導致截然不同的性能。根據GPU的架構特性,Stockham自排序算法沒有耗時的位排序操作,適合在GPU上的實現。

基於GPU的稀疏矩陣LU分解

稀疏矩陣LU分解是線性代數中的一項基本運算,在電路仿真、結構力學、經濟建模等許多領域有着廣泛的應用。這一步驟是當前SPICE (Simulation Program with Integrated Circuit Emphasis)電路仿真器的主要性能瓶頸。稀疏矩陣LU分解的基本算法是G/P left-looking算法。該算法較強的數據依賴性使得它的並行化十分困難。同時,數據間的高依賴性還造成並行G/P left-looking算法只能高效運行在共享內存的計算設備上。但由於共享內存的CPU核數通常很有限(大多數商用CPU都不超過6核),稀疏矩陣LU分解在多核CPU上性能無法進一步提升。GPU具有共享內存的衆核結構,且擁有更高的內存帶寬,爲該問題提供了一個可能的解決方案。

大型常微分方程系統的Parareal算法GPU實現

大型常微分方程在很多學科領域內有着重要的應用,如自動控制、各種電子學裝置的設計、彈道的計算、飛機和導彈飛行的穩定性的研究、化學反應過程穩定性的研究等。在求解大型常微分系統時,計算量是解決問題的關鍵。Parareal算法最初由Lions,Maday和Turinici在2001年提出,它使用粗細兩層時間剖分,在粗網格上進行串行的預估,在細網格上實現並行的校正。該算法可實現的並行化規模大,侷限小,在許多實際應用中都體現了自身的優勢和潛力。

哈密頓迴路問題OpenCL解題程序

基於OpenCL API開發圖論經典問題——哈密頓迴路問題的解題程序。最終程序以一個有向圖作爲輸入,程序在此有向圖中尋找哈密頓迴路,如果找到,則輸出一條找到的哈密頓迴路;如果找不到,則輸出該有向圖不是哈密頓圖。

基於DTW算法和OpenCL的子序列檢測實現

子序列檢測(Subsequence Similarity Search)是許多時間序列數據處理問題中一個重要組成部分。DTW(Dynamic Time Warping)距離在越來越多的研究中被證明是最好的距離度量方式。但傳統DTW距離計算在CPU上的實現是子序列檢測過程中性能上的主要瓶頸。我們提出了一種基於OpenCL和AMD GPU平臺的並行DTW算法實現,得到了在性能上相比於目前最好的CPU實現一到兩個數量級的提高。

基於OpenCL二維Mallat算法並行實現

Mallat在圖像分解與重構的塔式算法啓發下,根據多分辨率理論,提出了小波分解與重構的快速算法,稱爲Mallat算法。我們實現了基於OpenCL並行的二維Mallat算法,並將其應用於圖像融合處理中。

3、數據挖掘與人工智能

基於GPU實現的馬爾可夫決策過程(Markov Decision Process)並行值迭代算法

馬爾可夫決策過程是一個隨機動態系統的最優過程,可以被用來解決包括運籌學、藥物決策的制定、強化學習、經濟學、機器人導航以及遊戲等實際問題。根據馬爾可夫決策過程,我們定義了一個“外出遊玩”的模型,在這個模型中,只要給出了起始地點,模型會自動生成一條最佳的外出遊玩路線。在馬爾可夫決策過程中,策略迭代和值迭代是兩種典型的實現算法。在這裏,我們選擇了用值迭代算法來實現“外出遊玩”模型。爲了能夠凸顯出GPU的加速能力,我們給出了馬爾可夫決策過程值迭代算法的CPU實現和GPU實現。從實驗結果可以得出,運用GPU實現模型比用CPU實現模型在性能上提高了很多。

通過分析馬爾可夫決策過程值迭代算法,結合“外出遊玩”模型,我們給出了基於狀態並行的值迭代算法。通過給出基於CPU的值迭代算法的實現和基於GPU並行值迭代算法的實現,GPU強大的加速能力體現的淋漓盡致。

基於GPU的腦網絡分析算法加速

探索人腦連接模式和腦部病變的科學研究中,對於大腦複雜網絡結構的研究起着至關重要的作用。然而,大規模腦網絡建立和分析的計算量巨大,以致於在此前關於腦網絡的研究中,大部分工作僅停留在以腦區爲單位的粗尺度分析上。這種規模的腦網絡通常包含約100個網絡節點。而以體素爲單位建立的腦網絡,可包含2萬至10萬個節點,因此能夠更精確和細緻地反映出腦網絡的微觀結構。爲了消除大規模網絡分析中的計算瓶頸,我們提出了一種基於AMD GPU的腦體素網絡分析的加速平臺。

基於GPU的並行支撐矢量機排序學習

排序學習在信息檢索等領域發揮着越來越重要的作用, 而通過支撐矢量機的分類方法進行排序也成爲機器學習中的一個研究熱點。支撐矢量機目前已經有比較成熟的串行快速訓練算法, 比如SMO、SVMlight等。 但是, 對於大規模數據挖掘問題, 訓練速度仍然是制約支撐矢量機實際應用的瓶頸。我們提出了基於GPU實現的並行支撐矢量機排序學習的優化方案, 擴展了改進的SMO方法的數據並行特性, 並實現了在ATI Stream SDK平臺上基於OpenCL標準的計算過程。在LETOR排序學習標準數據集上的測試結果表明, 提出的算法具有很好的加速性能。

基於OpenCL和基因表達式的K-means聚類算法

k均值聚類是最著名的劃分聚類算法,由於簡潔和效率使得他成爲所有聚類算法中最廣泛使用的。但由於傳統的k均值聚類算法受到初始k個初始聚類中心的限制,爲此有人提出並實現了基於基因表達式編程的自動聚類算法(GEP-Cluster),解決了未知聚類個數的問題。然而,GEP-Cluster算法在大數據情況下的收斂速度相對較慢,而該算法的計算適應度函數部分存在着可並行性。爲此,我們基於OpenCL開放運算語言,對適應值計算並行化,進而提出一種基於OpenCL和基因表達式編程的聚類算法(OCLGEP-Cluster)。經過實驗表明,OCLGEP-Cluster算法對數據規模較大的情況下,算法性能得到較好的提高。

基於OpenCL的並行人工蜂羣算法

人工蜂羣算法(Artificial Bee Colony)是基於蜜蜂羣體覓食行爲而提出的一種相對比較新的羣體智能算法。該算法模擬了真實世界蜜蜂羣體採蜜行爲,蜜蜂根據各自的分工進行不同的採蜜活動。在採蜜過程中,由於獨有的角色轉換機制、以及在自組織模式下實現信息的交流和共享,從而使蜜蜂尋找到最優蜜源。人工蜂羣算法具有天然的並行性,我們完成了基於GPU加速的人工蜂羣算法並行程序設計和優化,通過採用OpenCL並行編程模型,使得算法得到了很好的加速效果。

基於Ferns的增強現實並行跟蹤算法

移動增強現實是虛擬現實在移動通信領域的應用,跟蹤註冊是增強現實系統的核心技術,而基於自然特徵的跟蹤註冊是目前的研究熱點。Random ferns(隨機厥)是一種半樸素貝葉斯分類器,通過ferns分類器訓練,可以實現穩定且較快速的實時跟蹤註冊。通過GPU加速可以大大提升訓練以及跟蹤註冊的速度,克服速度瓶頸,使得這項技術可以得到更爲廣泛的應用,例如移動設備。

大規模圖劃分算法GPU加速實現

大規模網絡劃分算法是指一類通過給定圖的信息,通過分析這些點的內在聯繫,從網絡中抽象出一些“社區”的算法。我們選擇了Newman在他2011年的論文上提到的針對高重疊性網絡的劃分算法,致力於利用GPU高併發度的特性,對原有的圖劃分算法進行加速。我們通過分析算法中各層並行度以及剖析算法加速的主要瓶頸,設計出該算法的Opencl-GPU版本。我們在測試中達到了平均10倍的加速比,最高可到20倍。

4、其他

GPU加速的函數圖像繪製器

利用OpenCL進行GPU上的並行牛頓迭代法,對任意f(x, y)=0方程繪製圖像。可以支持各種函數、解析幾何方程圖像的繪製。其速度比同等原理的CPU程序快幾十倍(使用AMD HD7970顯卡與最新四核CPU進行比較),可以極快地繪製非常複雜美麗的函數圖像。

基於GPU的軟件GPS接收機

軟件GPS接收機的快速捕獲算法需要大量的FFT操作以及可並行化運算,採用GPU單元可以大大提高軟件接收機的工作效率。

雷達模糊函數計算的GPU加速

雷達模糊函數在雷達系統設計中是非常有力的分析工具,可以評估雷達發射信號的距離、多普勒分辨性能。對於高分辨率合成孔徑雷達的信號選擇,系統分辨率要求信號具有大時寬和大帶寬,這樣在計算模糊函數時存在計算量大、耗時長的問題,採用普通CPU計算難以滿足實時信號處理的需求。從雷達模糊函數的特點出發,其輸出形式爲二維矩陣,各點計算時具有獨立性,符合並行計算中的SIMD(單指令多數據)模型,因此非常適合採用並行方式計算實現。採用基於AMD平臺HD7770顯卡GPU加速的計算方法,得到了約257倍加速比,大大提高了計算效率,爲高分辨率探測雷達波形設計提供了良好的計算支撐。

歸一化植被指數(NDVI)算法的並行化實現

NDVI是目前應用最廣泛的一種植被指數。植被指數是遙感監測地面植物生長和分佈的一種方法。當遙感器測量地面反射光譜時,不僅測得地面植物的反射光譜,還測得土壤的反射光譜。當光照射在植物上時,近紅外波段的光大部分被植物反射回來,可見光波段的光則大部分被植物吸收,通過對近紅外和紅波段反射率的線性或非線性組合,可以消除土壤光譜的影響,得到的特徵指數稱爲植被指數。我們基於APU/GPU異構架構實現了NDVI算法。

三、更多開發工具和庫

1.drawElements Quality Program

drawElements Quality Program(dEQP)是一個強大的工具包,它爲OpenGL ES和OpenCL的GPU的準確性,精密性,功能的一致性以及穩定性提供了一個基準。它不但能夠爲不同的供應商和不同的GPU架構之間提供細節化的質量比較,而且還能夠爲測試發現的問題提供分析和調試的功能。在GPU平臺的設計,部署和應用開發階段可以使用dEQP。在IP選擇的分析過程中,關於不同設備的能力問題,dEQP能夠作爲一個展示商品質量或者爲開發者提供嚮導的獨立的基準。

鏈接地址:http://www.drawelements.com/products/deqp

2.Xcelerit SDK

在促進程序員的開發效率的過程中,Xcelerit SDK是一個提高密集型計算應用性能的軟件工具包。從一個簡單的順序執行,沒有並行結構,並且是低級別的編譯器指令等的源代碼,Xcelerit SDK可以爲各種各樣的目標處理器生成高度優化的代碼。這些各種各樣的處理器包括多核的CPU,GPU以及它們的二者的結合。這些編程接口是很直觀的,而且適合許多不同類型的算法,如蒙特卡洛,有限差分,或基於格的方法。Xcelerit SDK以定量執行需要一個靈活的內部解決方案的繁重計算爲目的。用戶可以集中精力於算法的核心以及他們所面臨的的問題,並且他們可以產生高性能的程序。

鏈接地址:http://www.xcelerit.com/xcelerit-sdk

3.Triton Ocean SDK

在建模水模型的過程中,如果對性能有關鍵性的要求,那麼要想建模出很真實的水模型是很困難的。Triton Ocean SDK可以爲你在創建3D水模型,爲創建用於海事訓練的足夠逼真的海洋模型或者爲遊戲尋找AAA級質量的海洋模型節省很多的工程開銷。Trion能夠自適應你的系統,利用它能夠發現的任何的並行計算的能力。它能夠充分利用通用GPU(GPGPU)技術,像OpenCL和DirectX11的計算着色器(DirectCompute)去加速模擬一次千重浪。在可能的情況下,從用快速傅里葉變換來模擬海浪的各個方面到產生和渲染海洋模型的網格,3D海浪的模擬都是在GPU上完成的。

鏈接地址:http://sundog-soft.com/sds/features/ocean-and-water-rendering-with-triton/

4.CAPS工作臺

CAPS是一些內部的或者第三方的全面的工具,它能夠滿足你高效開發高性能並行應用的所有需求。

鏈接地址:http://www.caps-entreprise.com/products/caps-workbench/

5.用於ARM的PGCL OpenCL編譯器

PGCL用於編譯和運行在ST-Ericsson NovaThor U8500和後續平臺的OpenCL1.1的嵌入式配置應用的OpenCL框架,這些平臺使用單獨的ARM核作爲OpenCL主機,使用多個ARM核作爲OpenCL計算設備。

鏈接地址:http://www.pgroup.com/products/pgcl.htm

6.Par4All

Par4All是一個用於C和Fortran順序程序的自動進行並行和優化的編譯器。這種源到源的編譯器的目標是讓現存的應用能夠運行在各種各樣的目標硬件上,例如多核系統,高性能計算機和GPUs。Pat4All創建了新的代碼,應用的原始代碼沒有改變。

鏈接地址:http://www.par4all.org/features/

7.OpenCL編譯器工具

OCL是一個功能強大的,結構緊湊的一套工具,它能夠爲開發者提供更多的內核編譯選擇。OCL能夠讓你在應用的運行過程中消除昂貴的內核編譯時間。有了OCL工具,在開發過程中,開發者可以直接將內核(明文或者密文)的源代碼嵌入到程序的二進制文件中,不需要分發內核源代碼,但是仍然保持了運行編譯的靈活性。你不僅可以將源代碼嵌入到OpenCL二進制文件中,你還可以嵌入編譯好的內核,這樣就減少了你的應用在運行時對額外的內核編譯所需的開銷。OCL帶有脫機OpenCL編譯器(oclcc),ELF文件生成器(ocleif),加密工具和有用的程序庫,這些都將幫助我們簡化OpenCL內核的編譯過程。

鏈接地址:http://clusterchimps.org/ocltools.php

8.CAPS編譯器

CAPS編譯器是以基於指令的OpenACC和OpenHMPP的標準爲基礎的,CAPS編譯器使得開發者能夠逐步構建適合於各種各樣的多核系統(例如AMD GPUs)的可移植的的應用。源到源的CAPS編譯器集成了強大的數據並行代碼生成器,該生成器可以生成OpenCL代碼。CAPS編譯器依賴產生主機應用二進制文件的原來的CPU編譯器和產生應用加速部分的二進制文件的硬件供應商編譯器。

鏈接地址:http://www.caps-entreprise.com/products/caps-compilers/

9.CLU

計算語言工具(CLU)是一種輕量級的API,旨在幫助編程者對OpenCL的探索,學習和快速編碼。該API降低了初始化OpenCL設備,上下文,內核以及參數等的複雜性。當然,如果程序員希望能夠進行更底層,更復雜的編碼,CLU也保留了對更底層的OpenCL API調用的能力。

鏈接地址:https://github.com/Computing-Language-Utility/CLU

10.OpenCLTemplate.DLL

OpenCL Template是一種工具,這種工具使得我們能夠更加簡單方便的使用Microsoft Visual C#。OpenCL Template裏面包含了OpenCL編輯器,這種編輯器是一種能夠快速對你的代碼進行編譯,並且檢查你的代碼是否正在正確的運行的工具。

鏈接地址:http://www.cmsoft.com.br/index.php?opti>

11.OpenCL內核編譯器

CLCC是一種命令行的OpenCL內核編譯器,它有着很多爲了稱讚的特點:

  • 在運行主機代碼之前能夠進行內核編譯檢查
  • 動態綁定OpenCL的函數指針,因此所有負荷標準的OpenCL實現都是被支持的
  • 在Visual Studio的集成(F4)中支持MS Visual C++的錯誤語法
  • 擴展的編譯錯誤和警告反饋

鏈接地址:http://www.organicvectory.com/index.php?opti>

12.pocl

可移植的計算語言的目的是使得OpenCL標準成爲開放的源碼實現,這樣OpenCL標準就很容易適應於新的目標。這個項目的其中一個目標是提高OpenCL程序移植過程中的性能,避免進行目標依賴的手動優化。一個“固有”的目標被包含在內,它允許在主機(CPU)上運行OpenCL內核。

鏈接地址:http://pocl.sourceforge.net/

13.libcoprthr

libcoprthr庫是一個開源的OpenCL運行時的實現,支持多核的x86_64和ARM處理器。儘管當前的版本還沒有通過一致性測試,但是該庫已經通過了一個簡易的替換測試,它支持幾種不同的複雜的OpenCL應用,並且表現除了良好的性能。

鏈接地址:http://www.browndeertechnology.com/coprthr_libocl.htm

14.Webkit的WebCL

WebCL是Khronos的一個新活動,它定義瞭如何將Javascript綁定到OpenCL。Webkit的WebCL項目是開源Webkit瀏覽器引擎的WebCL的早期實現。

鏈接地址:https://github.com/SRA-SiliconValley/webkit-webcl

15.火狐的WebCL

火狐的Nokia WebCL原型。

鏈接地址:https://github.com/toaarnio/webcl-firefox

16.SnuCL

SnuCL是一個開源的OpenCL框架,它是由首爾國立大學開發的可以自由查看的開源軟件。它將原來的OpenCL語義延伸到異構集羣環境。目標集羣環境包括一個單獨的主機節點和多計算節點。

鏈接地址:http://aces.snu.ac.kr/Center_for_Manycore_Programming/SnuCL.html

17.ScalaCL

ScalaCL使得程序員能夠以一種非常自然的方式在GPUs上運行Scala代碼(將JavaCL綁定帶OpenCL的API上)。

鏈接地址:https://code.google.com/p/scalacl/

18.Ruby-OpenCL

Ruby-OpenCL是將Ruby綁定到OpenCL。

鏈接地址:http://rubyforge.org/projects/ruby-opencl/

19.QtOpenCL

QtOpenCL是QtCore和QtOpenGL模塊的一系列的擴展類,它使得OpenCL能夠用於Qt4.6.2和Qt4.7。

鏈接地址:http://doc.qt.digia.com/opencl-snapshot/index.html

20.PyOpenCL

PyOpenCL使得你能夠通過Python訪問GPUs和很多其他的並行計算設備。

鏈接地址:https://pypi.python.org/pypi/pyopencl

21.OpenTK

Open工具包是一個高級的,低層的C#庫,它封裝了OpenGL,OpenCL和OpenAL。它適合遊戲,科學應用以及任何需要3D圖形,音頻或者計算功能的項目。

鏈接地址:http://www.opentk.com/

22.OpenCL.Net

OpenCL.Net提供了對OpenCL API的綁定,它儘可能的接近OpenCL 1.1規範,是一個更像.Net的API的更高層次的抽象。

鏈接地址:https://sourceforge.net/projects/openclnet/?source=navbar

23.Java OpenCL

JOCL項目提供了一種更容易將Java代碼綁定到OpenCL API的方式。

鏈接地址:http://jogamp.org/jocl/www/

24.JavaCL

JavaCL很好的將OpenCL封裝進Java API中。看看現在誰在使用JavaCL。

鏈接地址:https://code.google.com/p/javacl/

25.FortranCL

FortranCL是Fortran 90的OpenCL接口。它允許編程者直接在Fortran中調用OpenCL並行編程框架,因此開發者可以使用圖形處理器(GPU)和其他的處理器對他們的Fortran代碼進行加速。

鏈接地址:https://code.google.com/p/fortrancl/

26.CLythe

CLyther是一個剛剛標準化的引擎,它使得Python開發者能夠很容易的利用OpenCL所帶來的好處。

鏈接地址:http://srossross.github.io/Clyther/index.html

27.Cloo

Cloo是一個開源的很容易使用和管理的庫,它使得.NET/Mono應用能夠充分利用OpenCL的好處。

鏈接地址:http://cloo.sourceforge.net/

28.cl4d

cl4d是對OpenCL C API的面向對象的包裝,它是用D編程語言編寫的。

鏈接地址:https://bitbucket.org/trass3r/cl4d/wiki/Home

29.Barracuda

Barracuda應用於Ruby語言的OpenCL庫,能夠在Mac os x上安裝,支持有符號的整數和浮點數。與同一硬件上非異構環境下運行相比,對整數到浮點數的測試表明,Barracuda能夠取得高達10倍的速度增加。

鏈接地址:http://gnuu.org/2009/08/30/barracuda-an-opencl-library-for-ruby/

30.Aparapi

Aparapi使得Java開發者能夠通過在GPU上執行數據並行的代碼段而不是侷限於本地的CPU來利用GPU和APU設備的計算能力。它是通過在運行時將Java字節碼轉化爲OpenCL代碼並且在GPU上執行。

鏈接地址:https://code.google.com/p/aparapi/

31.ViennaCL

ViennaCL是一個針對衆核架構(GPUs, MIC)和多核CPU計算的免費、開源的線性代數庫GPU。這個類庫是用C++實現的並且支持OpenCL和OpenMP。除了核心的功能和許多其它特性,像是支持BLAS level 1-3和迭代求解器,最新發布版ViennaCL 1.4.1 還包括對Intel的MIC平臺(Xeon Phi)的支持以及突出設有一個GEMM kernel,使得在AMD HD7970上能達到超過1.3 TFLOPs 。

鏈接地址: http://viennacl.sourceforge.net/

32.VexCL

VexCL是爲OpenCL設計的一個向量表達式類庫,以便於開發者使用C++進行OpenCL的開發。VexCL力求減少開發OpenCL應用程序所需的樣板代碼量。此類庫提供了爲向量運算、還原、稀疏矩陣向量乘等提供了方便直觀的表示。另外,還支持多設備和甚至是多平臺上的計算。

鏈接地址:https://github.com/ddemidov/vexcl#readme

33.STDCL

標準計算層庫爲OpenCL提供了一個簡化的編程接口,設計目的是爲了採用一種新方式來支持最典型的使用案例,而這種方式是由大家熟知的傳統的針對C編程的UNIX API所啓發的。

鏈接地址:http://www.browndeertechnology.com/coprthr_stdcl.htm

34.StarPU

SrarPU是針對CPU/GPU混合結構的任務編程類庫,支持優化的異構調度、數據傳輸和集羣通信。

鏈接地址:http://runtime.bordeaux.inria.fr/StarPU/

35.opencl-toolbox

opencl-toolbox 是一個開源的工具包,支持Matlab和OpenCL的無縫集成。

鏈接地址:https://code.google.com/p/opencl-toolbox/

36.ocl-radix-sort

ocl-radix-sort 是一個C++類,用來支持在OpenCL中爲整數鏈表排序,而不需藉助其它的類庫或者SDK.

鏈接地址: https://code.google.com/p/ocl-radix-sort/

37.Libra SDK

Libra SDK非常複雜的運行時,包含了大規模加速軟件計算的相關API、樣例程序和文檔。使用Libra SDK開發和設計基於CPU和GPU的高性能軟件是很強大而方便的。在一般的編程環境中,相比使用原生的OpenCL,採用衆所周知的簡單API標準接口,你的程序代碼會更少並且擁有巨大的性能。成百上千的高性能的函數和運算都關注如標準的數學,密集和稀疏矩陣或向量的運算,同樣也包括高性能的隨機數生成、比較、條件運算、fft、方程解算器等。

鏈接地址: http://www.gpusystems.com/libra.aspx

38.libclc

Libclc是個開源的BSD/MIT雙許可實現了OpenCL C編程語言的庫要求。libclc被設計成可移植、可擴展的。爲此,它提供了大部分的庫要求的通用實現,允許目標在個體功能的粒度上覆蓋通用實現。

鏈接地址:http://libclc.llvm.org/

39.libCL

LibCL針對OpenCL高性能計算的開源類庫。相比專注於一個特殊領域,LibCL打算囊括衆多的並行算法。目標是爲了提供一個關於kernel和數據結構的全面性知識庫,從基本的原語操作如排序、搜索和代數學到計算研究和可視化的高級算法系統,以適用以視覺爲中心的計算。LibCL提供了一套封裝了OpenCL API的C++類的核心集,以及簡單的錯誤處理和日誌記錄的基礎支持。

鏈接地址:http://libcl.org/index.html

40.OpenCL Studio

OpenCL Studio將OpenCL和OpenGL集成進一個簡單的開發環境以支持高性能計算和可視化。它集成的源碼編輯器、交互式腳本語言和開元的並行算法庫都支持複合GPU計算解決方案的開發。編輯器隱藏了許多底層API的複雜性,爲進入並行計算和可視化提供良好的開始。

鏈接地址:http://www.opencldev.com/

41.clpp

Clpp是一個OpenCL數據並行原語庫。它是數據並行算法原語如並行前綴和(“掃描”)、並行排序、並行縮減的類庫。諸如此類的原語是一系列數據並行算法的重要組成塊,包括了排序、流壓縮和構建數據結構如樹和總計區域表。

鏈接地址: https://code.google.com/p/clpp/

42.CLOGS

CLOGS是針對OpenCL C++API上層的高級操作的類庫。設計目標爲了集成其他的OpenCL代碼,包括使用OpenCL事件的同步。目前,支持基數排序和獨佔掃描。

鏈接地址:http://sourceforge.net/apps/trac/clogs/wiki

43.CLETE

計算層表達式模板引擎是一種軟件技術,能夠實現基於OpenCL設備如GPU的C++容器類的自動加速。CLETE的使用不要求特殊的工具或者編譯器,並且適和任何的C++編譯器。

鏈接地址:http://www.browndeertechnology.com/coprthr_clete.htm

44.ocl-emu

OpenCL仿真器調試器是一項起源於AMD的項目。它允許開發者編譯和調試OpenCL內核像C++程序一樣。此項目的目標是爲OpenCL開發者提供針對MS visual studio C++ 開發和調試環境的全面支持。

鏈接地址: https://code.google.com/p/ocl-emu/

45.LuxMark

LuxMark是一個易用的OpenCL基準測試工具

鏈接地址:http://www.luxrender.net/wiki/LuxMark

46.CLBenchmark

CLBenchmark是第一個專業的OpenCL基準測試程序來測量和比較不同硬件架構的處理能力。CLBenchmark採用OpenCL標準來測量桌面級CPU和GPU的計算性能,提供了一種公正的方式來測試和比較不同平臺上的OpenCL實現的計算性能。

鏈接地址:http://kishonti.net/product_clbenchmark.jsp

47.Basemark CL

Basemark CL爲設備製造商、半導體公司和他們的生態系統提供了各種性能評估功能來測試和優化在桌面和嵌入式設備中的OpenCL實現。它全面的基準測試工具提供了一個客觀的關於OpenCL實現間的比較。

鏈接地址:http://www.rightware.com/benchmarking-software/product-catalog/

48.GPU Caps Viewer

GPU Caps Viewer 是一個針對Windows XP和Vista的OpenGL和OpenCL圖形顯卡工具。

鏈接地址:http://www.ozone3d.net/gpu_caps_viewer/

49.Accent ZIP 密碼恢復

Accent ZIP 密碼恢復是基於AMD顯卡的,其恢復ZIP壓縮文件密碼的速度比只基於CPU的恢復技術快高達60倍。

鏈接地址:http://passwordrecoverytools.com/zip-password.asp

50.Accent RAR密碼恢復

Accent RAR密碼恢復使用AMD卡來提升搜索速度,每塊卡都能獲得高達40倍的加速。此軟件使用GPU技術來爲RAR 3.x文件恢復密碼。

鏈接地址:http://passwordrecoverytools.com/rar-password.asp

51.Accent OFFICE 密碼恢復

Accent OFFICE 密碼恢復爲任何使用了獨特的優化代碼以求適應AMD處理器優勢的電腦提供頂級的密碼恢復速度。通過利用AMD顯卡以及流或OpenCL技術,Accent OFFICE 密碼恢復的密碼恢復速度相比CPU方案而言,快了高達60倍。

鏈接地址:http://passwordrecoverytools.com/office-password.asp

52.Aviary W8 SDK

Aviary的易於集成的跨平臺的SDK現在能用於Windows 8了。使用Aviary,開發者能在幾分鐘內就可添加一個功能強大且直觀的圖片編輯器到windows 8的應用程序中。Aviary的特效是通過使用新型異構計算語言C++ AMP來實現的。計算是在位於AMD的APU內部的高性能並行圖像處理單元(GPU)核上完成的。運用CAMP 允許即刻實現全範圍特效的加工處理,根據AMD的基準測試研究,平均比具有可比性的處理器快了16倍。

鏈接地址:http://aviary.com/w8

53.Website Creator X6

Uses UVD 使用UVD

鏈接地址: http://www.corel.com/corel/product/index.jsp?pid=prod4870070&cid=catalog20038&segid=7800004

54.ArrayFire

ArrayFire是一個快速的軟件類庫,針對基於易用api的GPU計算。它的基於數組的函數集使得GPU編程很方便。ArrayFire可供C、C++、Fortran以及Python使用,而言集成進AMD硬件中。對於大部分用戶而言是免費的!

鏈接地址:http://www.accelereyes.com/arrayfire_tour

發佈了95 篇原創文章 · 獲贊 29 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章