posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          GP-GPU 閱讀筆記 (1)

          Posted on 2008-02-07 16:31 ZelluX 閱讀(767) 評論(1)  編輯  收藏 所屬分類: Laboratory
          實驗室的寒假任務 =_=
          No.1
          A Survey of General-Purpose Computation on Graphics Hardware
          on EUROGRAPHICS 2005

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

          1.2 Flexible and Programmable

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

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

          2. Overview of Programmable Graphics Hardware
          2.1 Overview of the Graphics Pipeline
          當今的GPU都采用了稱為graphics pipeline的架構。pipeline被分成不同的stage,硬件上每個stage都被放到task-parallel machine organization上實現。

          2.2 Programmable Hardware
          顯卡商們把固定功能的pipeline轉化成了一個更靈活的可編程的pipeliine。主要在geometry stage和fragment stage。原來的固定的操作被用戶定義的vertex program和fragment program代替
          通常來說,這些可編程階段讀入一組含有限數量的 有4個32位浮點的向量 數組并輸出一組含有限數量的4*32浮點向量的數組。每個可編程階段都可以訪問常數寄存器,也可以讀寫對應的寄存器。

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

          評論

          # re: GP-GPU 閱讀筆記 (1)  回復  更多評論   

          2008-02-07 23:52 by sherry
          估計你能想象我看這個文章的表情,只看了看篇幅而已,不懂
          主站蜘蛛池模板: 建湖县| 休宁县| 宁明县| 泰宁县| 康马县| 思茅市| 政和县| 集安市| 彩票| 梅州市| 锡林郭勒盟| 泸州市| 竹溪县| 伊川县| 松原市| 称多县| 临海市| 宜良县| 镶黄旗| 诏安县| 麻栗坡县| 永和县| 隆安县| 梁河县| 石河子市| 长岭县| 农安县| 永定县| 湖口县| 桐城市| 南阳市| 临武县| 临清市| 永定县| 常熟市| 南宫市| 沅江市| 青冈县| 泸西县| 山东省| 安西县|