日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GPU(CUDA)学习日记(十三)------ CUDA内存简介

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GPU(CUDA)学习日记(十三)------ CUDA内存简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GPU(CUDA)學習日記(十三)------ CUDA內存簡介

標簽: cuda存儲線程結構 2902人閱讀 評論(0)收藏 舉報 分類: GPU(16) CUDA(16) 寄存器 寄存器是GPU片上高速緩存, 執行單元可以以極低的延遲訪問寄存器。寄存器的基本單元式寄存器文件,每個寄存器文件大小為32bit。局部存儲器對于每個線程,局部存儲器也是私有的。如果寄存器被消耗完。數據將被存儲在局部存儲器中。如果每個線程使用了過多的寄存器,或聲明了大型結構體或數據,或者編譯器無法確定數據的大小,線程的私有數據就有可能被分配到local memory中,一個線程的輸入和中間變量將被保存在寄存器或者是局部存儲器中。局部存儲器中的數據被保存在顯存中,而不是片上的寄存器或者緩存中,因此對local memory的訪問速度很慢。
共享存儲器 共享存儲器(share memeory)也是GPU片內緩存存儲器。它是一塊可以被同一block中的所有線程訪問的可讀存儲器。使用關鍵字share添加到變量的聲明中,這將使這個變量駐留在共享內存中。cuda c編譯器對共享內存中的變量與普通變量將采取不同的處理方式。對于在GPU上啟動的每個線程塊,cuda c編譯器都將創建該變量的一個副本,線程塊中的每一個線程都共享這塊內存,但這個線程卻無法看到也不能修改其他線程塊的變量的副本。這就實現了一種非常好的方式,使得一個線程塊中的多個線程能夠在計算上進行通信和協作,而且,共享內存緩沖區駐留在物理GPU上,而不是駐留在GPU之外的系統內存中。
常量內存 __constant__將把變量的訪問限制為只讀。在接受了這種限制之后,我們希望得到某種回報,與全局內存中讀數據相比,從常量內存中讀取相同的數據可以節約內存的帶寬,主要有兩個原因: -對常量內存的單次讀操作可以廣播到其他的“領進”線程,這將節約15次讀取操作。 -常量內存的數據緩存起來,因此對相同地址的連續讀取操作將不會產生額外的內存通信量。 “鄰近”是指半個warp中的線程。當處理常量內存時。nvidia硬件將把單次內存讀取操作廣播到每個半線程束。在半線程束中包含了16個線程,即線程束中數量的一半。如果在半線程束中的每一個線程訪問相同的常量內存地址。那么GPU只會發生一次讀操作事件并在隨后將數據廣播到每個線程。如果從常量內存中讀取大量的數據,那么這種方式產生的內存流量只是全局內存時的1/16.然而,當使用常量內存時也可能產生負面影響。如果半線程束的所有16個線程需要訪問常量內存中不同的數據,那么這個16次讀取操作會被串行化,從而需要16倍的時間來發出請求。但如果從全局內存中讀取,那么這些請求會同時發出。在這種情況下,從常量內存讀取就慢于從全局內存中讀取。
全局存儲器 全局存儲器(global memeory)位于顯存(占據了大部分的顯存),GPU, CPU, 都可以進行讀取訪問嗎。整個網格中的任意線程都能讀寫全局存儲器的任意位置。在目前的架構中,全局存儲器沒有緩存。

總結

以上是生活随笔為你收集整理的GPU(CUDA)学习日记(十三)------ CUDA内存简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。