OpenCL簡測,AMD與NV平台對比

2021-05-14 09:32:16 字數 1936 閱讀 4879

最近一陣進行了一些opencl簡單測試,得出了一些有趣的結論。由於amd還沒有公布rv870架構的官方文件,因此我們可以從這些結論中反推amd/ati顯示卡的架構,並對opencl未來的走向作乙個簡單的判斷。

首先是峰值計算能力方面,我們進行了單精度浮點、雙精度浮點和32bit整數計算測試,測試專案包括加法、乘法、乘加,以及浮點的特殊函式和定點的位操作測試。

測試結果表明:

gtx285的單精度乘加峰值計算能力為660gflops,hd4890為800gflops

乘法gtx285由於具有雙發射達到了450gflops,hd4890為400gflops

加法gtx285為330gflops,hd4890為400gflops

超越函式方面,gtx285的原生(native)和普通精度較高版均以數倍優勢勝出hd4890

5870在超越函式的比例上也沒有得到改善,fermi令人滿意

雙精度方面,gtx285乘加為約83gflops,正好是單精度的1/8

加法為41gflops

乘法為41gflops,因為雙精度沒有雙發機制

雙精度測試amd方面本來可以取得更大優勢,但是驅動還沒有提供支援

fermi取得了很好的成績

整數方面

gt200 加法330gflops 乘法83gflops 乘加135gflops 測試的幾項位操作120gips

4870 在整數理論效能上略有優勢(400gflops),但是位操作大比分落後

fermi擁有出色的32bit單元,因此整數乘法成績將與加法相同

頻寬測試包括memcpy、gpu訪問視訊記憶體和local memory

memcpy測試中,ati的主機與裝置端實用頻寬僅達到了1.7gb/s,即使考慮到rv770擁有全雙工的pci-e控制器,這一成績也是不能接受的

gt200的主機裝置端通訊速度相當正常,為5gb/s,fermi有相當提高

4890使用的視訊記憶體間memcpy機制匪夷所思,速度僅10gb/s,gt200為100gb/s

gt200實測視訊記憶體頻寬達到了100gflops,而4890對float型資料僅20gb/s,對float4型打包資料讀寫才能獲得更高效能

在對local memory(相當於cuda的shared memory)進行32bit資料讀寫測試時,由於4890使用的是視訊記憶體模擬local memory,因此只獲得了20gb/s的速度,而gtx285為1tb/s,差距達到了50倍。

不過待amd改善驅動後,頻寬測試成績將有所提高,但是由於硬體架構原因,應該還是只能對四向量打包型資料才能獲得最高效能,而不打包資料的效能和隨機訪問的效能則低於nvidia標量架構

5870的對global原子操作速度達到了gtx285的16倍,說明5870擁有與fermi類似的快取,只是功能可能稍弱。

不過gtx285使用對shared memory原子後,也可以取得與5870相當的成績

在sha-1 aes matrixmul等測試中,4890取得的成績相當於gtx285的9%-33%,而5870為gtx285的66%-200%

測試專案還在增加中,有待完善

由於下代gpu都擁有較強的cache機制,因此是否進行image測試還沒有決定。

在實際應用中,ati必須在每個執行緒內使用float4或者int4等四向量資料才能獲得最高效能,這提高了amd平台的程式設計難度,降低了在某些應用中的效能。尤其是上一代的rv770的架構並不是為了opencl設計的,效能下降非常嚴重。

ati的做法相當於在細粒度執行緒並行之下再加入了指令級並行,這樣就存在group-item-vector element**並行,並行方式更加難以設計,寫起kernel來更加痛苦,而且效能也會受到影響。opencl主機端**和cuda runtime api相比簡直就是地獄,再讓kernel更加複雜,那麼就是要開發人員的命了。

好在5870執行標量型**的比4870有很大提高,那麼看來opencl在nvidia g8x/g9x/gt200,以及ati 58xx上,**還是可以做到通用的。

AMD連發四款OpenCL加速計算開發工具

amd今天宣布推出四款全新的軟體開發工具和方案,可進一步優化應用程式對opencl標準規範的支援,並且全部支援fusion apu融合處理器。gdebugger 一款先進的opencl opengl偵錯程式 程式分析器和記憶體分析器,可以在amd gpu上實時除錯opencl核心,並在分析核心變數和...

用OpenCL實現HEVC中ME模組的測試資料分析

使用opencl來實現編碼演算法中運動搜尋模組!下面測試資料時在gtx570上的測試結果 lcu為32x32,100幀720p,cpu上純c演算法使用搜尋時間是67s,gpu上是0.915s lcu為16x16,cpu 是76.8s,gpu上是1.6s lcu為8x8,cpu 是82.5s,gpu上...

簡測科技二面面經

1.join的用法,幾種join的區別 2.儲存過程的用法,為什麼要用儲存過程 3.索引 4.手寫merge 忘記最優解法啥樣的了,完全是自己寫了乙個,有很多細節錯誤,也重複了很多 5.bitmap,byte陣列,給乙個offset,把offset指定的那一位如果為0則置為1,也是出了不少錯誤,最後...