 在西雅圖超級計算大會(SC11)上發布了新的基于指令的加速器并行編程標準,既OpenACC。這個開發標準的目的是讓更多的編程人員可以用到GPU計算,同時計算結果可以跨加速器使用,甚至能用在多核CPU上。 出于顯而易見的原因,NVIDIA在大力推廣和支持OpenACC。但事實上PGI和Cray才是最早推動這項技術商業化的公司。PGI已經推出了一組非常類似的加速器指令,目前也成為了OpenACC標準的基礎部分之一。Cray公司正在開發自己的OpenACC編譯器,并且他的XK6客戶如橡樹嶺國家實驗室和瑞士國家超級計算機中心,預計將成為該技術的第一批超級計算機用戶。 簡而言之,OpenACC指令與OpenMP指令工作方式很類似,但前者特別適用于高度數據并行代碼。它們可插入標準的C,C + +和Fortran程序直接指導編譯器進行某些代碼段的并行。編譯器會特別注意數據在CPU和GPU(或其他)之間來回轉移的邏輯關系,并將計算映射到適當的處理器上。 這樣,開發人員就可以在現存的或者新的代碼上做相對小的改動以標示出加速并行區域。由于指令設計適用于一個通用并行處理器,這樣相同的代碼可以運行在多核CPU、GPU或任何編譯器支持的其他類型的并行硬件上。這種硬件的獨立性對于HPC的用戶來說特別重要,因為他們不愿意接受那種受供應商限制的,非便攜式編程環境。 站在NVIDIA的角度,目標就是將GPU計算帶入后CUDA時代。今天,CUDA C和CUDA Fortran廣泛用于GPU編程。但是這個底層技術屬于NVIDIA,對于GPU計算提供了一個相對低階的軟件模型,因此想較于對一般編程人員或者研究人員,CUDA的使用對于計算科學類型而言受限制程度越來越明顯。 受NVIDIA、AMD等支持的OpenCL同樣也提供了GPU和其他加速器的并行編程框架。與CUDA不一樣的是,OpenCL是個真正開放的標準。 但與CUDA相似的是,OpenCL相對底層,需要對目標處理器的內部結構有一定了解。因此與CUDA一樣,使用OpenCL對于計算機科學家來說有很大的局限性。 NVIDIA公司估計這個星球上有超過10萬的CUDA程序員和比較多的的OpenCL開發人員,但他們也意識到如果能夠使GPU編程更加開放且開發界面更加友好,就會有一個更大的潛在觀眾。從本質上講,他們認為OpenACC將能夠被數以百萬計的科學家和研究人員使用,這些人不需要關心和涉足處理器架構,也不需要關心芯片與芯片之間通信。 NVIDIA的Tesla業務部門的首席技術官Steve Scott總結了OpenACC目標:“我們確實想在這一點上做到大幅提高適用性和人們利用GPU的廣度和深度。” Scott表示作為高層OpenACC不會影響執行性能。這來自于他以前在Cray公司做首席技術官的經驗,他遇到了基于加速器的指令代碼只比手工CUDA編碼的性能低5%到10%而已。據他介紹,這是相當典型的。Scott說,有些應用程序甚至做的比他們用CUDA編程要好,這受益于編譯器在對某些代碼進行優化的能力超越了凡人。在任何情況下,OpenACC的目的是要利用CUDA進行互操作,因此如果需要的話,可以手工調整內核,并與指令代碼做無縫連接。 除了PGI和Cray公司,法國的多核軟件工具的開發者CAPS公司,也簽署了協議支持新的指令。這三家廠商預計在2012年上半年推出支持OpenACC的編譯器。值得注意的是OpenACC支持者列表中缺少了英特爾和AMD,不過這也不會阻止PGI、CAPS或者Cray建立支持英特爾和AMD硬件的OpenACC編譯器。 PGI和NVIDIA目前向開發人員推出了30天免費試用PGI的加速指令編譯器。活動宣傳說可以在四周之內將應用性能翻倍。上百位研究人員已經注冊了申請試用, 不過對于OpenACC的支持者來說真正終結這場游戲的是將指令納入到OpenMP標準。因為OpenACC的一部分工作來源于OpenMP,所以就意味著這件事情發生的可能性很高,不過目前沒有時間表,但最有可能結合的時間是在2012年某時OpenMP 4.0發布的時候。
|