央視網|中國網絡電視臺|網站地圖
客服設為首頁
登錄

中國網絡電視臺 > 新聞臺 > 新聞中心 >

不僅是遊戲 談Fermi架構下通用計算的優化

發佈時間:2012年02月13日 12:41 | 進入復興論壇 | 來源:pconline | 手機看視頻


評分
意見反饋 意見反饋 頂 踩 收藏 收藏
channelId 1 1 1
壟!-- /8962/web_cntv/dicengye_huazhonghua01 -->

更多 今日話題

壟!-- /8962/web_cntv/dicengye_huazhonghua02 -->

更多 24小時排行榜

壟!-- /8962/web_cntv/dicengye_huazhonghua03 -->

  CUDA是NVIDIA的GPU通用運算技術,它運算速度高效精煉而著稱。而X86則在通用領域有著天然的優勢,即具備最廣泛的軟體應用支持。相信,至今沒有一個指令級體系可以擁有如此廣泛的軟資源。CUDA要做到如此兼容,並非簡單CUDA-x86編譯器可以解決。

  不過廣泛的支持是要付出一定的代價。因此每一代新的x86處理器設計時都需要兼容前一代處理器的指令。所以導致x86臃腫的架構。同時,你可以發現,同樣的應用可以不加修改地在新x86處理器上得道更高效的運行。


四塊Tesla組成

  相對於通用架構的CUDA體系,在代碼編寫方面是一種更加接近硬體的語言,因此如果要在新CUDA硬體上更加高效實現以往應用,則需要在指令應用到新的技術。在x86硬體方面,在此10年幾乎沒有革命性的變化,相對而言G80自從發佈以來,CUDA硬體擁有了多次不為用戶所知的重要變化。

  首次是最原始的G80架構,代表的産品是8800GTX。緊跟的是GT200核心的變革,最後也是最新的CUDA硬體Fermi的到來。

流處理器越多實時線程越多

  CUDA硬體區別一般的多核處理器,其最大不同是擁有更多的運算單元。舉例説,一般的4核處理器只擁有4個物理處理器核心。而一款GTX480卻擁有480個流處理器,而GTX580更具備512個CUDA核心之多。

  因此,高效的應用需要程序中建立足夠多的線程讓GPU充分地工作。當然,一般較為簡單的做法是為不同的核心創建不同的代碼,讓其執行的時候去識別不同設備ID來調用不同的內核代碼。

  當然,更為高效的做法是編寫一個具備自適應核心數量的代碼。此方法不但可以具備良好的兼容性,同時更可以不加修改地適用於往後的新硬體。

  在流處理器架構上,每一代産品都有不同的變化。首次採用此命名是因為該單元具備通用執行的能力。即該單元可以同時執行整型和浮點指令。在G80芯片上,SPs單元具備全速的單精度浮點運算以及24位整型指令。而在Fermi的CUDA核心裏面,便可以同時執行全速的單精度以及32位整型運算。


Block中的線程映射

  註釋:在CUDA中所説的shared memory並非直接的翻譯為共享內存,它是由於高速晶體管組成的高速內存,速度和寄存器高速緩存一致,並且對程序員不透明。而且shared memory和代碼中的指令同名,因此一般不作翻譯。

  新存儲體系的應用優化

  存儲體系是變化是GPU向CPU靠攏的一個標誌,第一代的G80的存儲體系和GT200體系都是寄存器、shared memory和DRAM(顯存)架構。因此,一般高級應用需要到高速緩存來提速的時候,通常需要shared memory代替或者用只讀的紋理緩存代替。由於硬體的限制,此前兩代對於一些通用算法實現的效率受制在高速緩存上。

熱詞:

  • Fermi
  • Tesla
  • 核處理器
  • 通用計算
  • 顯存
  • 處理器核心
  • shared
  • memory
  • GPU
  • 線程
  • 搜索更多Fermi Tesla 的新聞