星期二, 2月 10, 2009

CUDA

2009/2/10(二) 晴

一間叫 CoreCodec的公司利用 CUDA 開發的 H.264 decoder ,不同於FFmpeg 使用 GPGPU 的資源去Decode。

第四堂課 CUDA 程式開發- 執行緒優化 (446.1 MB) 試聽心得 花費時間: 1:26:00
  • Thread - 每個Thread都會去跑 Kernel Code , Kernel Code(共用的) 是甚麼? 應該是前幾節有提到.
    這部份聽起來是每個Thread都要浪費的。
  • Thread ID - 每個Thread有ID,會去存取自己的 memory. 跑Code.
  • sm * sp = total thread ( SM > Block(每個block是有限制thread數) > SP ).
  • block 及 2D 觀念. 聽起來是正方矩陣,影片中沒人問,到時再問老師看看為啥要正方為啥要矩陣多維(2D/3D)而不用序列。(後段有講到,因流體、影像所要使用的資料為矩陣資料)應該是要搭配資料結構所衍伸的。
  • 同一個block 才能作 barrier sync , 每張顯卡能同時作block 的數量不同,為了跨不同效能的GPU 平台。
  • thread的Code 放進sm , sm 再分進 sp 這個動作誰做的? compiler?
  • n block assigment to sm ?誰做?
  • scheduling
    • 有score board 去選擇要做的 block. HW在做
    • 優先度?

  • G80 下 , dram access time 約要200ms.
  • Warp 的定義其實跟 Pipeline datapath 是相對的。warp 不知怎麼規劃?
  • G80下:shared memory 16kB, Thread互相是無法看到的 16k/block num = 每個
    dynamic partition. 故要多用mem, 就只能少block.
  • warp(32倍數) 跟block size , sm / sp 的分配 四者若分配不良,直接影響到performance.
  • warp 中 critical path 可能存在於memory access.
  • runtime library:
    • common component: sin, cos, pow, sqrt...
    • host component: data transfer/Memory managemen/Error handling.
    • device component: gpu math function.
  • dim3: buildin variable ( C structture ). just predefine data types. (機車勒後面都英文對談, 那個學生問的問題,聽的有點吃力).
  • 2 special function unit. (sfu). pipeline. hw sin/cos cal.
  • syncthread 要注意,全部都要sync 的問題,不然會有deadlock.
  • const var memory有 64k, cache 8k

Reference:

  • SPMD /SIMD

沒有留言: