nVIDIA 發表 CUDA 4.0

Heresy 看到的消息來源是 AnandTech 的《NVIDIA Announces CUDA 4.0》一文,而在 nVIDIA CUDA 官方頁面上,也有提到 CUDA 4.0 RC 版已經開放給註冊的會員了∼不過實際上,就算是註冊的使用者,目前應該也還沒有真正的檔案、也還沒有相關的文件;官方是說會再 3/4 時放出來、讓開發者可以下載。所以,下面的介紹,基本上主要就是參考 AnandTech 的資料了∼

基本上以 CUDA 的主板號變化來說,CUDA 1.0 是對應到 G80/G90 這系列的顯示晶片,CUDA 2.0 則是對應到 GT200,而 CUDA 3.0 則是對應 Fermi/GF100 而誕生的;但是這一代的 CUDA 4.0,則沒有對應到新的顯示晶片,而是單純的軟體更新。

根據文章內容,CUDA 4.0 主要的更新有:

  • 更簡單的平行化程式移植
    • 在不同的執行緒中共享 GPU
    • 使用單一執行續操作多個 GPU
    • No-copying pinning of system memory
    • 新的 CUDA C/C 功能
    • Thrust templated 基礎函式庫
    • NPP 影像/視訊處理函式庫
    • 多層材質(layered textures)
  • 更快的多 GPU 程式編寫
    • Unified Virtual Addressing(統一虛擬定址)
    • nVIDIA GPUDirect 2.0
      • Peer-to-peer Access
      • Peer-to-peer Transfers
      • GPU-accelerated MPI
  • 開發工具的加強與新增
    • 自動效能分析
    • C debugging
    • GPU binary disassembler
    • MacOS 版的 cuda-gdb

基本上,CUDA 4.0 主要是在強化多 GPU 的效能以及程式開發。其中一項很重要的,就是所謂的「統一虛擬定址」(Unified Virtual Addressing,以下縮寫 UVA)。以往的 CUDA 程式,對於系統記憶體、以及不同顯示卡上的記憶體,都有不同的記憶體定址空間,而透過 UVA 這項新功能,他會把這些不同、獨立的記憶體,都透過一個虛擬的位址來做定址,如此一來在記憶體的操作上,會變得更加地單純、簡單。

另外,nVIDIA 也推出了新一代的 GPUDirect 2.0 技術,透過這項技術,可以加強不同顯示卡之間的溝通。以往要讓一張顯示卡可以複製另一張顯示卡上的資料時,必須要先把這資料複製到系統記憶體裡,在複製到第二張卡上;而透過 peer-to-peer 的技術,則可以不用經過系統記憶體,直接把資料由一張卡、透過 PCI-Express 傳輸到另一張卡上。

而為了簡化程式的開發難度,nVIDIA 也引進了 Thrust 這個類似 C STL 的 template 函式庫:Thrust(網頁)。透過這個函式庫,程式開發者可以以 C STL 的形式,來寫 nVIDA CUDA 的程式,算是相當方便的∼

此外,nVIDIA 也持續地在加強 CUDA C/C 語法上的功能。像是 virtual function、new/delete 這種動態分配記憶體的功能,也會在 CUDA 4.0 裡出現。或許有一天,CUDA C 的功能會和標準 C 一樣完整吧∼

最後,目前 Heresy 自己還沒有看到 nVIDIA 官方針對 CUDA 4.0 的文件,所以其實很多也不知道細節;要等比較詳細的資料,大概還是要等到 3/4 了∼

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *