CUDA中的基本概念

要學習cuda的同學相信已經對其有一定的了解了,至少直到它是干什么的了。這篇文章主要是對cuda編程中的主要概念進行總結,有了一個大致的輪廓后就好入手了。

異構架構

異構架構即使用CPU和GPU共同進行計算。GPU不能作為一個獨立的運行平臺(程序無法單獨在GPU上運行),它只能作為CPU的一個附屬計算加速器。
在這里插入圖片描述
上圖展示了異構架構中CPU和GPU的關系。CPU和GPU通過PCIe總線進行數據傳輸。在碰到計算密集型任務時,CPU將數據傳給GPU,GPU計算完成后再傳輸回CPU。
從上述架構途中也可看出,GPU上有更多的算術邏輯單元,計算能力更強。

主機(host)和設備(device)

由于CPU和GPU的這種從屬關系,CPU所在的位置被稱為主機端(host),GPU所在位置被稱為設備端(device)。在cuda編程中,主機端代碼和設備端代碼是有嚴格區分的。核函數的代碼只能在GPU上運行。

CUDA中的線程和一般的多線程有什么區別

CPU上的線程是重量級的,上下文切換緩慢且開銷較大, 且線程數量往往有限。CPU的線程相對于GPU的線程更適合處理控制密集型任務(多個if-else).
GPU上的線程是輕量級的。現代GPU上可以同時有成千上萬個線程并發。GPU的線程更適合控制簡單,但是計算密集的任務。

流式多處理器,線程束

GPU架構是圍繞流式多處理器(SM)展開的, GPU上有很多個SM,每個SM能夠支持數百個線程并發執行,因此在一個GPU上并發執行數千個線程是很容易的。下圖所示為一個SM的關鍵組件(了解即可):
在這里插入圖片描述
每個SM上有多個線程,每32個線程被組織成一個線程束(thread wrap)。

線程網格,線程塊

線程束是物理上線程的劃分,但是在cuda編程中,邏輯上更多地是將線程分為不同的線程塊(thread block),不同的線程塊又分到不同的線程網格(thread grid)中。在編程中,每個在GPU上運行的核函數都要指定線程塊和線程網格的維度。線程塊和線程網格的維度都可以是一維二維或者三維。

  • 區分線程塊和線程束
    線程束表示的是線程資源。一個線程塊可能會占用多個線程束。假設在編程中指定一個線程塊中有80個線程,那么這個線程塊將占用3個線程束,多出來的線程束將不會活躍,如下圖所示:
    在這里插入圖片描述
    多個線程塊在一起將會被組織成網格。
    好了,上述就是幾個比較重要的概念,后面將直接通過代碼來學習cuda。

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

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

相關文章

【LINUX網絡】HTTP協議基本結構、搭建自己的HTTP簡單服務器

目錄 1. 初識HTTP 2. URL 2.1 基本結構 2.2 URL中的?與urldecode\urlencode 易混淆:URL和HTTP傳輸請求兩者是什么關系? HTTP的宏觀結構 3. DEMO CODE loop模塊,核心邏輯 HttpServer 初代版本(DEMO 0.0) DEMO 1.0 DEMO…

Spring Boot 靜態函數無法自動注入 Bean?深入解析與解決方案

在 Spring Boot 項目中,開發者常遇到一個典型問題:在靜態方法或靜態變量中嘗試使用 Autowired 注入 Bean 時,始終得到 null 值。本文將深入剖析這一問題的根源,并提供多種可靠解決方案。問題重現:為什么注入失敗&#…

存儲過程作為系統邏輯核心的架構思考 —— 以 SaaS 系統為例

在企業級系統尤其是 SaaS 架構中,技術選型一旦確定,就意味著底層數據庫類型基本不會輕易更換。既然如此,我們可以更大膽地將數據庫能力本身納入系統設計的核心,而不僅僅把它當成一個被動的存儲引擎。存儲過程(Stored P…

Ubuntu20.04下Remmina的VNC密碼忘記后重置

你遇到的錯誤: ** error creating password: /home/ysc/.vnc/passwd storepasswd: No such file or directory說明:x11vnc -storepasswd 無法創建密碼文件,因為 .vnc 目錄不存在。 雖然你可能以為路徑是對的,但系統找不到 /home/y…

從“存得對”到“存得準”:MySQL 數據類型與約束全景指南

目錄 一、為什么需要數據類型與約束? 二、MySQL 數據類型全覽 1. 數值類型:精確 VS 近似 2. 日期時間類型:別讓“0000-00-00”出現 3. 字符串類型:CHAR、VARCHAR、TEXT、BLOB 4. JSON 類型:文檔與關系共舞 5. 空…

Effective C++ 條款42:了解 typename 的雙重含義

Effective C 條款42:了解typename的雙重含義 核心思想:在模板聲明中,typename和class可互換使用,但在模板內部,typename必須用于顯式指明嵌套從屬類型名稱(nested dependent type name)&#xf…

ENCOPIM, S.L. 參展 AUTO TECH China 2025 廣州國際汽車技術展覽會

ENCOPIM, S.L. 參展 AUTO TECH China 2025 廣州國際汽車技術展覽會2025年11月21-24日中國進出口商品交易會展館D區(廣州)AUTO TECH China 2025同期:第二十三屆廣州車展即將盛大開幕展商推薦ENCOPIM, S.L.展位號:3916企業簡介:ENCOPIM, S.L.于…

30 HTB Soccer 機器 - 容易

主要知識點 第一階段:偵查 nmap nmap快速掃描: oxdfhacky$ nmap -p- --min-rate 10000 10.10.11.194 Starting Nmap 7.80 ( https://nmap.org ) at 2023-06-04 13:32 EDT Nmap scan report for 10.10.11.194 Host is up (0.093s latency). Not shown:…

阿里云機器翻譯接口SDK-RAM權限配置

用戶授權翻譯權限在數字化時代,短信作為企業與用戶溝通的重要橋梁,其高效、可靠的送達直接影響業務轉化與用戶體驗。SDK(軟件開發工具包)的出現極大簡化了短信功能的集成過程,讓開發者能夠快速在應用中嵌入短信驗證、通…

ESXI 6.7服務器時間錯亂問題

1. 設置ESXI服務器:在此主機上手動配置日期和時間管理-服務-ntpd-鼠標右鍵-策略-手動啟動和停止,狀態已停止管理-系統-時間和日期-編輯設置-檢查是否選擇了【在此主機上手動配置日期和時間】ntp服務狀態已停止ntp服務器已停止2. 停止所有虛擬機自動更新時…

CV 醫學影像分類、分割、目標檢測,之【皮膚病分類】項目拆解

CV 醫學影像分類、分割、目標檢測,之【皮膚病分類】項目拆解第1-12行:導入庫第14-17行:讀取標簽文件第19-21行:獲取疾病名稱第23-26行:獲取圖片名列表第28-35行:篩選有標簽的圖片第38-43行:提取…

【JavaEE】多線程 -- 線程狀態

目錄六大狀態舉例說明六大狀態 New 新建狀態:線程還沒出創建,只有Thread 實例化的對象,調用start 方法之前的狀態。Runnable 運行狀態:被系統調度后,CPU 正在執行的,Ready 就緒態,系統調度&…

網絡流初步

網絡流初步 文章目錄網絡流初步概念介紹最大流費用流概念介紹 網絡流不同之處在于它的本質圖論,但是把圖論的某些概念換了一個說法而已,初步只要了解網絡流的各個概念就可以明白的很快。 下述概念是本人自己定義的,對于網絡流的題目做的還不…

[系統架構設計師]系統架構基礎知識(一)

[系統架構設計師]系統架構基礎知識(一) 一.計算機系統基礎知識 1.計算機系統概述 硬件軟件及網絡組成的系統 2.計算機硬件基礎知識 馮 諾依曼結構:運算器,控制器,存儲器,輸入設備,輸出設備 專用…

深入解析Java代理模式:靈活控制對象訪問的核心技術

在日常開發中,我們常遇到這樣的場景:需要控制對象訪問權限、優化高成本操作,或給方法添加額外功能(如日志、事務)。代理模式(Proxy Pattern) 正是解決這類問題的金鑰匙。作為結構型設計模式的代…

【學習筆記】Java并發編程的藝術——第9章 Java中的線程池

第9章 Java中的線程池 線程池優勢: ①減少資源消耗 ②提高響應速度 ③統一管理 9.1 線程池的實現原理 當任務來后 ①判斷核心線程池是否已滿,若未滿,創建一個核心線程來執行任務 ②若無空閑核心線程且核心線程已滿,則將任務放入任…

Mybatis學習筆記(九)

常見問題與解決方案 簡要描述:總結MyBatis-Plus開發過程中常見的問題、錯誤及其解決方案,幫助開發者快速定位和解決問題。 核心概念: 常見錯誤:開發中經常遇到的錯誤類型性能問題:性能相關問題的排查和解決配置問題&am…

數據類型 list

一、介紹類似于數組,順序表,deque結構圖特點:元素有序,元素允許重復由于頭尾高效插入刪除,可以模擬棧,隊列二、常見 list 命令1、lpush key elem [elem ...]頭插元素,返回值列表長度2、lrange k…

pyqt5無法顯示opencv繪制文本和掩碼信息

背景:pyqt5無法顯示opencv繪制的標簽和mask;我們在使用YOLO做實例分割做推理時,會使用opencv做后處理結果繪制(含標簽繪制和掩碼繪制);結果opencv繪制的解碼卻無法在pyqt的解碼上面顯示。pyqt轉換代碼如下&…

如何生成嚴格遞增的分布式id?

本文字數:2604字預計閱讀時間:15分鐘01引言在現有分布式系統中,面對增長迅速的業務數據,id生成一直是非常重要的一環。而分布式系統的id生成方案需要滿足幾個重要特性:容錯高可用、高性能高并發、全局唯一。02技術背景…