posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          GP-GPU 閱讀筆記 (1)

          Posted on 2008-02-07 16:31 ZelluX 閱讀(776) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Laboratory
          實(shí)驗(yàn)室的寒假任務(wù) =_=
          No.1
          A Survey of General-Purpose Computation on Graphics Hardware
          on EUROGRAPHICS 2005

          1. Why GP-GPU?
          1.1 Powerful and Inexpensive
          高內(nèi)存帶寬:Nvidia GeForce 6800 Ultra - 35.2GB/sec
          強(qiáng)大的計(jì)算能力:ATI X800 XT - 63GFLOPS, Intel Pentium4 SSE unit(3.7GHz) - 14.8GFLOPS
          尖端處理科技的應(yīng)用:最新公布(指該survey發(fā)布的時(shí)間)的GPU包含三億個(gè)晶體管,由0.011微米技術(shù)制作
          快速發(fā)展:GeForce 6800的throughput為5900的兩倍。通常GPU的計(jì)算能力平均每年增長(zhǎng)速度為1.7x(pixels/second)和2.3x(vertices/second),而根據(jù)摩爾定律,CPU的對(duì)應(yīng)數(shù)值大概為每年1.4x。粗略的說(shuō),GPU性能每六個(gè)月增長(zhǎng)一倍。

          1.2 Flexible and Programmable

          1.3 Limitations and Difficulties
          GPU的強(qiáng)大計(jì)算性能是建立在它高度針對(duì)的架構(gòu)上的,因此很多應(yīng)用都不適合放到GPU上做。比如文字處理,主要包括內(nèi)存通信,而且很難并行化。
          如今的GPU也缺少一些基本的計(jì)算功能,比如整數(shù)運(yùn)算。而且很多只支持32位浮點(diǎn)數(shù)(貌似最近的R670指令集可以處理double類(lèi)型了),這樣導(dǎo)致很多科學(xué)計(jì)算都沒(méi)法在GPU上做。
          另外即使對(duì)于適合GPU這些特性的問(wèn)題,真正使用GPU做時(shí)也有不少問(wèn)題。GPU的編程模型很不一樣,高效的GPU編程不僅僅是說(shuō)多學(xué)一門(mén)高級(jí)語(yǔ)言。如今要借助GPU的計(jì)算能力,需要編程人員同時(shí)掌握相應(yīng)的科學(xué)計(jì)算知識(shí)和計(jì)算機(jī)圖形學(xué)知識(shí)。盡管如此,GPU對(duì)性能提升的幫助還是很誘人的。

          1.4 GPGPU Today
          http://gpgpu.org
          一些GPGPU的應(yīng)用包括
          Dense and sparse matrix multiplication  計(jì)算領(lǐng)域
          Multigrid and conjugate-gradient solves for systems partial differential equations   計(jì)算領(lǐng)域
          Ray tracing   圖像處理
          Photon mapping   圖像處理
          Fluid mechanics solvers   物理模擬
          Datamining operations   數(shù)據(jù)庫(kù)/數(shù)據(jù)挖掘

          2. Overview of Programmable Graphics Hardware
          2.1 Overview of the Graphics Pipeline
          當(dāng)今的GPU都采用了稱為graphics pipeline的架構(gòu)。pipeline被分成不同的stage,硬件上每個(gè)stage都被放到task-parallel machine organization上實(shí)現(xiàn)。

          2.2 Programmable Hardware
          顯卡商們把固定功能的pipeline轉(zhuǎn)化成了一個(gè)更靈活的可編程的pipeliine。主要在geometry stage和fragment stage。原來(lái)的固定的操作被用戶定義的vertex program和fragment program代替
          通常來(lái)說(shuō),這些可編程階段讀入一組含有限數(shù)量的 有4個(gè)32位浮點(diǎn)的向量 數(shù)組并輸出一組含有限數(shù)量的4*32浮點(diǎn)向量的數(shù)組。每個(gè)可編程階段都可以訪問(wèn)常數(shù)寄存器,也可以讀寫(xiě)對(duì)應(yīng)的寄存器。

          2.3 Introduction to the GPU Programming Model
          典型的GPGPU程序都使用了fragment processor作為計(jì)算引擎。通常的結(jié)構(gòu)為:
          a. 程序員確定該應(yīng)用的并行部分。應(yīng)用程序被分成幾個(gè)獨(dú)立的可并行段,每段都被看成是一個(gè)kernel,被當(dāng)成fragment program實(shí)現(xiàn)。每個(gè)kernel的輸入輸出都是一個(gè)或多個(gè)數(shù)據(jù)數(shù)組,以texture形式保存在GPU內(nèi)存中。用流相關(guān)的術(shù)語(yǔ)表述的話,這些在texture中的數(shù)據(jù)組成了stream,每個(gè)stream上的元素都要被kernel分別處理。
          b. 調(diào)用kernel前要先確定計(jì)算范圍,程序員可以傳遞點(diǎn)的數(shù)據(jù)給GPU。注意GPU在處理一維數(shù)組時(shí)性能有所局限。
          c. rasterizer為每個(gè)像素生成一個(gè)fragment。
          d. 每個(gè)fragment被同一個(gè)活動(dòng)的kernel程序處理。fragment程序可以讀入任意的全局內(nèi)存,但只能寫(xiě)到rasterizer決定的frame buffer中。這塊還沒(méi)怎么搞懂
          e. 每個(gè)fragment的輸出是一個(gè)值或者向量值,可以作為作中的程序結(jié)果,也可以保存為一個(gè)texture,用于后面的計(jì)算,復(fù)雜的應(yīng)用通常需要多個(gè)pipeline之間的傳遞(multipass)

          評(píng)論

          # re: GP-GPU 閱讀筆記 (1)  回復(fù)  更多評(píng)論   

          2008-02-07 23:52 by sherry
          估計(jì)你能想象我看這個(gè)文章的表情,只看了看篇幅而已,不懂
          主站蜘蛛池模板: 山西省| 林甸县| 苍溪县| 武川县| 凌云县| 那坡县| 胶南市| 炉霍县| 吉首市| 阿拉善左旗| 报价| 上蔡县| 洪湖市| 桂东县| 巫山县| 建昌县| 柏乡县| 博白县| 武功县| 麻城市| 福清市| 密云县| 美姑县| 吉水县| 疏附县| 大渡口区| 璧山县| 滨海县| 彝良县| 怀远县| 永川市| 定安县| 黄山市| 南木林县| 年辖:市辖区| 九台市| 白山市| 光山县| 雷波县| 师宗县| 凤冈县|