首頁 > OpenACC-使用GPU運算的新利器
:::

OpenACC-使用GPU運算的新利器

GPU挾著具有數百甚至數千個處理器先天優勢,儼然從『遊戲』人間搖身一變成為高速計算的利器,強調通用目的計算的圖形處理器GPGPU於焉誕生。
 
 
 
話說近幾年國際間超級電腦前五百大TOP500競逐中,GPU挾著具有數百甚至數千個處理器先天優勢,儼然從『遊戲』人間搖身一變成為高速計算的利器,強調通用目的計算的圖形處理器GPGPU於焉誕生。CUDA架構是NVIDIA公司對GPGPU的正式名稱,提供類似中央處理器x86架構的指令集,這也是自GPU概念推出後首次讓程式設計師可以透過程式語言C發揮GPU的強大運算能力[1]。但撰寫CUDA程式常會遇到幾個問題:(1)記憶體配置常會擷取到已使用記憶體;(2)不能使用遞迴;(3)限定顯示卡[2]。

因CUDA有其難跨越的門檻,為了使程式設計者更容易運用平行運算的優點,於是在2011年NVIDIA、Cray Inc.、Portland Group (PGI)和CAPS等公司共同發表了全新平行運算程式設計標準OpenACC [3],讓GPU上的程式開發變得更為簡化與容易。OpenACC專為數百萬名科學家和技術程式設計人員而設計,可讓他們容易運用異質CPU/GPU運算系統的革命性運算效能。OpenACC可讓程式設計者針對編譯器提供「指令」(directive)式的簡單提示,以識別程式碼的哪些範圍需要加速,而程式設計者不需修改或調整底層的程式碼。藉由編譯器將指令變成平行運算,將運算對應到加速器上。

同時OpenACC也可使研究化學、生物、物理、資料分析、氣象、工程、人工智慧…等眾多領域的程式設計者受益,例如:美國德州休士頓大學Kayali教授利用OpenACC指令加入計算大範圍靜電磁場的程式中,可以提升二十倍的效率,進而在兩天內即可得到結果[4]。而OpenACC標準可完全與NVIDIA CUDA平行編程架構相容,而且兩者具有極高的互通性,更可針對加速器作細部控制以達到最大範圍的效能調校,此外,撰寫OpenACC不會有上述撰寫CUDA程式的問題,對一般的程式開發者來說,真的是一大利器!

參考資料
  1. http://www.computerdiy.com.tw/all-articles/articles-graphics-card/1147-nvidia-cuda
  2. financelab.nctu.edu.tw/Students/LinWeiChen/Cuda%20平行運算機制.ppt
  3. http://www.nvidia.com.tw/object/openacc-parallel-computing-press-20111114-tw.html
  4. http://www.nvidia.com/object/gpu-directives-successes.html
推薦文章