Nvidia CUDA初級教程4 GPU體系架構概述

Nvidia CUDA初級教程4 GPU體系架構概述

視頻:https://www.bilibili.com/video/BV1kx411m7Fk?p=5
講師:周斌

本節內容:

  • 為什么需要GPU
  • 三種方法提升GPU的處理速度
  • 實際GPU的設計舉例:
    • NVDIA GTX 480: Fermi
    • NVDIA GTX 680: Kepler
  • GPU存儲器設計

名詞解釋

  • FLOPS - Floating-point OPerations per Second
  • GFLOPS - One billion (10e9) FLOPS
  • TFLOPS - 1000GFLOPS

為什么需要GPU

  • 應用的需求越來越高
  • 計算機技術由應用驅動 Application Driven
    • 石油勘探
    • 氣象預報

GPU圖示

結構略圖

GPU是一個異構的多處理器芯片,為圖形圖像處理優化

在這里插入圖片描述

執行單元 Execute Shader

在這里插入圖片描述

CPU類型的內核

在這里插入圖片描述

可以看到,在常規的CPU類型的芯片中,真正進行運算的部分(左側)所占的面積并不大,而是大緩存和上節提到的亂序執行控制邏輯、分支預測器等優化部分占了很大一部分面積。

思路1:精簡、減肥

移除掉那些來幫助單個指令流執行的更快的組件。

兩個核,同時執行兩個程序片元

在這里插入圖片描述

16個核,同時執行16個程序片元

在這里插入圖片描述

指令流共享:多個程序片元共享指令流。因為如果要執行不同的指令流的話,就需要復雜的控制機構。

思路二:增加ALU,SIMD

在這里插入圖片描述

  • 處理單元ALU改進
  • 指令變化
  • 多數據并行

128(16*8)個程序片元同時執行,并發16路指令流

在這里插入圖片描述

這16路可以共享相同的指令流,也可以不共享。

注意:

  • SIMD處理并不總是需要顯式的SIMD指令:
    • 選項一:顯式的向量運算指令
      • SSE等
    • 選項二:標量指令,但是硬件進行矢量化
      • 硬件進行指令流共享
      • NVIDIA等架構
      • 多個片元共享指令流

分支處理怎么辦?

在這里插入圖片描述

由于共享相同的指令流,故按照根據邏輯,某些數據在分支被執行時,另一些在其他分支的數據只能等待。因為它們共享指令流,同一時間必須做相同的事情。

停滯怎么辦?

指令有時需要等待其依賴的數據

思路三:片元切換,掩藏延遲

上面提到,很多時候(如分支處理、停滯等),會出現大量片元等待的情況,這無疑會大大降低效率。對此,我們有思路三:

  • 大量的獨立片元相互切換
  • 通過偏遠切換來掩藏延遲

給單個片元設置多個(彼此獨立的)任務,當某個任務停滯時,去執行其他任務。

獲得較高的吞吐 throughput。

上下文存儲空間

在這里插入圖片描述

18個小的上下文:更好的延遲掩藏的效果

在這里插入圖片描述

12個中等大小的上下文

在這里插入圖片描述

四個大的上下文:延遲隱藏效果較差

在這里插入圖片描述

每個上下文更大,但是延遲隱藏能力較差

注意:

  • 上下文切換可以使軟件管理也可以是硬件管理,也可以是結合管理。

總結

“我”的設計

根據上面的三個思路,我們得到了一種芯片設計:

在這里插入圖片描述

  • 16個核
  • 每個核8個乘加ALU
  • 16個同時指令流
  • 64路并發指令流
  • 512 (16*4*8) 個并發程序片元
  • 256GFLOPS,1GHz

三個關鍵思路

  1. 保留每個核的計算部分,將其他部分盡量移除
  2. 將每個核填滿 ALU (通過共享指令流)
    • 選項1:顯式的 SIMD 向量指令
    • 選項2:隱式的共享,由硬件管理
  3. 通過在多組任務間切換避免停滯

不同GPU架構舉例

Fermi架構

Kepler架構

存儲和數據訪問

CPU類型的緩存

在這里插入圖片描述

CPU通常會有多級緩存

GPU型的吞吐處理核

GPU中有更多的ALU,沒有傳統的分級緩存,需要更高的帶寬

在這里插入圖片描述

帶寬是非常寶貴的資源

減少帶寬需求

  • 減少不必要的數據請求,做更多的計算
  • 每次訪存多取數據,從而減少訪存次數

現代GPU的存儲器結構

在這里插入圖片描述

總結

GPU的特點

GPU是異構、眾核的處理器

針對吞吐優化

高效的GPU任務具備的條件

  • 具有成千上萬的獨立工作
    • 盡量利用大量的ALU單元
    • 大量的片元切換掩藏延遲
  • 可以共享指令流
    • 適用于 SIMD
  • 最好是計算密集的任務
    • 通信和計算的開銷比例合適
    • 不要受制于訪存帶寬

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532531.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532531.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532531.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nvidia CUDA初級教程5 CUDA/GPU編程模型

Nvidia CUDA初級教程5 CUDA/GPU編程模型 視頻:https://www.bilibili.com/video/BV1kx411m7Fk?p6 講師:周斌 本節內容: CPU和GPU互動模式GPU線程組織模型(需要不停強化)GPU存儲模型基本的編程問題 CPU與GPU交互 各自…

Nvidia CUDA初級教程6 CUDA編程一

Nvidia CUDA初級教程6 CUDA編程一 視頻:https://www.bilibili.com/video/BV1kx411m7Fk?p7 講師:周斌 GPU架構概覽 GPU特別使用于: 密集計算,高度可并行計算圖形學 晶體管主要被用于: 執行計算而不是 緩存數據控制指令…

由前中后遍歷序列構建二叉樹

由前/中/后遍歷序列構建二叉樹 基礎 首先,我們需要知道前中后序三種深度優先遍歷二叉樹的方式的具體順序: 前序:中左右中序:左中右后序:左右中 另外,要知道只有中序前/后序可以唯一確定一棵二叉樹&…

手寫nms

手寫nms 計算寬高的時候加1是為什么? 本文總結自互聯網的多種nms實現,供參考,非博主原創,各原文鏈接如下,也建議大家動手寫一寫。 Ref: 淺談NMS的多種實現 目標窗口檢測算法-NMS非極大值抑制 一、fas…

目標檢測綜述

目標檢測綜述 轉自:https://zhuanlan.zhihu.com/p/383616728 論文參考:[Object Detection in 20 Years: A Survey][https://arxiv.org/abs/1905.05055] 引言 目標檢測領域發展至今已有二十余載,從早期的傳統方法到如今的深度學習方法&#x…

Nvidia CUDA初級教程7 CUDA編程二

Nvidia CUDA初級教程7 CUDA編程二 視頻:https://www.bilibili.com/video/BV1kx411m7Fk?p8 講師:周斌 本節內容: 內置類型和函數 Built-ins and functions線程同步 Synchronizing線程調度 Scheduling threads存儲模型 Memory model重訪 Matr…

詳解優酷視頻質量評價體系

萬字長文 | 詳解優酷視頻質量評價體系 分享嘉賓|李靜博士,阿里巴巴文娛集團資深算法專家,阿里巴巴大文娛摩酷實驗室視頻體驗與質量團隊負責人 整理出品|AICUG人工智能社區 本文地址:https://www.6aiq.com/article/1617…

視頻質量評價:挑戰與機遇

視頻質量評價:挑戰與機遇 轉自:https://zhuanlan.zhihu.com/p/384603663 本文整理自鵬城實驗室助理研究員王海強在LiveVideoStack線上分享上的演講。他通過自身的實踐經驗,詳細講解了視頻質量評價的挑戰與機遇。 文 / 王海強 整理 / LiveVi…

關于二分法的邊界問題及兩種寫法

關于二分法的邊界問題及兩種寫法 二分查找法大家很熟悉了,對于一個有序序列,我們可以通過二分查找法在 O(logN)O(logN)O(logN) 的時間內找到想要的元素。但是,在代碼實現的過程中,如果沒有仔細理解清楚,二分法的邊界條…

LeetCode上的各種股票最大收益

LeetCode上的各種股票最大收益 對于力扣平臺上的股票類型的題目: 121 買賣股票的最佳時機 122 買賣股票的最佳時機 II 123 買賣股票的最佳時機 III 124 買賣股票的最佳時機 IV 309 最佳買賣股票時機含冷凍期 714 買賣股票的最佳時機含手續費 劍指 Offer 63. …

建設專業化運維服務團隊必要性

信息系統的生命周期涵蓋:設計、開發、測試、部署上線、運行維護。其中,運行維護階段是信息系統生命周期中的關鍵環節,其執行效果直接影響系統是否能達到預期的運行目標。為了實現這個目標,我們必須建立一個以業務服務為導向的專業…

docker初探

docker初探 本文旨在介紹 docker 基本的安裝、常用命令和常見概念的辨析,方便新手入門和筆者日后查閱,大部分內容整理自互聯網,原出處在文中注明。 文章目錄docker初探docker安裝(mac)版本、信息相關命令version/info…

ubuntu安裝zsh、oh-my-zsh及常用配置

ubuntu安裝zsh、oh-my-zsh及常用配置 目前,ubuntu默認的shell是bash,但還有一種shell,叫做zsh它比bash更加強大,功能也更加完善,zsh雖說功能強大,但是配置比較復雜導致流行度不是很高 但是好東西終究是好…

Segmentaion標簽的三種表示:poly、mask、rle

Segmentaion標簽的三種表示:poly、mask、rle 不同于圖像分類這樣比較簡單直接的計算機視覺任務,圖像分割任務(又分為語義分割、實例分割、全景分割)的標簽形式稍為復雜。在分割任務中,我們需要在像素級上表達的是一張…

tensorboard報錯:ValueError Duplicate plugins for name projector 問題的出現及解決過程

tensorboard報錯:ValueError: Duplicate plugins for name projector 問題的出現及解決過程 記錄如題問題的出現及解決過程。 報錯命令及信息 筆者在終端調用 tensorboard 時: tensorboard --logdirruns/ --bind_all報錯: raise ValueEr…

發布自己的Python包(Pypi)

發布自己的Python包(Pypi) 我們經常使用 Pypi 來安裝包,但是有時候我們也想要發布自己的 Pypi 包,有可能我們寫了一個特別牛的包,也有可能我們只是想使用自己常用的一些輪子,可能這是我們日常編碼中很常用的一些輪子,…

Ubuntu PPA 使用指南

Ubuntu PPA 使用指南 轉自:https://zhuanlan.zhihu.com/p/55250294 一篇涵蓋了在 Ubuntu 和其他 Linux 發行版中使用 PPA 的幾乎所有問題的深入的文章。 如果你一直在使用 Ubuntu 或基于 Ubuntu 的其他 Linux 發行版,例如 Linux Mint、Linux Lite、Zorin…

如何在 Linux 中快速地通過 HTTP 提供文件訪問服務

如何在 Linux 中快速地通過 HTTP 提供文件訪問服務 轉自:https://linux.cn/article-10205-1.html 如今,我有很多方法來通過 Web 瀏覽器為局域網中的其他系統提供單個文件或整個目錄的訪問。我在我的 Ubuntu 測試機上測試了這些方法,它們如下面…

Linux apt命令

Linux apt命令及其與apt-get的關系 轉自:https://blog.csdn.net/taotongning/article/details/82320472、https://www.runoob.com/linux/linux-comm-apt.html apt(Advanced Packaging Tool)是一個在 Debian 和 Ubuntu 中的 Shell 前端軟件包管…

楊宏宇:騰訊多模態內容理解技術及應用

楊宏宇:騰訊多模態內容理解技術及應用 分享嘉賓:楊宇鴻 騰訊 內容理解高級工程師 編輯整理:吳祺堯 出品平臺:DataFunTalk 導讀: 搜索內容的理解貫穿了整個搜索系統。我們需要從多個粒度理解搜索內容,包括語…