從雲端加速技術看台灣高階人才培育問題(十一):摩爾定律極限將至,掌握軟體最佳化技術才能進一步提升運算效能

洪士灝
台大資訊工程系暨網路及多媒體研究所教授;主要研究領域為計算機架構與平行處理、計算機效能評估與最佳化、電子商務系統及雲端運算、嵌入式系統設計、以及網路資訊安全。

編按:本文是洪士灝教授一系列談論高階科技人才培育問題專文的第十一篇,前面幾篇請在此點閱:第一篇第二篇第三篇第四篇第五篇第六篇第七篇第八篇第九篇第十篇

上一篇談到如何用FPGA加速OpenCL撰寫的程式,這是可能的趨勢之一。另一個作法,是提供開發者「加速器模組庫」(Intellectual Property Library),裡面有各種好用的加速器,讓不會最佳化OpenCL程式、也不懂硬體設計的一般開發者,可以像呼叫軟體程序一般,方便地享受FPGA帶來的好處。

讓程式正確執行是技術,讓程式高效執行是藝術

這好比很多人在實際開發軟體應用的時候,喜歡透過API使用現成的程式庫(Library)或是中介軟體(Middleware),甚至呼叫雲端服務。例如矩陣運算,絕大多數的人寫的程式,不會比Intel最佳化過的Math Kernel Library (MKL)裡面的矩陣運算程序來得快;又例如手機應用(App)的開發,小學生都可以在幾周內學會,因為軟體開發套件(Software Development Kit, SDK)提供許多的API,讓開發者使用手機豐富的內建功能。

不過,小學生所寫出的手機 App,可能很有趣、有創意,但是效能未必好。以Android為例,以Java撰寫的程式,效能可能比用C撰寫來達成同樣功能的程式要低好幾倍。因此,很多Android App夾帶著用C撰寫、事先編譯好的Native Code,來加速計算沉重的部分。當然這樣會犧牲可攜性,但可大幅增加效能。一個應用以多種程式語言開發,也是廣義的異質計算。

軟體效能和可攜性難以兩全,一直是程式開發者的難題。

要追求雲端上的可攜性的話,當前最佳的程式語言選擇莫過於HTML5,因為幾乎在任何有瀏覽器的設備上都可以跑;然而HTML5程式進行計算時所採用的Javascript語言,效能比Java更難最佳化,所以在推廣的時候遇到難題。舉例來說,過去Facebook提供給Android手機的App,是以HTML5撰寫成的,但後來因為效能的問題,只好改寫為Java+Native Code。理論上Javascript也可以夾帶Native Code,但是這樣一來就失去了可攜性的好處。

摩爾定律終將來到瓶頸,軟體效能最佳化更顯重要

要效能就得犧牲可攜性,要可攜性就得犧牲效能,這種魚與熊掌無法兼得的兩難,似乎一直都是軟體開發者的難題;只不過這幾年來CPU速度倚賴「摩爾定律」(Moore’s Law)以指數成長,讓一般的軟體開發者,可以用「等待」的方式解決效能難題。如今隨便一台廉價筆電,都可以上網、作文書處理。但是運算量甚大的「智慧型」應用,能否繼續搭摩爾定律的順風車呢?

未來軟體開發者的選擇:尋找高價值跨領域應用,或是精通某項專業技能。

我不認為如此,顯然Intel也不表樂觀;這可由Intel近年更積極投注於FPGA加速器的研發上。Intel下一代的處理器,會有將FPGA和CPU封裝在一起的版本,因為維持摩爾定律的技術挑戰愈來愈巨大、成本也愈來愈高;而且用CPU執行某些運算的效率不彰,不利於節能減碳。(當然,GPU的崛起,對Intel也是一大威脅,所以Intel必須有所回應。我們下一篇再來談談GPU。)這些年來,單執行緒(Single Thread)的程式已經不會像從前那樣自動以幾何級數變快,前瞻的應用開發者只好認命,來學習用低階語言、平行處理、GPU、FPGA等技巧來加速雲端運算效能。

因此我告訴學生,你們這代或許生不逢時,很多電腦界簡單可大賺其錢的東西(英文稱為Low-Hanging Fruits)都被前輩們撿走了;尤其是摩爾定律的順風車,過去前輩們搭得很愉快,未來可能行不通了。這個年代,各位同學要學著變通,要嘛就跨領域找有價值的應用,要嘛就把某項專業技能學精。總之,可能要效法我們從小唱到大的軍歌裡頭「莫等待,莫依賴,勝利絕不會天上掉下來」的精神。


喜歡我們的文章嗎?按讚立即加入粉絲團 :)

IDEAS Night

rocketlab_banner

台灣遊戲的標竿「返校」是如何堅持下來的?拿到阿里巴巴百億基金投資的「數位宅妝」一路走來,跌過哪些跤、又作了哪些決定、得以拿到關鍵客戶與投資?我們請到赤燭遊戲與數位宅妝來分享,堅持實踐創意一路以來的汗水與淚水。

立即搶位



推薦您也參考

獎勵作者

歡迎您以點數獎勵作者:

關於點數的獲得與使用方式,請參閱說明