Ian Buck暢談GPU計算背后的故事

jopen 9年前發布 | 13K 次閱讀 GPU

 

近日,GPGPU(General Purpose GPU)計算方面的資深專家、 NVIDIA(英偉達)公司 的GPU計算軟件總經理 Ian Buck 接受 The Next Platform網站采訪 ,暢談了GPU計算背后的故事。

Ian Buck對于GPU計算的研究最早起始于2000年。當時,Buck及其在斯坦福大學的一個小團隊敏銳觀察到了圖形處理器在性能方面的優勢和發展趨勢。在分辨率為1024x768、刷新率為60Hz的情況下,GPU仍然可以很好的實現圖像的動態刷新顯示。盡管GPU的執行指令只有4-8條,其包含的操作次數卻為每秒60兆左右。Buck團隊開始思考如何將GPU應用于游戲和圖形處理之外的更多領域。

Buck表示,將GPU用于通用計算的想法是從GPU支持可編程開始的。當時,為了更好的提高游戲圖像的顯示效果,GPU提供了簡單的編程接口。而GPU高并行度的計算潛力正好符合矩陣乘和很多線性代數操作的需求。因此,Buck團隊開始利用GPU非常有限的可編程能力探索了GPU在游戲圖像之外的應用性能。

在最初幾年,他們遇到了非常大的困難。盡管初步試驗可以證實GPU用于通用計算的巨大潛力,推廣這個想法卻十分不易。一方面,GPU廠商還沒有意識到GPU可編程能力的重要性。因而,GPU提供的圖像API非常有限。另外一方面,Buck團隊的規模實在比較小。掌握計算機圖像學相關知識的同時,又掌握分子動力學等相關應用領域的理論實在困難。

然而,Buck團隊開發的GPU 通用計算方面先驅項目——Brook,最終打開了GPGPU的篇章。在2004年,Buck加盟 NVIDIA 并開始集合相關的硬件和軟件工程師創造GPGPU 模型——CUDA。 Buck曾表示 ,在CUDA的應用當中,最讓其影響深刻的就是,乳腺癌檢測和診斷的系統。與傳統方法相比,采用支持CUDA編程的Tesla GPU后,醫生能夠更早、更精確地發現乳腺癌。而美國國家癌癥研究所數據顯示,基于CUDA的系統在運行蛋白質配體運算(用于研發治療癌癥和老年癡呆癥的新藥)時只需要原來1/12的時間。

此后,CUDA開始受到越來越多的關注。然而,Buck表示,他之前和來自很多工業界的人士交流發現,他們寧愿犧牲性能,也不愿接受一門新的語言。為了能夠給相關編程人員提供很好的入門體驗,從而便于CUDA的推廣,CUDA采用了已經流行的C語言作為基礎。這樣,編程人員就不需要去學習特定的顯示芯片的指令或是特殊的結構,即可編寫GPU上運行的程序。

CUDA的核心設計理念就是計算機中的線程。與傳統CPU中的4、8和16個線程不同,GPU中的線程可以多達幾萬個。Buck表示,看起來這些線程的管理是一件十分復雜的事情。但實際上,編程人員主要的困難在于如何發揮這些線程的優勢,而不是管理這些線程。早期,CUDA的性能主要依賴編程人員人工發現代碼中可并行計算的部分。目前,隨著CUDA庫的發展,這方面的工作開始越來越自動化。CUDA團隊已經開發了很多石油、天然氣和國防等相關產業所使用的科學計算方面的庫。最終,2012年發布的Titan超級計算機使用了18688個NVIDIA Tesla K20 GPU作為協處理器,標志著GPGPU在高性能計算方面的成功推廣和應用。從2011年開始,Top 500的超級計算機中至少有50臺會使用GPU進行加速。而這些機器基本上也都出現在Green 500的列表中。

Buck表示,CUDA在超級計算領域的成功應用也迎來了很好的使用反饋。目前,Buck在NVIDIA的團隊就根據用戶反饋開始探索GPU內存的管理方式。CUDA6就推出了一個新的軟件內存管理特性,支持數據在CPU內存和GPU內存之間的自動轉移。計劃于明年面世的 NVIDIA Pascal GPU 架構則將配備 NVLink,使 GPU 和 CPU 之間的數據傳輸速度較現有的 PCI-Express 標準加快5至12倍。

此外,為了進一步減少編程工作,Cray、PGI以及NVIDIA等領先的HPC供應商在2011年推出了 OpenACC 編程標準。該標準定義了一組標準化的、高層次的代碼注釋,使C/C++和Fortran編程人員可以利用GPU加速代碼運行。NVIDIA在今年7月更是發布了全新 OpenACC免費工具套件 ,讓相關研究人員能夠更多的關注科學本身。Buck也一再強調,OpenACC的初衷就是讓用戶“首先是個科學家,然后才是一個程序員”。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!