轉自半導體全解,版權屬于原作者,僅用于學術分享,如有侵權留言刪除 一、人工智能發(fā)展歷程
二、CPU和GPU在人工智能中的應用 GPU最初是用于圖像處理的,但由于高性能計算需求的出現(xiàn),GPU因其高度 并行的硬件結構而得以顯著提升其并行計算和浮點計算能力,且性能遠超于CPU。 由于訓練深度神經網絡的計算強度非常大,因而在CPU上訓練神經網絡模型的時間往往非常長?
機器學習模型的并行訓練通常適用于以下兩種情況:
三、什么是CUDA? CUDA(Compute Unified Device Architecture)全稱統(tǒng)一計算架構,作為NIVIDA公司官方提出的GPU編程模型,它提供了相關接口讓開發(fā)者可以使用GPU完成通用計算的加速設計,能夠更加簡單便捷地構建基于GPU的應用程序,充分發(fā)揮GPU的高效計算能力和并行能力? CUDA同時支持C/C++,Python等多種編程語言,使得并行算法具有更高的可行性?由于GPU不是可以獨立運行的計算平臺,因此在使用CUDA編程時需要與CPU協(xié)同實現(xiàn),形成一種CPU+GPU的異構計算架構,其中CPU被稱為主機端(Host),GPU被稱為設備端(Device)?
GPU主要負責計算功能,通過并行架構與強大的運算能力對CPU指派的計算任務進行加速。通過 CPU/GPU 異構架構和CUDA C語言,可以充分利用GPU資源來加速一些算法。 典型的GPU體系結構如下圖所示,GPU和CPU的主存都是采用DRAM實現(xiàn),存儲結構也十分類似?但是CUDA將GPU內存更好地呈現(xiàn)給程序員,提高了GPU編程的靈活性?
CUDA程序實現(xiàn)并行優(yōu)化程序設計的具體流程主要分為三個步驟:
在CUDA架構中,網格(Grid),塊(Block)和線程(Thread)是三個十分重要的軟件概念,其中線程負責執(zhí)行具體指令的運行任務,線程塊由多個線程組成,網格由多個線程塊組成,線程和線程塊的數(shù)量都可以通過程序的具體實現(xiàn)設定? GPU在執(zhí)行核函數(shù)時會以一個網格作為執(zhí)行整體,將其劃分成多個線程塊,再將線程塊分配給SM執(zhí)行計算任務? GPU內存結構如下圖所示,主要包括位于SP內部的寄存器(Register)?位于SM上的共享內存(Shared memory)和GPU板載的全局內存(Global memory)?
在NVIDIA提出的CUDA統(tǒng)一編程模型中采用Grid的方式管理GPU上的全部線程,每個Grid中又包含多個線程塊(Block),每個Block中又可以劃分成若干個線程組(Warp)?Warp是GPU線程管理的最小單位,Warp內的線程采用單指令多線程(Single Instruction Multiple Threads, SIMT)的執(zhí)行模式? CUDA線程管理的基本結構如下圖所示:
四、總結 隨著深度學習(Deep Learning,DL)的持續(xù)進步,各類深度神經網絡(Deep Neural Network ,DNN)模型層出不窮?DNN不僅在精確度上大幅超越傳統(tǒng)模型,其良好的泛化性也為眾多領域帶來了新的突破? 因此,人工智能(Artificial Intelligence, AI)技術得以迅速應用于各個行業(yè)?如今,無論是在物聯(lián)網(Intemet of Things, IoT)的邊緣設備,還是數(shù)據(jù)中心的高性能服務器,DNN的身影隨處可見,人工智能的發(fā)展離不開計算能力的提升,因此高性能GPU的需求也將不斷提升! |
19款電子扎帶
電路板識別電子標簽