新的 CUDA 編譯器即將出爐!PGI Accelerator Compilers!


這是前幾天的新聞了~官方的新聞稿有兩篇:

重點就是,Portland Group 在新版的 PGI 編譯器(Fortran 和 C 語言用)裡,將支援 nVidia CUDA 的 GPU 加速!而目前 x64 Linux 版應該已經可以先透過「PGI Accelerator Compiler Extended Preview Program」來體驗了。

它將會以它自家的「PGI Accelerator™ programming model」來簡化 GPU 程式的開發,不過看來應該是目前針對 64bit 的 Linux 系統就是了。

最重要的是,在這個 model 下,只要透過 PGI 定義的 directive,就可以類似 OpenMP 的方式,快速地將程式的 for 迴圈用 GPU 來執行!這點真的是大幅地減低了 GPGPU 程式的開發了!雖然 CUDA 已經比用 OpenGL 來做 GPGPU 好寫了,但是 Heresy 還是覺得要管的東西還是太多了…而如果真能用簡單的 directive 就處理掉的話,實在是一大福音啊~

實際上怎麼寫呢?在 PGI Accelerator Compilers 的產品網頁裡,提供了一段簡單的 Fortran 範例:

!$acc region
  do k = 1,n1
    do i = 1,n3
      c(i,k) = 0.0
      do j = 1,n2
        c(i,k) = c(i,k) + a(i,j) * b(j,k)
      enddo
    enddo
  enddo
!$acc end region

而在官方也有提供簡單的投影片,在其中也有提到他們這樣做的優勢:

  1. Make file、libraries 貨成是,都不需要修改
  2. 唯一增加的,只有 directives
  3. 程式仍然可以在其他編譯器正常編譯
  4. 不需要切割 host 和 GPU 程式
  5. 由編譯器來管理資料的移動
  6. Building on vector processing success

不過實際上,Heresy 比較擔心的則是這樣自動化下,不知道編譯器的最佳化效果會怎麼樣?因為以目前來看,CUDA 的程式在開發時,必須非常注意記憶體的存取等問題,不然效能很容易無法充分的發揮;不知道 PGI 編譯器是否能夠自動、簡單地將 GPU 的效能壓榨出來呢?這點就讓大家拭目以待了~


發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.