1. 程式人生 > >Cuda Core,SM,SP等等傻傻分不清?

Cuda Core,SM,SP等等傻傻分不清?

背景

  在深度學習大熱的年代,平行計算也跟著火熱了起來。深度學習變為可能的一個重要原因就是算力的提升。作為平行計算平臺的一種,GPU及其架構本身概念是非常多的。下面就進行一個概念闡述,以供參考。

GPU:視訊記憶體+計算單元

  GPU從大的方面來講,就是由視訊記憶體和計算單元組成:

  1. 視訊記憶體(Global Memory):視訊記憶體是在GPU板卡上的DRAM,類似於CPU的記憶體,就是那堆DDR啊,GDDR5啊之類的。特點是容量大(可達16GB),速度慢,CPU和GPU都可以訪問。
  2. 計算單元(Streaming Multiprocessor):執行計算的。每一個SM都有自己的控制單元(Control Unit),暫存器(Register),快取(Cache),指令流水線(execution pipelines)。

  我們可以看一下
這裡寫圖片描述
這裡寫圖片描述
  所以其實Global Memory的真身就是那個記憶體顆粒。
  來看下GPU裡邊的東西,是時候對密集恐懼症患者放出大招了:
這裡寫圖片描述
這個是英偉達PASCAL架構的GP100 GPU的架構。由非常多的Streaming Multiprocesser組成的(裡邊的各種外設先不說了)。下面我們看一下Streaming Multiprocessor的內容。

Streaming Multiprocessor (SM)

  下面這個圖是SM:
這裡寫圖片描述
  在GP100裡,每一個SM有兩個SM Processing Block(SMP),裡邊的綠色的就是CUDA Core,CUDA core也叫Streaming Processor(SP),這倆是一個意思。每一個SM有自己的指令快取,L1快取,共享記憶體。而每一個SMP有自己的Warp Scheduler、Register File等。要注意的是CUDA Core是Single Precision的,也就是計算float單精度的。雙精度Double Precision是那個黃色的模組。所以一個SM裡邊由32個DP Unit,由64個CUDA Core,所以單精度雙精度單元數量比是2:1。LD/ST 是load store unit,用來記憶體操作的。SFU是Special function unit,用來做cuda的intrinsic function的,類似於__cos()這種。

CUDA Core

  下面這個圖是CUDA Core的結構:
這裡寫圖片描述
  包括控制單元Dispatch Port、Operand Collector,以及浮點計算單元FP Unit、整數計算單元Int Unit,另外還包括計算結果佇列。當然還有Compare、Logic、Branch等。相當於微型CPU。

GPU記憶體架構

  貼一張圖:
這裡寫圖片描述
  越靠近SM的記憶體就越快。

  1. L1 Cache:Pascal架構上,L1 Cache和Texture已經合為一體(Unified L1/Texture Cache),作為一個連續快取供給warp使用。
  2. L2 Cache:用來做Global Memory的快取,容量大,給整個GPU使用。

關於CUDA方面的一些參考文獻

  我發現Nvidia的文獻非常分散,下面列舉一些常用的。btw,PASCAL啊,VOLTA都是英偉達GPU架構代號。

相關推薦

Cuda CoreSMSP等等

背景   在深度學習大熱的年代,平行計算也跟著火熱了起來。深度學習變為可能的一個重要原因就是算力的提升。作為平行計算平臺的一種,GPU及其架構本身概念是非常多的。下面就進行一個概念闡述,以供參考。 GPU:視訊記憶體+計算單元   GPU從大的方面來講

CUDA程式設計——GPU架構spsmthreadblockgridwarp說起

  掌握部分硬體知識,有助於程式設計師編寫更好的CUDA程式,提升CUDA程式效能,本文目的是理清sp,sm,thread,block,grid,warp之間的關係。由於作者能力有限,難免有疏漏,懇請讀者批評指正。   首先我們要明確:SP(streaming

JavaScript陣列之系列(splitspliceslice)

因業務場景需求,需要將一個數組截斷而不需要影響原陣列。這裡來理解一下 slice,splice,split 2個引數:1、起點,從這個起點開始(從0開始算,包含它)2、結束點,到這個位置的前一個結束(即不包含它本身),未設定或者超出長度則預設到結尾由於它有不改變原陣列的特性,slice(0)可以深度拷貝一

指標陣列陣列指標

總結如下(1) 指標陣列:簡單講,就是由指標組成的陣列。即指標中的每個元素都是相同的資料型別的指標變數。定義:char *arr[4] = {"hello", "world", "shannxi", "xian"};//arr就是我定義的一個指標陣列,它有四個元素,每個元素是

RCurl中這麼多get函式是一直!!!

杜雨,EasyCharts團隊成員,R語言中文社群專欄作者,興趣方向為:Excel商務圖表,R語

過濾器 和 攔截器 6個區別別再

>本文收錄在個人部落格:[www.chengxy-nds.top](http://www.chengxy-nds.top),技術資料共享,同進步 週末有個小夥伴加我微信,向我請教了一個問題:老哥,**過濾器 (`Filter`) 和 攔截器 (`Interceptor`) 有啥區別啊?** 聽到題目我的第一

Linux中su和su -區別別再

寫在前面   如果你不清楚su和su -切換使用者的區別,你一定會遇到在使用su切換使用者執行命令出現報錯"command not found"感到驚訝。分明之前這個指令執行的好好的,為什麼現在就報錯了呢?關鍵原因就在於你不清楚su和su -命令使用的區別。 su與su -區別   su和

Web前端後端,

processor sea fix world port submit 文章 word targe 1. Web前端後端傻傻分不清 原創 2016年12月25日 19:50:08 7178 0 2 前言 ??做C開發將近六年,基本上沒有接觸過web相關的東西,原

NPM install -save 和 -save-dev

als config 回顧 tool 變量 項目 比較 gulp itl 本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 回顧 npm install 命令 最近在寫Node程序的時

python接口自動化13-data和json參數

自動 AS json格式 tle class ID -name loading CA 前言 在發post請求的時候,有時候body部分要傳data參數,有時候body部分又要傳json參數,那麽問題來了:到底什麽時候該傳json,什麽時候該傳data? 一、識別jso

[web前端] npm install -save 和 -save-dev

本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 最近在寫Node程式的時候,突然對 npm install 的-save和-save-dev 這兩個引數的使用比較混亂。其實博主在這之前對這兩個引數的理解也是模糊的,各

神經網路訓練中,Epoch、Batch Size和迭代

你肯定經歷過這樣的時刻,看著電腦螢幕抓著頭,困惑著:「為什麼我會在程式碼中使用這三個術語,它們有什麼區別嗎?」因為它們看起來實在太相似了。 為了理解這些術語有什麼不同,你需要了解一些關於機器學習的術語,比如梯度下降,以幫助你理解。 這裡簡單總結梯度下降的含義… 梯度下降 這是一個在機器學習中用於尋找最

Post,Get介面

Post,Get介面傻傻分不清? 引言 幾天前和後端同事探討介面問題。起因是他給我一個不需要任何資料提交,單純得到資料的Post介面。引發了我對Post,Get介面的思考。 Post,Get介面是我們最常使用的介面。那麼那些似乎約定俗成的規則又是怎麼來的呢? 他們究竟哪裡不同? 下面讓我們一探究竟吧。

[隨手記]NPM install -save 和 -save-dev

說明: 想了解到這個問題,在網上搜索到的解釋,覺得很好,隨手記下來,依據原作者要求,附上原文資訊: 如下是原文的資訊: 作者:暗夜餘暉 正文: 回顧 npm install 命令 最近在寫Node程式的時候,突然對 npm install 的-save和-sa

[轉自有道]十六種英語時態?一篇文章告訴你它們的所有用法

時態Tense是表示行為、動作和狀態在各種時間條件下的動詞形式。因此,當我們說時態結構的時候,指的是相應時態下的動詞形式 英語時態共有16種,分別是一般現在、一般過去、一般將來、過去將來時,以及這四者的進行時、完成時和完成進行時 在不同的時態中,動詞都會發生相應變化,時間狀

的javascript執行機制

學習到javascript的執行機制時,有幾個概念經常出現在各種文章中且容易混淆。Execution Context(執行環境或執行上下文),Context Stack (執行棧),Variable Object(VO: 變數物件),Active Object(AO: 活動物件),LexicalEnvi

超畫素、語義分割、例項分割、全景分割

在計算機視覺中,影象分割是個非常重要且基礎的研究方向。簡單來說,影象分割(image segmentation)就是根據某些規則把圖片中的畫素分成不同的部分(加不同的標籤)。 影象分割中的一些常見的術語有:superpixels(超畫素)、Semantic Segmentation(語義分割)、Instan

C++ 全域性變數 靜態全域性變數

今天上午寫C++程式碼,被神馬全域性變數和靜態全域性變數困住了,出現了各種“重定義”和“連結”相關的error。到底在哪裡宣告,在哪裡定義,哪裡使用extern?傻傻分不清~ 本來我想自己總結一下的,後來看到網上的總結太詳細了,我就直接轉載一下,以下文章轉自網站“指令碼之家”,看這篇文章還順帶複習編

均值與期望:

作者: 一人 前些日子偶然間聽到一位新同事問一位做演算法的同事:均值是不是期望?老演算法回答說:這是不同的概念。說完之後,由於有事就急匆匆的走了。偶聽到之後狐疑了一會,打開了搜尋引擎。當然,答案是非常明晰且簡單的,均值嚴格來說就是期望。然而在查閱網上相關討論時

ERP、進銷存、倉儲管理系統三者

查了很多資料、聽了很多介紹,看到ERP、進銷存、倉儲管理系統這三個詞是不是依然一臉懵B? 今天,選軟體網就來給大家說說他們仨之間的區別與聯絡。 一、懵圈源頭:共同的模組功能 這三大管理軟體為什麼會讓大家產生混淆,究其根本,是因為ERP、進銷存、倉儲管理系統