(三) CUDA 硬件實現

一組帶有on-chip 共享內存的SIMD多處理器

GPU可以被看作一組多處理器, 每個多處理器使用單一指令,多數據架構(SIMD)【單指令流多數據流】

在任何給定的時鐘周期內,多處理器的每個處理器執行同一指令,但操作不同的數據

每個多處理器使用以下四種類型的on-chip(集成的)內存:

  1. 每個處理器一組本地32位寄存器
  2. 并行數據緩存或共享內存,被所有處理器共享實現內存空間共享
  3. 通過設備內存的一個只讀區域,一個只讀常量緩沖器被所有處理器共享
  4. 通過設備內存的一個只讀區域,一個只讀紋理緩沖器被所有處理器共享

本地和全局內存空間作為設備內存的讀寫區域,而不被緩沖

每個多處理器通過紋理單元訪問紋理緩沖器,它執行各種各樣的尋址模式和數據過濾

在這里插入圖片描述
執行模式

一個線程塊柵格是通過多處理器規劃執行的

一個塊只被一個多處理器處理,因此可以對駐留在on-chip 共享內存中的共享內存空間形成非常快速的訪問

一個批處理中每一個多處理器可以處理多少個塊,取決于每個線程中分配了多少個寄存器和已知內核中每個時鐘需要多少的共享內存

因為多處理器的寄存器和內存在所有的線程中是分開的

如果在至少一個塊中,每個多處理器沒有足夠的寄存器或共享內存可用,那么內核將無法啟動

線程塊在一個批處理中被一個多處理器執行,被稱作active

每個active 塊被劃分成為SIMD 線程組,稱為warps

每一條這樣的warp 包含數量相同的線程,叫做warp 大小,并且在SIMD 方式下通過多處理器執行

線程調度程序周期性地從一條warp 切換到另一條warp,以達到多處理器計算資源使用的最大化!

塊被劃分成為warp 的方式是相同的

每條warp 包含連續的線程,線程索引從第一個warp 包含著的線程0 開始遞增

一個多處理器可以處理并發地幾個塊,通過劃分在它們之中的寄存器和共享內存

更準確地說,每條線程可使用的寄存器數量,等于每個多處理器寄存器總數除以并發的線程數量

并發線程的數量等于并發塊的數量乘以每塊線程的數量

在一個塊內的warp 次序是未定義的,但通過協調全局或者共享內存的存取,它們可以同步的執行

如果一個通過warp 線程執行的指令寫入全局或共享內存的同一位置,寫的次序是未定義的

在一個線程塊柵格內的塊次序是未定義的,并且在塊之間不存在同步機制

因此來自同一個柵格的二個不同塊的線程不能通過全局內存彼此安全地通訊

計算兼容性

設備的計算兼容性由兩個參數定義,主要版本號和次要版本號

設備擁有相同的主要版本號代表相同的核心架構

次要版本號代表一些改進的核心架構,比如新的特性

多設備

為一個應用程序使用多GPU 作為CUDA 設備,必須保證這些GPU 是一樣的類型

如果系統工作在SLI 模式下,那么只有一個GPU 可以作為CUDA 設備

因為所有的GPU 在驅動堆棧中被底層的融合了

SLI 模式需要在關閉,這樣才能使用多個GPU 作為CUDA設備

模式切換

GPU 指定一些DRAM 來存儲被稱作primary surface 的內容,這些內容被用于顯示輸出

如果用戶改變顯示的分辨率或者色差,那么primary surface 的存儲需求量將改變

如果用戶將顯示分辨率從1280x1024x32bit1600x1200x32bit

那么,系統必須指定7.68MB 的primary surface 而不在是5.24MB

(使全屏抗鋸齒的應用程序需要更多的primary surface空間)

如果模式切換增加了primary surface 的內存空間,系統將會占用CUDA 所指定的內存空間,導致OOM

什么是紋理緩沖器

紋理存儲器(texture memory)是一種只讀存儲器,由GPU用于紋理渲染的的圖形專用單元發展而來,因此也提供了一些特殊功能。

紋理緩存的優勢:
紋理緩存具備硬件插值特性,可以實現最近鄰插值和線性插值。紋理緩存針對二維空間的局部性訪問進行了優化,所以通過紋理緩存訪問二維矩陣的鄰域會獲得加速。紋理緩存不需要滿足全局內存的合并訪問條件。

紋理可以是一段連續的設備內存,也可以是一個CUDA數組。但是CUDA數組對局部尋址有優化,稱為“塊線性”,原理是將鄰域元素緩存在同一條cache線上,這將加快鄰域內的尋址,但是對于設備內存,并沒有“塊線性”。所以,選擇采用CUDA數組,還是設備內存,需要根據實際情況決定,將數據copy至CUDA數組是很耗時的。

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

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

相關文章

HASH索引,AVL樹,B樹,B+樹的區別?

1. 什么是 Hash 1.1 Hash 函數 Hash 本身其實是一個函數,又被稱為散列函數,它可以大幅提高我們對數據的檢索效率。因為它是散列的,所以在存儲數據的時候,它也是無序的。 Hash 算法是通過某種確定性的算法(例如MD5,S…

virtualBox橋接模式下openEuler鏡像修改IP地址、openEule修改IP地址、openEule設置IP地址

安裝好openEuler后,設置遠程登入前,必不可少的一步,主機與虛擬機之間的通信要解決,下面給出詳細步驟: 第一步:檢查虛擬機適配器模式:橋接模式 第二步:登入虛擬機修改IP cd /etc/sysconfig/network-scripts vim ifcfg-enpgs3 沒有vim的安裝或者用vi代替:sudo dnf …

關于consul的下載方法

linux下 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install consulwindow下 https://developer.hashicorp.com/consul/downloads 然后把里面的exe文件放在gopath下就行了 驗證…

打造專屬花店展示小程序

在當今社會,微信小程序已經成為了各行各業拓展客戶資源的利器,而花店行業也不例外。通過打造一個獨特的花店小程序,你可以為你的花店帶來更多的曝光和客戶資源。那么,如何制作一個專屬的花店小程序呢?下面我們就來一步…

圖像像素梯度

梯度 在高數中,梯度是一個向量,是有方向有大小。假設一二元函數f(x,y),在某點的梯度有: 結果為: 即方向導數。梯度的方向是函數變化最快的方向,沿著梯度的方向容易找到最大值。 圖像梯度 在一幅模糊圖…

電子商務類網站需要什么配置的服務器?

隨著電子商務的迅猛發展,越來越多的企業和創業者選擇在互聯網上開設自己的電商網站。為了確保電商網站能夠高效運行,給用戶提供良好的體驗,選擇合適的服務器配置至關重要。今天飛飛將和你分享電子商務類網站所需的服務器配置,希望…

【實際開發19】- 壓測 / 調優準備

目錄 1. Jmeter 2. Jmeter 環境部署 1. 配置 : 臨時修改語言 ~ Options → Choose Language → Chinese 3. Jmeter 并發測試 0. 提示 : Postman 測試是“串行”的 , 無法測試并發請求 1. daiding 1. Jmeter 下載 : Apache JMeter - Download Apache JMeter 詳參&#xf…

Mac下編譯32位Qt

不建議,MAC新版不支持32位程序!!! Mac下編譯32位Qt 關于Mac10.11.4下編譯32bit Qt5.6.1的問題

【已解決】mac端 sourceTree 解決remote: HTTP Basic: Access denied報錯

又是在一次使用sourcetree拉取或者提交代碼時候,遇到了sourcetree報錯; 排查了一會,比如查看了SSH keys是否有問題、是否與sourcetree賬戶狀態有問題等等,最終才發現并解決問題 原因: 因為之前公司要求企業gitlab中…

【Java】異常處理 之 使用SLF4J 和 Logback

使用SLF4J和Logback 前面介紹了Commons Logging 和Log4j 這一對好基友,它們一個負責充當日志 API,一個負責實現日志底層,搭配使用非常便于開發。 有的童鞋可能還聽說過SLF4J和Logback。這兩個東東看上去也像日志,它們又是啥&…

JavaEE初階:多線程 - 編程

1.認識線程 我們在之前認識了什么是多進程,今天我們來了解線程。 一個線程就是一個 "執行流". 每個線程之間都可以按照順訊執行自己的代碼. 多個線程之間 "同時" 執行 著多份代碼. 引入進程這個概念,主要是為了解決并發編程這樣的…

編譯工具:CMake(三)| 最簡單的實例升級

編譯工具:CMake(三)| 最簡單的實例升級 前言過程語法解釋ADD_SUBDIRECTORY 指令 如何安裝目標文件的安裝普通文件的安裝:非目標文件的可執行程序安裝(比如腳本之類)目錄的安裝 修改 Helloworld 支持安裝測試 前言 本篇博客的任務…

utf-8和utf-8 mb4區別

UTF-8(Unicode Transformation Format-8)和UTF-8MB4(UTF-8 Multibyte 4-byte)是字符編碼方案,用于表示 Unicode 字符集中的字符。它們之間的主要區別在于編碼范圍。 UTF-8:UTF-8 是一種變長編碼方式&#x…

可視化繪圖技巧100篇進階篇(七)-三維堆積柱形圖(3D Stacked Bar Chart)

目錄 前言 適用場景 圖例 繪圖工具及代碼實現 HighCharts echarts MATLAB

學習Vue:安裝Vue.js和設置開發環境

當您決定進入現代前端開發的世界,Vue.js 無疑是一個令人激動的選擇。它以其簡潔、靈活和高效的特點在開發者社區中備受贊譽。本文將為您詳細介紹如何安裝 Vue.js 并設置開發環境,讓您能夠迅速開始編寫 Vue 應用程序。 步驟1:安裝 Node.js 和 …

解決右鍵打印html只能識別1頁的問題

hello,大家好久不見,昨天在開發中遇到了一個問題,就是在自己開發的網頁中右鍵-->打印,由于頁面內容過多,打印出來的內容只被識別到一頁。 針對這一問題,查閱了好多資料最終解決啦。 1.問題重現 大家可以看到這個是我們開發的頁面,公司需要…

CentOS系統環境搭建(六)——使用docker-compose安裝redis

centos系統環境搭建專欄🔗點擊跳轉 關于Docker-compose安裝請看CentOS系統環境搭建(三)——Centos7安裝Docker&Docker Compose,該文章同樣收錄于centos系統環境搭建專欄。 Docker-compose安裝redis 文章目錄 Docker-compose安…

2023最新最全最細版本~ESP8266/ESP01S燒錄AT固件

硬件準備 圖上有兩種型號的模塊均可刷寫AT固件 ① ESP01S ② ESP8266NODEMCU 軟件準備(私聊免費分享) ESP01S1燒錄方式 如圖使用模塊燒錄座的方式~ 模塊插入燒錄座后直接連接電腦的USB接口即可~ ESP8266NODEMCU燒錄方式 如圖usb直接連接的方式~ 一端接模塊的USB口&…

數據暴漲時代,該如何數據治理?_光點科技

隨著信息技術的迅猛發展,數據已經成為現代社會的核心資源。在這個被稱為"數據暴漲時代"的時代里,大量的數據源源不斷地被產生和積累,但如何有效地管理、分析和利用這些數據成為了一個迫切需要解決的問題。數據治理,作為…

【Spring源碼】Spring擴展點及順序

Spring擴展點及順序 01-調用BeanFactoryPostProcessor的構造器 02-調用了BeanFactoryPostProcessor的postProcessBeanFactory 03-調用了BeanPostProcessor構造器 04-調用InstantiationAwareBeanPostProcessor構造方法 05-調用了InstantiationAwareBeanPostProcessor接口的Befo…