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

          GP-GPU 閱讀筆記 (2)

          Posted on 2008-02-08 16:05 ZelluX 閱讀(523) 評論(0)  編輯  收藏 所屬分類: Laboratory
          2.4 GPU Program Flow Control
           最新的GPU支持多種形式的分支,但是由于它們的高度并行化的本質,使用這些分支的時候一定要注意。
          2.4.1 Hardware Machanisms for Flow Control
           三種主要實現:
           Predication 并非真正的data-dependent branch
           MIMD branching 
           SIMD branching  同時進行的指令唯一,即各個點的分支選擇應該一致
          2.4.2 Moving Branching Up The Pipeline
          2.4.2.1 Static Branch Resolution
           靜態分析,避免循環內部的分支。這里舉了一個在離散空間點格(discrete spatial grid)上解偏微分方程的例子,不過沒怎么看懂,大致是把循環拆成兩部分的做法。
          2.4.2.2 Pre-computation
           有時候一段時間內或者幾次循環中某個分支的結果會是一個常數。這時候就只要在知道結果會改變的時候重新計算即可。
          2.4.2.3 Z-Cull
           現代GPU有一系列用于避免處理不會被看到的像素的技術,其中之一就是Z-cull。簡單的說Z-cull把沒有通過深度測試(Z軸覆蓋)點直接放棄。在流體模擬中,把land-locked障礙單元的Z深度標記為0,即可跳過這些點的計算。
          2.4.2.4 Data-Dependent Looping With Occlusion Queries
           同樣是避免處理不可見的點的技術
           
          3 Programming Systems
           GPU的架構發展非常迅速,使得profiling和tuning需要由GPU生產商解決。
          3.1 High-level Shading Languages
           Cg, HLSL  和底層硬件很接近
           OpenGL Shading Language  有一些不直接映射到硬件的特性,比如整數支持
           Sh, Ashli, ...
          3.2 GPGPU Languages and Libraries
           上面提到的幾個語言在使用時都要求編程人員站在幾何元素的視角寫代碼。下面的幾個系統試著把一些GPGPU功能抽象出來,隱藏底層的GPU實現。
           Brook  前幾星期打過交道的東東
           Scout, Glift  都沒聽說過。。。
          3.3 Debugging Tools
           GPU的調試功能很受局限。它必須提供在某一時刻顯示多個點的調試信息的功能。一種printf-style的方法是把他們直接顯示在屏幕上(汗,如果是GPGPU編程豈不是花屏了 >,<)。
          主站蜘蛛池模板: 华阴市| 安泽县| 台南县| 松潘县| 贵定县| 长汀县| 色达县| 墨脱县| 如皋市| 怀宁县| 上思县| 陆川县| 铜梁县| 湘乡市| 张家界市| 连州市| 连云港市| 东宁县| 耿马| 德保县| 乌兰察布市| 长宁区| 柞水县| 望城县| 闽侯县| 伽师县| 双城市| 陇南市| 乌拉特中旗| 蓬溪县| 通道| 洪泽县| 汝南县| 黄石市| 化州市| 沙洋县| 邵东县| 阳谷县| 泉州市| 行唐县| 葵青区|