欢迎来到天天文库
浏览记录
ID:45037379
大小:505.50 KB
页数:26页
时间:2019-11-08
《CUDA_Introduction》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ComputeUnifiedDeviceArchitecture統一計算架構介紹CUDA簡介CUDA(ComputeUnifiedDeviceArchitecture,統一計算架構)是由NVIDIA所推出的一種整合技術,是該公司對於GPGPU的正式名稱。透過這個技術,用家可利用NVIDIA的GeForce8以後的GPU和較新的QuadroGPU進行計算。亦是首次可以利用GPU作為C-編譯器的開發環境。NVIDIA行銷的時候,往往將編譯器與架構混合推廣,造成混亂。實際上,CUDA架構可以相容OpenCL或者自家的C-編譯器(NVCC)。無論是CU
2、DAC-語言或是OpenCL,指令最終都會被驅動程式轉換成PTX代碼,交由顯示核心計算。概要以GeForce8800GTX為例,其核心擁有128個內處理器。利用CUDA技術,就可以將那些內處理器串通起來,成為執行緒處理器去解決資料密集的計算。而各個內處理器能夠交換、同步和共享資料。利用NVIDIA的C-編譯器,通過驅動程式,就能利用這些功能。亦能成為流處理器,讓應用程式利用進行運算。GeForce8800GTX顯示卡的運算能力可達到520GFlops,如果建設SLI系統,就可以達到1TFlops。但程式設計師在利用CUDA技術時,須分開三種不同
3、的記憶體,要面對繁複的執行緒層次,編譯器亦無法自動完成多數任務,以上問題就提高了開發難度。而將來的G100會採用第二代的CUDA技術,提高效率,降低開發難度。註:1.SLI:ScalableLinkInterface(可擴充鏈結介面),一種由nVIDIA開發的連接多張顯示卡的技術2.GF100:40nm,352(SPs)、44(TMU)、32(ROP),256bit(GMC),支持DirectX11API和CUDA3.03.G100:55nm,8(SPs)、44(TMU)、32(ROP),64bit(GMC),支持DirectX10.1API和
4、CUDA2.0※SPs(StreamProcessors):流處理器、TMU(TextureMappingUnit):紋理貼圖單元、※ROP(RasterOperationProcessor):光柵處理器、GMC(GDDR3MemoryController):顯存控制器CUDA可應用的範圍視訊編碼加速目前,已有軟體廠商利用CUDA技術,研發了一個AdobePremierePro的外掛程式。通過外掛程式,使用者就可以利用顯示核心去加速H.264/MPEG-4AVC的編碼速度。速度是單純利用CPU作軟體加速的7倍左右。利用CUDA技術,配合適當的軟
5、體(例如MediaCoder),就可以利用顯示核心進行高畫質視訊編碼加速。視訊解碼方面,同樣可以利用CUDA技術實現。此前,NVIDIA的顯示核心本身已整合PureVideo單元。可是,實現相關加速功能的一個微軟API-DXVA,偶爾會有加速失效問題。所以利用CoreAVC配合CUDA,變相在顯示核心上實現軟體解碼,解決相容性問題。另外,配合適當的引擎,顯示核心就可以計算光線跟蹤。NVIDIA就放出了自家的Optix即時光線跟蹤引擎,透過CUDA技術利用GPU計算光線跟蹤。物理加速在NVIDIA收購AGEIA後,NVIDIA取得相關的物理加速技
6、術,即是PhysX物理引擎。配合CUDA技術,顯示卡可以模擬成一顆PhysX物理加速晶片。目前,全系列的GeForce8顯示核心都支援CUDA。而NVIDIA亦不會再推出任何的物理加速卡,顯示卡將會取代相關產品。為了將CUDA推向民用,NVIDIA會舉行一系列的編程比賽,要求參賽者開發程式,充分利用CUDA的計算潛能。但是,要將GPGPU普及化,還要看微軟能否在Windows作業系統中,提供相關的編程介面。(註:在2008年8月,NVIDIA推出了CUDA2.0。)為何使用GPU?GPU與CPU的差別這兩者的主要差異在於”浮點運算的能力”,GP
7、U的特長在於:密集運算、高度平行運算(特別是適用於圖形的渲染);這麼多的晶體管線設計,為的就是強化資料的處裡,這跟CPU著重於資料的快取以及流程控制是不同的,示意圖說明如下:程式處理流程1.複製記憶體至GPU2.CPU指令驅動GPU3.GPU平行處理每一核心4.GPU將結果傳回主記憶體通用的平行運算架構nVIDIA在2006年11月提出了CUDA™的架構,這是一個通用的平行運算架構,擁有一個全新的平行運算編程模型以及指令集架構,它使得nVIDIAGPU能夠比CPU更有效率的去解決許多複雜的問題。CUDA提供開發者基於像是C這樣一個高階語言的
8、軟件環境來進行開發,也允許其他的高階語言,例如,CUDAFortran、OpenCL和DirectCompute等等。示意圖如下:CUDACOpenC
此文档下载收益归作者所有
点击更多查看相关文章~~