CUDA编程模型
2007年NVIDIA公司推出了CUDA[75],它的全稱是Compute Unified Device Architecture(統一計算設備架構),是一種可以利用GPU作為并行計算設備的軟硬件體系。CUDA使用類C語言進行編程,研究人員在開發程序時不必再借助復雜的圖形學接口。幾乎每臺個人電腦都會安裝GPU,因此CUDA的出現為在普通的個人電腦上實現大規模的計算提供了可能性。憑借CUDA這種通用的并行計算架構平臺,研究人員能夠借助GPU以百計的核運行以千計的線程解決極其復雜的并行計算難題。CUDA的版本也經歷了不斷地升級,目前最新的版本為CUDA 8。
CUDA是用于實現GPU并行計算的開發環境,但CUDA程序并不是僅僅運行在GPU上的,它也是需要CPU協作的。就像前文介紹過的一樣,CPU與GPU硬件架構上的區別決定了它們在計算中扮演不同的角色。因此,“GPU比CPU更善于計算”這樣的說法并不準確,要體現出GPU強大的計算能力一定有這樣的前提:極大的計算量與規則的數據結構。在CUDA的編程模型中,CPU與GPU協同工作,各司其職。CPU負責進行一般的串行計算與邏輯性強的事務處理,GPU主要負責高度線程化的并行處理任務。由于CPU與GPU在計算中扮演的角色不同,CUDA編程模型將CPU作為主機(Host),GPU或者其它并行處理器作為協處理器(Co-processor)或者設備(Device),如圖3-2所示。同時,CPU與GPU各自擁有相互獨立的存儲器地址空間:主機端的內存和設備端的顯存。如何高效地實現存儲器間的數據傳輸也是在CUDA程序開發過程中需要注意的。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 并行计算及GPU简介
- 下一篇: 基于MATLAB的TDOA算法的仿真