GPU 編程相關 簡要摘錄

来源:https://www.cnblogs.com/xuyaowen/archive/2019/08/31/heterogeneous-system-architecture.html
-Advertisement-
Play Games

GPU 編程可以稱為異構編程,最近由於機器學習的火熱,很多模型越來越依賴於GPU來進行加速運算,所以異構計算的位置越來越重要;異構編程,主要是指CPU+GPU或者CPU+其他設備(FPGA等)協同計算。當前的計算模型中,CPU主要用來進行通用計算,其更多的是註重控制,我們可以通過GPU和FPGA等做 ...


GPU 編程可以稱為異構編程,最近由於機器學習的火熱,很多模型越來越依賴於GPU來進行加速運算,所以異構計算的位置越來越重要;異構編程,主要是指CPU+GPU或者CPU+其他設備(FPGA等)協同計算。當前的計算模型中,CPU主要用來進行通用計算,其更多的是註重控制,我們可以通過GPU和FPGA等做專用的計算。

CPU負責邏輯性強的事物處理和串列計算,GPU則專註於執行高度線程化的並行處理任務(大規模計算任務)

編程框架:

  • C++ AMP:Accelerator Massive Parallelism :C++的異構並行模型.
  • CUDA:Compute Unified Device Architecture :顯卡廠商Nvidia於2007年推出的業界第一款異構並行編程框架。
  • OpenCL (Open Computing Language):業界第一個跨平臺的異構編程框架。它是Apple領銜並聯合Nvidia,AMD,IBM,Intel等眾多廠商於2008年共同推出的一個開放標準,由單獨成立的非營利性組織Khronos Group管理。與C++ AMP類似,OpenCL作為一個開放的標準,並不局限於某個特定的GPU廠商。

三種異構編程框架,對比來看:CUDA和OPENCL 比 C++ AMP 更接近於硬體底層,所以前兩者性能較好,C++ AMP 相對前兩者 具有較高的易編程性;

三種框架的選擇:

  • 看重易用性:C++ AMP, Windows 平臺,C++ 本身也是一個開放的標準,目前只有微軟自己做了實現;
  • 看重NvidiaGPU卡上的高性能:CUDA;有大廠的直接支持,CUDA的開發環境也非常成熟,擁有很多函數庫的支持;
  • 看重不同平臺間的可移植性:OpenCL可能是目前最好的選擇;(相對於OPENCL 你可能會聽說過 OPENCV,OPENGL,OPENAL 等標準)opencl 得到了很多軟硬體廠商的大力支持。

異構計算中常見的組合:

通用處理器對協處理器之間,主要考慮一些幾個方面:協處理器能全面支持需要用到的場景關鍵演算法(演算法性能);協處理器需要有大量並行通道,每個通道支持低延時的數據處理(數據並行和低延時處理能力);和主處理器能方便得進行數據交互(介面性能較好);協處理器可以針對計算需求升級迭代(配置靈活);協處理器更低的運行成本,更小的空間占用和更簡單的熱處理方案(低功耗);

  • CPU+GPU
    • GPU 中,大量的硬體資源被用於邏輯運算單元,小部分用作控制電路,GPU中一個控制單元要負責好幾個計算單元,其為大規模數據並行處理提供了基礎;使用GPU做異構計算需要考慮GPU Memory 和 System Memory數據相關性和儘量減少異構計算過程中的控制分支;
  • CPU+FPGA
    • FPGA 優點:
      • 穩定性:驅動層控制硬體,減少了系統搶占帶來的風險;
      • 性能:利用硬體並行的優勢,打破了順序執行的模式;硬體控制層面控制IO輸入和輸出達到了專業需求能力;
      • 維護性高:FPGA可以現場升級,無需重新設計ASIC所需要的時間和費用投入;
      • 成本:比定製化的ASIC便宜,可自定義編程使用;
  • CPU+ASIC
    • ASIC 為Application Specific Integrated Circuit, 特殊定製集成電路。編程語言越接近底層硬體,運行速度越快。
    • 性能方面:ASIC > FPGA > GPU;
    • 缺點:由於ASIC 定製化,導致價格較為高昂,定製過程漫長,而且功能一旦定製就很難再去更改;

CPU 與 GPU 體繫結構:

 

 CPU 是一種低延遲的設計:

  • 強大的ALU,擁有較高的時鐘頻率;
  • 容量較大的cache,包括L1,L2,L3三級高速緩存,現在基本上是片上cache,cache占據相當一部分片上空間;
  • CPU有複雜的控制邏輯,如:複雜的流水線(pipeline)、分支預測(branch prediction)、亂序執行(Out-of-order execution)等;
  • 這些導致了,cpu使用較少的資源用於ALU 計算單元;

 

 GPU是一種面向吞吐的設計:

  • GPU 有大量的ALU;
  • cache很小,緩存為thread提高服務,而不是保存後面需要訪問的數據,這點和CPU不同;
  • 沒有複雜的控制邏輯,沒有分支預測等這些組件;
  • 於CPU對比起來,CPU擅長處理邏輯負載,串列的計算任務;而GPU擅長的是大規模的數據並行的計算任務;

參考鏈接:

http://hustcat.github.io/gpu-architecture/

https://www.huzhenyu.me/

https://www.cnblogs.com/biglucky/p/4223565.html

https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html

http://haifux.org/lectures/267/Introduction-to-GPUs.pdf (推薦)

資源多整理自網路,保持更新,如果對您有幫助,請關註 cnblogs.com/xuyaowen


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • inux和unix上都提供了history命令,可以查詢以前執行的命令歷史記錄 但是,這個記錄並不包含時間項目 因此只能看到命令,但是不知道什麼時間執行的 以下便是history記錄時間的方法: 第一步:查看系統是否支持 註:本方法只對bash 3.0以上版本有效 執行rpm q bash即可顯示b ...
  • rsync命令詳解 rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。rsync使用所謂的“rsync演算法”來使本地和遠程兩個主機之間的文件達到同步,這個演算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync是一個功能非常強大的工具,其命令 ...
  • 目錄 系統信息 關機 (系統的關機、重啟以及登出 ) 文件和目錄 文件搜索 掛載一個文件系統 磁碟空間 用戶和群組 文件的許可權 文件的特殊屬性 打包和壓縮文件 RPM 包 (Fedora, Redhat及類似系統) YUM 軟體包升級器 (Fedora, RedHat及類似系統) DEB 包 (De ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 介紹 讓我們思考幾個朴素的問題? 1. 系統是怎麼知道物理記憶體的? 2. 在記憶體管理真正初始化之前, ...
  • 記憶體管理的⽬標:實現記憶體分配和回收,提高記憶體空間的利用率和記憶體的訪問速度 一、存儲器的層次結構 數據存儲的局部性原理: 局部性:在⼀段較短時間內,程式的執⾏僅限於某個部分,相應地它所訪問的存儲空間也局限於某個區域 分類: 時間局部性:某條指令⼀旦執⾏,不久 後該指令可能再次執⾏ 空間局部性:⼀旦程式 ...
  • Services.msc是Windows2000/XP/2003/Vista/7/2008/8/8.1/10系統中用來啟動、終止並設置 Windows 服務的管理策略。 作用:控制系統服務。 性質:系統組建管理策略之一。 啟動方式: win鍵+R鍵啟動運行,在運行框中輸入 有時,我們需要開啟或關閉W ...
  • 一,先說一下VMware軟體和linux鏡像的版本: VMware Workstation 14 Pro ubuntu-14.04.6-desktop-amd64.iso 二,遇到的問題 在第一次安裝後可以連接到網路,但是在重啟了電腦後,再打開虛擬機就連不上網。 在這種情況下的無法連接網路 三、解決 ...
  • centos源碼編譯安裝新版本內核   在工作中,很多時候由於需要使用新的技術方案,需要較新版本的內核來支持新的功能,而centos系統自帶的內核版本普遍都比較舊,因此我們需要對系統的內核進行升級,安裝新版的內核。在此,以centos7系統為例,對編譯安裝最新版內核的過程做如下總 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...