CUDA API包括三個,從低到高等級分別爲 Thrust API Runtime API Driver API編程
用於CUDA的GPU是安裝於主機系統中的獨立設備緩存
GPGPU運行在一個和主處理器相隔離的存儲空間中異步
CUDA Kernel是可在主機代碼中調用而在CUDA設備上運行的子程序(Kernel沒有返回值)函數
Kernel的調用時異步的,即主機僅僅把要執行的Kernel順序提交給GPGPU,並不等待執行完成,而後直接處理後面的其餘任務性能
cudaThreadSynchronize() 使主機進入阻塞狀態測試
cudaMemory() 實現阻塞式數據傳輸spa
GPU上的基本運行單位是線程線程
GPU上最大的可共享的內存區域成爲全局內存內存
常量內存、高速緩存、共享內存、局域內存、紋理內存、寄存器ci
GPGPU編程的三條法則
1 將數據放入病始終存儲於GPGPU
pcie總線速度大概是8gb/s,而GPU全局內存的速度大概是160-200gb/s
2 交給GPGPU足夠多的任務
傳輸數據還要消耗時間,所以,最好讓GPU工做時間能補償傳輸所浪費的資源
3 注重GPGPU上的數據重用,以免帶寬限制
儘可能重用數據以獲取高性能
迴歸測試:常常用一段代碼做爲迴歸測試,測試kernel函數的正確性