亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談GPU的存儲結構

        2009-06-18 04:42:10
        新媒體研究 2009年16期
        關鍵詞:內存處理器編程

        王 欣 王 寧

        [摘要]簡要介紹GPU的存儲結構,它是基于GPU的CUDA編程的前提和基礎。

        [關鍵詞]GPGPUGPUCUDA

        中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0820030-01

        一、引言

        現(xiàn)代的顯示芯片已經具有高度的可程序化能力,由于顯示芯片通常具有相當高的內存帶寬,以及大量的執(zhí)行單元,因此開始有利用顯示芯片來幫助進行一些計算工作的想法,即GPGPU(General-Purpose Compution on Graphics Processing Units)。CUDA即是NVIDIA的GPGPU模型。

        二、GPU簡介

        作為圖形處理芯片市場的領先者,NVIDIA公司在GPGPU領域投入大量研究力量,并于2006年底成功推出支持通用計算的G80架構圖形處理器芯片[1],在市場上大獲成功。在此基礎上,NVIDIA公司于2007年和2008年陸續(xù)推出G92、GT200架構。憑借CUDA并行編程平臺良好的用戶接受度,GT系列架構的圖形處理器逐漸在高性能計算領域占有一席之地。

        與Intel和AMD(ATI)不同,NVIDIA傾向于采用標量處理單元來實現(xiàn)向量計算。在GT系列架構的圖形處理器芯片中,多個簡單的標量流處理器核心組合在一起形成流式多核處理器。多個流處理器核心執(zhí)行相同指令時構成SIMD,從而較好支持向量計算。流處理器陣列由多個流式多核處理器組成,且多核處理器數目具有可擴展性。

        三、GPU的存儲結構

        所有目前支持CUDA的NVIDIA顯示芯片,其shader部份都是由多個multiprocessors組成。每個multiprocessor里包含了八個stream process

        ors,其組成是四個一組,也就是說實際上可以看成是有兩組4D的SIMD處理器。此外,每個multiprocessor還具有8192個寄存器,16KB的share memory,以及texture cache和constant cache。

        (一)GPU的執(zhí)行過程。在執(zhí)行CUDA程序的時候,每個stream processor對應一個thread。每個multiprocessor則對應一個block。但是thread卻可以遠超sp的數目。

        實際上,雖然一個mp只有八個sp,但是由于stream processor進行各種運算都有l(wèi)atency,更不用提內存存取的latency,因此CUDA在執(zhí)行程序的時候,是以warp為單位。目前的CUDA裝置,一個warp里面有32個threads,分成兩組16 threads 的 half-warp。由于stream processor的運算至少有4 cycles的latency,因此對一個4D的stream processors來說,一次至少執(zhí)行16個threads(即half-warp)才能有效隱藏各種運算的latency。

        (二)Shared Memory。目前CUDA裝置中,每個multiprocessor有16KB的shared memory。Shared memory分成16個bank(存儲體)。如果同時每個thread是存取不同的bank,就不會產生任何問題,存取shared memory的速度和存取寄存器相同。不過,如果同時有兩個(或更多個)threads存取同一個bank的數據,就會發(fā)生bank conflict[2],這些threads就必須照順序去存取,而無法同時存取shared memory了。

        Shared memory是以4 bytes為單位分成banks。因此,假設以下的數據:

        那么,data[0]是bank 0、data[1]是bank 1、data[2]是bank 2、…、data[15]是bank 15,而data[16]又回到bank 0。由于warp在執(zhí)行時是以half-warp的方式執(zhí)行,因此分屬于不同的halfwarp的threads,不會造成bank conflict。

        因此,如果程序在存取shared memory的時候,使用以下的方式:

        int number=data[base+tid];

        那就不會有任何bank conflict,可以達到最高的效率。但是,如果是以下的方式:

        int number=data[base+4*tid];

        那么,thread 0和thread 4就會存取到同一個bank,thread 1和thread 5也是同樣,這樣就會造成bank conflict。

        (三)Global Memory。由于multiprocessor對global memory存取的latency非常的長,所以為了提高效率,global memory的存取,需要"coalesced"。所謂的coalesced,是表示讀取除了連續(xù)之外,而且它開始的地址,必須是每個thread所存取的大小的16倍。例如,如果每個thread都讀取32bits的數據,那么第一個thread讀取的地址,必須是16*4=64bytes的倍數。

        在目前的CUDA 2.0裝置中,每個thread一次讀取的內存數據量,可以是32 bits、64 bits、或128 bits。不過,32 bits的效率是最好的。64 bits的效率會稍差,而一次讀取128 bits的效率則比一次讀取32 bits要顯著來得低(但仍比non-coalesced的存取要好)。

        (四)Texture。CUDA支持texture。在CUDA的kernel程序中,可以利用顯示芯片的texture單元,讀取texture的數據。使用texture和global memory最大的差別在于texture只能讀取,不能寫入,而且顯示芯片上有一定大小的texture cache。因此,讀取texture的時候,不需要符合coalesced的規(guī)則,也可以達到不錯的效率。此外,讀取texture時,也可以利用顯示芯片中的texture filtering功能(例如bilinear filtering),也可以快速轉換數據型態(tài),例如可以直接將32 bits RGBA的數據轉換成四個32 bits浮點數。

        顯示芯片上的texture cache是針對一般繪圖應用所設計,因此它仍最適合有區(qū)塊性質的存取動作,而非隨機的存取。因此,同一個warp中的各個thread最好是讀取地址相近的數據,才能達到最高的效率。

        對于已經能符合coalesced規(guī)則的數據,使用global memory通常會比使用texture要來得快。

        四、總結

        GPU是未來眾核技術發(fā)展的方向之一,在并行化計算領域具有廣闊的前景。本文總結了GPU的存儲結構,以及相關的注意事項,它是CUDA編程的基礎,對理解GPU的硬件結構也十分重要。

        參考文獻:

        [1]Eric Lindholm,John Nickolls,etc.NVIDIA Tesla:A Unified Graphics And Computing Architecture,IEEE Micro,v.28 n.2,pp.39-55,Mar/Apr.2008.

        [2]CUDA Programming Guide 2.0,NVIDI [C].2008.http://developer.

        Download.nvidia.com/compute/cuda/2_0/docs/NVIDIA_CUDA_Programming_Guide_2.0.pdf.

        作者簡介:

        王欣(1975-),女,河北人,碩士,講師,研究方向:計算機網絡。

        猜你喜歡
        內存處理器編程
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        “春夏秋冬”的內存
        當代陜西(2019年13期)2019-08-20 03:54:22
        Imagination的ClearCallTM VoIP應用現(xiàn)可支持Cavium的OCTEON? Ⅲ多核處理器
        ADI推出新一代SigmaDSP處理器
        汽車零部件(2014年1期)2014-09-21 11:41:11
        呼嚕處理器
        小青蛙報(2014年1期)2014-03-21 21:29:39
        基于內存的地理信息訪問技術
        上網本為什么只有1GB?
        精品国产青草久久久久福利| 色婷婷一区二区三区77| 少妇下面好紧好多水真爽| 又粗又黑又大的吊av| 久久久国产一区二区三区四区小说| 久久精品亚洲精品毛片| 最新日本女优中文字幕视频| 亚洲va久久久噜噜噜久久天堂| 一本一道久久a久久精品综合| 国产精品午夜波多野结衣性色| 亚洲av熟女天堂久久天堂| 久久久亚洲欧洲日产国码二区| 中文字幕无码av激情不卡| 在线观看精品国产福利片87| 精品人妻在线一区二区三区在线| 色一情一乱一伦麻豆| 国产黄a三级三级三级av在线看| 无码流畅无码福利午夜| 亚洲日本一区二区三区四区| 成人综合网站| 亚洲中文av一区二区三区| 国产麻豆国精精品久久毛片| 人妻丰满熟av无码区hd| 内射后入在线观看一区| 国产免费人成视频在线观看播放 | 欧美性猛交xxx嘿人猛交| 海角国精产品一区一区三区糖心 | 国产亚洲91精品色在线| 凹凸在线无码免费视频| 国产九色AV刺激露脸对白| 国产精品又爽又粗又猛又黄| 国产综合精品一区二区三区| 狠狠噜天天噜日日噜| 亚洲春色视频在线观看| 激情综合婷婷色五月蜜桃| 236宅宅理论片免费| 久久91精品国产91久久麻豆| 亚洲一区二区三区特色视频| 秋霞午夜无码鲁丝片午夜精品| 国产伦码精品一区二区| 中文字幕亚洲视频一区|