CUDA学习(三)
內存層次結構:
CUDA線程可能會在執行期間從多個內存空間訪問數據,如圖所示。每個線程都有專用本地內存(local menory)。 每個線程塊都具有共享內存(shared memory),該塊的所有線程都可見,并且具有與該塊相同的生命周期。 所有線程都可以訪問相同的全局內存(global memory)。
所有線程還有兩個額外的只讀內存空間:常量和紋理內存空間。 全局,常量和紋理內存空間針對不同的內存使用進行了優化。 對于某些特定的數據格式,紋理內存也提供了不同的尋址模式以及數據過濾功能。
全局,常量和紋理內存空間在同一應用程序的內核啟動時保持不變
異構編程(Heterogeneous Programming):
這里設GPU設備為Device,CPU設備為Host,如圖所示,kernel函數在Device上運行,其余C語言程序依然上CPU上運行。
CUDA編程模型還假定主機和設備都在DRAM中分別維護它們自己的獨立存儲空間,分別稱為主機存儲器和設備存儲器。 因此,程序通過調用CUDA運行庫來管理內核可見的全局,常量和紋理內存空間(在編程接口中描述)。 這包括設備內存分配和重新分配以及主機和設備內存之間的數據傳輸。
統一內存提供托管內存來橋接主機和設備內存空間。 托管內存可以從系統中的所有CPU和GPU作為具有共同地址空間的單一連貫內存映像訪問。 這種功能使得設備內存的超額申請成為可能,并且通過消除在主機和設備上顯式鏡像數據的需要,可以大大簡化移植應用程序的任務。
計算能力:
設備的計算能力由版本號表示,有時也稱為“SM版本”。 該版本號標識GPU硬件支持的特征,并由運行時的應用程序使用以確定當前GPU上哪些硬件特征和指令可用。
計算能力包括主版本號X和次版本號Y,用X.Y表示。
主版本號相同的設備具有相同的核心架構。 基于Volta體系結構的設備主要版本為7,基于Pascal體系結構的設備為6,基于Maxwell體系結構的設備為5,基于開普勒體系結構的設備為3,基于費米體系結構的設備為2, 和基于特斯拉架構的設備為1.
次要版本號對應于核心架構的漸進式改進,可能包括新功能。
支持CUDA的GPU列出了所有支持CUDA的設備及其計算能力。 計算能力給出了每種計算能力的技術規格。
特斯拉和費米架構分別在CUDA7.0和CUDA9.0不被支持。
總結
- 上一篇: 分布式系统的面试题1
- 下一篇: cf449D. Jzzhu and Nu