"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機系統架構概覽

如果只關注CPU和GPU,那麼計算結構將如下圖所示。CPU主要從主存(Main Memory)中讀寫數據,並通過總線(Bus)與GPU交互。GPU除了有超多計算核心外,也有自己獨立的存儲,被稱之為顯存。一臺服務器上可以安裝多塊GPU卡,但GPU卡的發熱量極大,普通的空調系統難以給大量GPU卡降溫,所以大型數據中心通常使用水冷散熱,並且選址在溫度較低的地方。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機系統架構概覽

如果只關注CPU和GPU,那麼計算結構將如下圖所示。CPU主要從主存(Main Memory)中讀寫數據,並通過總線(Bus)與GPU交互。GPU除了有超多計算核心外,也有自己獨立的存儲,被稱之為顯存。一臺服務器上可以安裝多塊GPU卡,但GPU卡的發熱量極大,普通的空調系統難以給大量GPU卡降溫,所以大型數據中心通常使用水冷散熱,並且選址在溫度較低的地方。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU與GPU架構

GPU核心在做計算時,只能直接從顯存中讀寫數據,程序員需要在代碼中指明哪些數據需要從內存和顯存之間相互拷貝。這些數據傳輸都是在總線上,因此總線的傳輸速度和帶寬成了部分計算任務的瓶頸。也因為這個瓶頸,很多計算任務並不適合放在GPU上,比如筆者這兩年關注的推薦系統雖然也在使用深度學習,但因為輸入是大規模稀疏特徵,GPU加速獲得的收益小於數據互相拷貝的時間損失。當前最新的總線技術是NVLink,IBM的Power CPU和英偉達的高端顯卡可以通過NVLink直接通信。同時,單臺機器上的多張英偉達顯卡也可以使用NVLink相互通信,適合多GPU卡並行計算的場景。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機系統架構概覽

如果只關注CPU和GPU,那麼計算結構將如下圖所示。CPU主要從主存(Main Memory)中讀寫數據,並通過總線(Bus)與GPU交互。GPU除了有超多計算核心外,也有自己獨立的存儲,被稱之為顯存。一臺服務器上可以安裝多塊GPU卡,但GPU卡的發熱量極大,普通的空調系統難以給大量GPU卡降溫,所以大型數據中心通常使用水冷散熱,並且選址在溫度較低的地方。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU與GPU架構

GPU核心在做計算時,只能直接從顯存中讀寫數據,程序員需要在代碼中指明哪些數據需要從內存和顯存之間相互拷貝。這些數據傳輸都是在總線上,因此總線的傳輸速度和帶寬成了部分計算任務的瓶頸。也因為這個瓶頸,很多計算任務並不適合放在GPU上,比如筆者這兩年關注的推薦系統雖然也在使用深度學習,但因為輸入是大規模稀疏特徵,GPU加速獲得的收益小於數據互相拷貝的時間損失。當前最新的總線技術是NVLink,IBM的Power CPU和英偉達的高端顯卡可以通過NVLink直接通信。同時,單臺機器上的多張英偉達顯卡也可以使用NVLink相互通信,適合多GPU卡並行計算的場景。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

NVLink可以連接CPU和GPU

Intel的CPU目前不支持NVLink,只能使用PCI-E技術,如下圖所示。NVLink和PCI-E都是總線技術的一種。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機系統架構概覽

如果只關注CPU和GPU,那麼計算結構將如下圖所示。CPU主要從主存(Main Memory)中讀寫數據,並通過總線(Bus)與GPU交互。GPU除了有超多計算核心外,也有自己獨立的存儲,被稱之為顯存。一臺服務器上可以安裝多塊GPU卡,但GPU卡的發熱量極大,普通的空調系統難以給大量GPU卡降溫,所以大型數據中心通常使用水冷散熱,並且選址在溫度較低的地方。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU與GPU架構

GPU核心在做計算時,只能直接從顯存中讀寫數據,程序員需要在代碼中指明哪些數據需要從內存和顯存之間相互拷貝。這些數據傳輸都是在總線上,因此總線的傳輸速度和帶寬成了部分計算任務的瓶頸。也因為這個瓶頸,很多計算任務並不適合放在GPU上,比如筆者這兩年關注的推薦系統雖然也在使用深度學習,但因為輸入是大規模稀疏特徵,GPU加速獲得的收益小於數據互相拷貝的時間損失。當前最新的總線技術是NVLink,IBM的Power CPU和英偉達的高端顯卡可以通過NVLink直接通信。同時,單臺機器上的多張英偉達顯卡也可以使用NVLink相互通信,適合多GPU卡並行計算的場景。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

NVLink可以連接CPU和GPU

Intel的CPU目前不支持NVLink,只能使用PCI-E技術,如下圖所示。NVLink和PCI-E都是總線技術的一種。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

目前Intel的CPU只能使用PCI-E與GPU通信

由於CPU和GPU是分開的,在英偉達的設計理念裡,CPU和主存被稱為Host,GPU被稱為Device。Host和Device概念會貫穿整個英偉達GPU編程。

以上結構也被稱為異構計算:使用CPU+GPU組合來加速計算。世界上頂尖的數據中心和超級計算機均採用了異構計算架構。例如超越天河2號成為世界第一的超級計算機Summit使用了9216個IBM POWER9 CPU和27648個英偉達Tesla GPU。

GPU架構

英偉達不同時代產品的芯片設計不同,每代產品背後有一個架構代號,架構均以著名的物理學家為名,以向先賢致敬。當前比較火熱的架構有:

  • Turing 圖靈
  1. 2018年發佈
  2. 消費顯卡:GeForce 2080 Ti
  • Volta 伏特
  1. 2017年末發佈
  2. 專業顯卡:Telsa V100 (16或32GB顯存 5120個核心)
  • Pascal 帕斯卡
  1. 2016年發佈
  2. 專業顯卡:Telsa P100(12或16GB顯存 3584個核心)
"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機系統架構概覽

如果只關注CPU和GPU,那麼計算結構將如下圖所示。CPU主要從主存(Main Memory)中讀寫數據,並通過總線(Bus)與GPU交互。GPU除了有超多計算核心外,也有自己獨立的存儲,被稱之為顯存。一臺服務器上可以安裝多塊GPU卡,但GPU卡的發熱量極大,普通的空調系統難以給大量GPU卡降溫,所以大型數據中心通常使用水冷散熱,並且選址在溫度較低的地方。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU與GPU架構

GPU核心在做計算時,只能直接從顯存中讀寫數據,程序員需要在代碼中指明哪些數據需要從內存和顯存之間相互拷貝。這些數據傳輸都是在總線上,因此總線的傳輸速度和帶寬成了部分計算任務的瓶頸。也因為這個瓶頸,很多計算任務並不適合放在GPU上,比如筆者這兩年關注的推薦系統雖然也在使用深度學習,但因為輸入是大規模稀疏特徵,GPU加速獲得的收益小於數據互相拷貝的時間損失。當前最新的總線技術是NVLink,IBM的Power CPU和英偉達的高端顯卡可以通過NVLink直接通信。同時,單臺機器上的多張英偉達顯卡也可以使用NVLink相互通信,適合多GPU卡並行計算的場景。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

NVLink可以連接CPU和GPU

Intel的CPU目前不支持NVLink,只能使用PCI-E技術,如下圖所示。NVLink和PCI-E都是總線技術的一種。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

目前Intel的CPU只能使用PCI-E與GPU通信

由於CPU和GPU是分開的,在英偉達的設計理念裡,CPU和主存被稱為Host,GPU被稱為Device。Host和Device概念會貫穿整個英偉達GPU編程。

以上結構也被稱為異構計算:使用CPU+GPU組合來加速計算。世界上頂尖的數據中心和超級計算機均採用了異構計算架構。例如超越天河2號成為世界第一的超級計算機Summit使用了9216個IBM POWER9 CPU和27648個英偉達Tesla GPU。

GPU架構

英偉達不同時代產品的芯片設計不同,每代產品背後有一個架構代號,架構均以著名的物理學家為名,以向先賢致敬。當前比較火熱的架構有:

  • Turing 圖靈
  1. 2018年發佈
  2. 消費顯卡:GeForce 2080 Ti
  • Volta 伏特
  1. 2017年末發佈
  2. 專業顯卡:Telsa V100 (16或32GB顯存 5120個核心)
  • Pascal 帕斯卡
  1. 2016年發佈
  2. 專業顯卡:Telsa P100(12或16GB顯存 3584個核心)
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

Telsa V100 設計圖

在英偉達的設計裡,多個小核心組成一個Streaming Multiprocessor(SM),一張GPU卡有多個SM。從“multiprocessor”這個名字上也可以看出SM包含了多個處理器。實際上,英偉達主要以SM為運算和調度的基本單元。上圖為當前計算力最強的顯卡Tesla V100,密密麻麻的綠色小格子就是GPU小核心,多個小核心一起組成了一個SM。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機系統架構概覽

如果只關注CPU和GPU,那麼計算結構將如下圖所示。CPU主要從主存(Main Memory)中讀寫數據,並通過總線(Bus)與GPU交互。GPU除了有超多計算核心外,也有自己獨立的存儲,被稱之為顯存。一臺服務器上可以安裝多塊GPU卡,但GPU卡的發熱量極大,普通的空調系統難以給大量GPU卡降溫,所以大型數據中心通常使用水冷散熱,並且選址在溫度較低的地方。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU與GPU架構

GPU核心在做計算時,只能直接從顯存中讀寫數據,程序員需要在代碼中指明哪些數據需要從內存和顯存之間相互拷貝。這些數據傳輸都是在總線上,因此總線的傳輸速度和帶寬成了部分計算任務的瓶頸。也因為這個瓶頸,很多計算任務並不適合放在GPU上,比如筆者這兩年關注的推薦系統雖然也在使用深度學習,但因為輸入是大規模稀疏特徵,GPU加速獲得的收益小於數據互相拷貝的時間損失。當前最新的總線技術是NVLink,IBM的Power CPU和英偉達的高端顯卡可以通過NVLink直接通信。同時,單臺機器上的多張英偉達顯卡也可以使用NVLink相互通信,適合多GPU卡並行計算的場景。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

NVLink可以連接CPU和GPU

Intel的CPU目前不支持NVLink,只能使用PCI-E技術,如下圖所示。NVLink和PCI-E都是總線技術的一種。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

目前Intel的CPU只能使用PCI-E與GPU通信

由於CPU和GPU是分開的,在英偉達的設計理念裡,CPU和主存被稱為Host,GPU被稱為Device。Host和Device概念會貫穿整個英偉達GPU編程。

以上結構也被稱為異構計算:使用CPU+GPU組合來加速計算。世界上頂尖的數據中心和超級計算機均採用了異構計算架構。例如超越天河2號成為世界第一的超級計算機Summit使用了9216個IBM POWER9 CPU和27648個英偉達Tesla GPU。

GPU架構

英偉達不同時代產品的芯片設計不同,每代產品背後有一個架構代號,架構均以著名的物理學家為名,以向先賢致敬。當前比較火熱的架構有:

  • Turing 圖靈
  1. 2018年發佈
  2. 消費顯卡:GeForce 2080 Ti
  • Volta 伏特
  1. 2017年末發佈
  2. 專業顯卡:Telsa V100 (16或32GB顯存 5120個核心)
  • Pascal 帕斯卡
  1. 2016年發佈
  2. 專業顯卡:Telsa P100(12或16GB顯存 3584個核心)
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

Telsa V100 設計圖

在英偉達的設計裡,多個小核心組成一個Streaming Multiprocessor(SM),一張GPU卡有多個SM。從“multiprocessor”這個名字上也可以看出SM包含了多個處理器。實際上,英偉達主要以SM為運算和調度的基本單元。上圖為當前計算力最強的顯卡Tesla V100,密密麻麻的綠色小格子就是GPU小核心,多個小核心一起組成了一個SM。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

Telsa V100單個SM設計圖

單個SM的結構如圖所示。可以看到一個SM中包含了:

  • 針對不同計算的小核心(綠色小格子),包括優化深度學習的TENSOR CORE,32個64位浮點核心(FP64),64個整型核心(INT),64個32位浮點核心(FP32)。
  • 計算核心直接從寄存器(Register)中讀寫數據。
  • 調度和分發器(Scheduler和Dispatch Unit)。
  • L0和L1級緩存。

前面提到的以物理學家命名的是英偉達各代GPU的架構代號。對於消費者而言,英偉達主要有兩條產品線:

  • 消費級產品 GeForce系列:GeForce 2080 Ti...
  • 高性能計算產品 Telsa系列:Telsa V100、Telsa P100、Telsa P40...

軟件生態

英偉達能夠在人工智能時代成功,除了他們在長期深耕顯卡芯片領域,更重要的是他們率先提供了可編程的軟件架構。2007年,英偉達發佈了CUDA編程模型,軟件開發人員從此可以使用CUDA在英偉達的GPU上進行並行編程。在此之前,GPU編程並不友好。CUDA簡單到什麼程度?有經驗的程序員經過半天的培訓,掌握一些基礎概念後,能在半小時內將一份CPU程序修改成為GPU並行程序。

"

金融建模、自動駕駛、智能機器人、新材料發現、腦神經科學、醫學影像分析...人工智能時代的科學研究極度依賴計算力的支持。提供算力的各家硬件芯片廠商中,最搶鏡的當屬英偉達Nvidia了。這家做顯卡起家的芯片公司在深度學習興起後可謂紅得發紫,如果不聊幾句GPU和英偉達,都不好意思跟別人說自己是做人工智能的。那麼,英偉達的GPU是如何加速計算呢?本系列將介紹GPU計算加速的一些基礎知識:

  1. GPU硬件知識和基礎概念:包括CPU與GPU的區別、GPU架構、CUDA軟件棧簡介。
  2. GPU編程入門:主要介紹CUDA核函數,Thread、Block和Grid概念,並使用Python Numba進行簡單的並行計算。
  3. GPU編程進階:主要介紹多核配置和存儲管理。
  4. GPU編程實踐:使用Python Numba解決複雜問題。
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

本文將是這系列的第一篇文章,主要介紹GPU的硬件和概念。由於個人能力有限,如有疏漏,還請多指正。

什麼是GPU

GPU全名為Graphics Processing Unit,又稱視覺處理器、圖形顯示卡。GPU負責渲染出2D、3D、VR效果,主要專注於計算機圖形圖像領域。後來人們發現,GPU非常適合並行計算,可以加速現代科學計算,GPU也因此不再侷限於遊戲和視頻領域。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機圖形渲染過程

CPU和GPU

現代CPU處理數據的速度在納秒級別,為何還要使用GPU來加速?CPU能被GPU替代嗎?

對於計算機體系不瞭解的朋友可以先閱讀計算機基礎 | 多核、緩存...現代CPU是如何工作的,有助於你理解下面的一些概念。

無論是CPU還是GPU,在進行計算時,都需要用核心(Core)來做算術邏輯運算,比如加減乘與或非等。核心中有ALU(邏輯運算單元)和寄存器等電路。在進行計算時,一個核心只能順序執行某項任務。不可能“吃著火鍋唱著歌”,因為吃飯唱歌都佔著嘴呢。所以為了同時並行地處理更多任務,芯片公司開發出了多核架構,只要相互之間沒有依賴,每個核心做自己的事情,多核之間互不干擾,就可以達到並行計算的效果,極大縮短計算時間。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU vs GPU

個人桌面電腦CPU只有2到8個CPU核心,數據中心的服務器上也只有20到40個左右CPU核心,GPU卻有上千個核心。與CPU的核心不同,GPU的核心只能專注於某些特定的任務。知乎上有人把CPU比作大學教授,把GPU比作一個學校幾千個小學生:同樣是做加減法,幾千個小學生所能做的計算,遠比幾十個大學教授要多得多。俗話說,三個臭皮匠,頂一個諸葛亮。大學教授的知識結構和個人能力遠強於小學生,能獨立解決複雜問題,小學生的知識有限,只能進行簡單的計算。目前來看GPU在處理簡單計算任務上有更大的優勢,但是主要還是靠人海戰術,並不能像CPU那樣可以獨當一面,短時間內也無法替換掉CPU。如下圖所示,在整個計算機系統中,CPU起到協調管理的作用,管理計算機的主存、硬盤、網絡以及GPU等各類元件。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

計算機系統架構概覽

如果只關注CPU和GPU,那麼計算結構將如下圖所示。CPU主要從主存(Main Memory)中讀寫數據,並通過總線(Bus)與GPU交互。GPU除了有超多計算核心外,也有自己獨立的存儲,被稱之為顯存。一臺服務器上可以安裝多塊GPU卡,但GPU卡的發熱量極大,普通的空調系統難以給大量GPU卡降溫,所以大型數據中心通常使用水冷散熱,並且選址在溫度較低的地方。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

CPU與GPU架構

GPU核心在做計算時,只能直接從顯存中讀寫數據,程序員需要在代碼中指明哪些數據需要從內存和顯存之間相互拷貝。這些數據傳輸都是在總線上,因此總線的傳輸速度和帶寬成了部分計算任務的瓶頸。也因為這個瓶頸,很多計算任務並不適合放在GPU上,比如筆者這兩年關注的推薦系統雖然也在使用深度學習,但因為輸入是大規模稀疏特徵,GPU加速獲得的收益小於數據互相拷貝的時間損失。當前最新的總線技術是NVLink,IBM的Power CPU和英偉達的高端顯卡可以通過NVLink直接通信。同時,單臺機器上的多張英偉達顯卡也可以使用NVLink相互通信,適合多GPU卡並行計算的場景。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

NVLink可以連接CPU和GPU

Intel的CPU目前不支持NVLink,只能使用PCI-E技術,如下圖所示。NVLink和PCI-E都是總線技術的一種。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

目前Intel的CPU只能使用PCI-E與GPU通信

由於CPU和GPU是分開的,在英偉達的設計理念裡,CPU和主存被稱為Host,GPU被稱為Device。Host和Device概念會貫穿整個英偉達GPU編程。

以上結構也被稱為異構計算:使用CPU+GPU組合來加速計算。世界上頂尖的數據中心和超級計算機均採用了異構計算架構。例如超越天河2號成為世界第一的超級計算機Summit使用了9216個IBM POWER9 CPU和27648個英偉達Tesla GPU。

GPU架構

英偉達不同時代產品的芯片設計不同,每代產品背後有一個架構代號,架構均以著名的物理學家為名,以向先賢致敬。當前比較火熱的架構有:

  • Turing 圖靈
  1. 2018年發佈
  2. 消費顯卡:GeForce 2080 Ti
  • Volta 伏特
  1. 2017年末發佈
  2. 專業顯卡:Telsa V100 (16或32GB顯存 5120個核心)
  • Pascal 帕斯卡
  1. 2016年發佈
  2. 專業顯卡:Telsa P100(12或16GB顯存 3584個核心)
GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

Telsa V100 設計圖

在英偉達的設計裡,多個小核心組成一個Streaming Multiprocessor(SM),一張GPU卡有多個SM。從“multiprocessor”這個名字上也可以看出SM包含了多個處理器。實際上,英偉達主要以SM為運算和調度的基本單元。上圖為當前計算力最強的顯卡Tesla V100,密密麻麻的綠色小格子就是GPU小核心,多個小核心一起組成了一個SM。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

Telsa V100單個SM設計圖

單個SM的結構如圖所示。可以看到一個SM中包含了:

  • 針對不同計算的小核心(綠色小格子),包括優化深度學習的TENSOR CORE,32個64位浮點核心(FP64),64個整型核心(INT),64個32位浮點核心(FP32)。
  • 計算核心直接從寄存器(Register)中讀寫數據。
  • 調度和分發器(Scheduler和Dispatch Unit)。
  • L0和L1級緩存。

前面提到的以物理學家命名的是英偉達各代GPU的架構代號。對於消費者而言,英偉達主要有兩條產品線:

  • 消費級產品 GeForce系列:GeForce 2080 Ti...
  • 高性能計算產品 Telsa系列:Telsa V100、Telsa P100、Telsa P40...

軟件生態

英偉達能夠在人工智能時代成功,除了他們在長期深耕顯卡芯片領域,更重要的是他們率先提供了可編程的軟件架構。2007年,英偉達發佈了CUDA編程模型,軟件開發人員從此可以使用CUDA在英偉達的GPU上進行並行編程。在此之前,GPU編程並不友好。CUDA簡單到什麼程度?有經驗的程序員經過半天的培訓,掌握一些基礎概念後,能在半小時內將一份CPU程序修改成為GPU並行程序。

GPU計算加速01 : AI時代人人都應該瞭解的GPU知識

英偉達軟件棧

繼CUDA之後,英偉達不斷豐富其軟件技術棧,提供了科學計算所必須的cuBLAS線性代數庫,cuFFT快速傅里葉變換庫等,當深度學習大潮到來時,英偉達提供了cuDNN深度神經網絡加速庫,目前常用的TensorFlow、PyTorch深度學習框架的底層大多基於cuDNN庫。英偉達能在人工智能時代擊敗Intel、AMD等強大對手,很大一部分是因為它豐富的軟件體系。這些軟件工具庫使研發人員專注於自己的研發領域,不用再去花大量時間學習GPU底層知識。CUDA對於GPU就像個人電腦上的Windows、手機上的安卓系統,一旦建立好生態,吸引了開發者,用戶非常依賴這套軟件生態體系。

GPU編程可以直接使用CUDA的C/C++版本進行編程,也可以使用其他語言包裝好的庫,比如Python可使用Numba庫調用CUDA。CUDA的編程思想在不同語言上都很相似。

CUDA及其軟件棧的優勢是方便易用,缺點也顯而易見:

  1. 軟件環境複雜,庫以及版本很多,頂層應用又嚴重依賴底層工具庫,入門者很難快速配置好一整套環境;多環境配置困難。
  2. 用戶只能使用英偉達的顯卡,成本高,個人用戶幾乎負擔不起。

因此,如果沒有專業的運維人員維護GPU機器,最好還是在公有云上按需購買GPU虛擬機。入門者可以考慮雲廠商的Telsa P4虛擬機,大約10+元/小時,雲廠商會配置好CUDA及工具庫。如自己購買物理機,可以考慮消費級的GeForce 2080Ti,這張卡足以應對絕大多數自然語言處理任務。

下一篇文章將講解CUDA編程中的基礎概念,包括核函數,Thread、Block和Grid的概念等,並使用Python Numba庫調用CUDA進行並行計算。

"

相關推薦

推薦中...