從雲端加速技術看台灣高階人才培育問題#8:產業與學界一同進步的關鍵:前瞻研究/洪士灝
筆者回台灣教書的時候,其實並沒有放棄回到業界的想法,因此從事的研究領域也沒有與產業脫節。在學界雖然薪水少,但有比較高的自由度來做前瞻研究,所以還頗有趣。
承蒙老東家Sun的贊助,我在2005年就收到一筆研發經費,以及幾台特地從矽谷運送來的伺服器;包括我當年工作時做實驗用的Sun Fire V880八處理器伺服器。這些設備很昂貴,如果不是前東家捐贈,我根本買不起。
產學研究要同時兼顧理論與實務
我和三位學生研究Solaris作業系統的效能,發展一套工具技術,希望能在沒有原始碼的情況下,收集到與系統效能相關的資料,做為改進系統設計的參考。
因為Sun當時已經看到電信商 (例如Lucent)建構Datacenter的趨勢,很重視這個研究案,希望以效能工具和電信商一同分析雲端伺服器的工作負載,協助設計出便宜好用的下世代Advanced Telecommunications Computing Architecture (ATCA)伺服器。
所以我們每周與PAE兩位有博士頭銜的工程師討論至少一個小時,他們熱心與我共同指導學生;研究成果在2007年成為三篇碩士論文。
產學研究雖然能指導出具實作能力的學生,同時建立產業合作關係,但勞心勞力,學界一般不願觸及。
當年追蹤分析系統最強的工具是SUN的DTrace(幾周前來台大演講FreeBSD的George Neville-Neil認為DTrace還是目前最強的,所以開發一套用FreeBSD+DTrace教作業系統的課程),林以迪同學研究如何利用DTrace來自動化分析應用軟體的效能[footnote]利用DTrace在Solaris系統上以自動化方式建立應用軟體的效能模型與分析 (Automating server application performance modeling process on Solaris system via D-trace and trace-driven analysis) / 林以迪(Yi-Di Li), 2007。[/footnote]。
一般的效能分析多半是針對CPU-intensive的應用,探討CPU的使用,但雲端伺服器的重點不只在CPU上,還包括大量的磁碟和網路等I/O動作,是一般工具和普通工程師較難對付的部分,所以陳人豪同學製作了一個量測和模擬的框架,讓我們能評估I/O部分的問題[footnote]系統層級的效能量測與評估框架 (System-level performance profiling and simulation framework for I/O-intensive applications) / 陳人豪(Jen-Hao Chen), 2007。[/footnote];張筱薇同學利用SystemC做出一個能夠模擬與分析多處理器系統在執行多執行緒應用程式效能的環境[footnote]設計與實作一個快速分析多執行緒應用程式效能之多核心系統模擬環境 (A rapid simulation environment for application performance estimation on parameterized multi-core/multi-threading architecture models) / 張筱薇(Hsiao-Wei Chang), 2007。[/footnote]。
另外,我在2006年和廣達簽訂一個產學合作案,研究中階儲存伺服器(Storage Server)系統的設計;當年廣達算是較願意贊助前瞻研究的本土廠商。儲存伺服器系統是雲端的重要角色,我帶著幾位研究生,研究廣達剛剛研發出來的中階儲存伺服器。
這個中階儲存伺服器,有兩個大腦(雙控制器)來提供容錯功能,每個控制器上有一個處理器,執行廣達輾轉向國外某公司買來的複雜軟體,希望透過對軟體執行效能的最佳化,讓速度比競爭對手快。
高階研究吃力不討好,但十分重要
為了兼顧學術研究和產業需求,我們的研發重心著重在效能分析和最佳化,而且同時兼顧方法論(Methodology)和工具 (Tools)研發,以這些為基礎去執行這個計畫。我在今年初把這段經歷和心得記錄在我的網誌文章〈那一年我們做系統優化的故事: 為什麼我們會做學界業界不(屑)做的研發?〉,我在文末說:
為何學界人士會不屑做這類系統研究呢?首先,要先教導學生很多關於複雜系統的基本知識和技能、指導學生做研究、解決實作問題、驗證研究結果,原本就可能要比其他領域花更多心力。
其次,要寫一篇優質的實務研究論文,必須能言善道、精準犀利,但大多數台灣學生推導數學公式可以,寫程式可以,卻不大會用英文談論設計方法、分析利害得失、探討關鍵議題、展現系統優勢。
如果要在國際會議或期刊上發表論文,我們必須在論文寫作上花很多時間。另外,寫論文時還要顧及與廠商的保密協議,必須遮遮掩掩的,當然更不利於發表。
筆者對於這個系統優化的產學研究案的積極投入,雖然沒有豐富的期刊論文產出,但也因此教出一群具有實作能力的研究生,也獲得不少與國內業界往來的經驗,更建立起了實驗室的傳統。
這個研究案讓我清楚知道,我們能做出業界需要的前瞻研究;但國內業界的研發部門必須衝業績,沒有時間和耐心來指導學生,合作心態和我們與Sun的合作案相差甚遠。
2008年,筆者開始執行為期三年的經濟部科專研究案,讓我見識到所謂的「產官學」的鏈結。我帶著學生研究異質多核心系統的優化。
當時工研院(ITRI)和凌陽科技(SunPlus)合作研發的處理器,內建CPU和數位訊號處理器(DSP),CPU是一般的ARM處理器,重點在於自行設計的DSP,優化DSP程式效能的編譯器,以及ARM與DSP之間的溝通合作模式。我們後來把成果發表在ESWEEK/CODES+ISSS 2012會議上[footnote] Shih-Hao Hung, Chi-Sheng Shih, Tei-Wei Kuo, Chia-Heng Tu, and Che-Wei Chang, “A Real-Time, Energy-Efficient System Software Suite for Heterogeneous Multicore Platforms”, in International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS 2012), Tampere, Finland, October 7–12, 2012. [/footnote],甚至獲得這個嵌入式系統頂尖會議的最佳論文獎提名。
Roadmap for PACDSP.
大約在同一時間,IBM、Sony、Toshiba合作設計製造了Cell異質多核心處理器[32],IBM用Cell處理器建構Roadrunner超級電腦,我們想研究Cell,但是買不起Roadrunner,就買了一打Sony用Cell做的PlayStation 3遊戲機[34],在上面安裝Linux作為教學研究設備之用。至於學生在做研究與實驗之餘,是否用這些機器玩遊戲,我就不過問了。
Cell處理器。
回頭看,DSP和Cell都是可用以加速雲端的技術,但是因為架構過於死板,而且沒有打入PC市場去支援大眾的應用。
稍後崛起的GPU,雖然原本的用途是加速3D遊戲,但因為隨手可得,於是衍生出泛用GPU(General Purpose GPU, GPGPU)技術,也就是我們在這系列文章第一篇中談到的GPU Cloud的基礎。我們當時也研究GPGPU,不過國內要等到幾年後才有少數廠商感興趣。
相較之下,Cell處理器實在比國產的PAC Duo先進許多。當年Cell處理器的主要架構師(Chef Architect)IBM的Dr. Peter Hofstee來台灣尋求合作夥伴,我和他聊了許久(這間接促成日後IBM與我的合作),知道這顆他認為是超越時代的處理器晶片,缺乏知音。
雖然PS3是當年領先的遊戲機,但是要幫Cell寫出好程式,難度相當高,所以Sony後來到了PlayStation 4的時候就換成AMD的晶片,不過基本上Cell的高效能,在PS3的年代已經幫Sony打下遊戲機的江山。
國內硬體廠商低估軟體人才重要性,近年嘗到苦果
坦白說,我並不看好上述國產的PACDSP計畫,因為要在DSP上寫好程式,難度比Cell還高。原因很簡單,這個硬體設計部門所主導的計畫,嚴重低估了系統軟體的重要性;而且國內缺乏高階的系統軟體人才,知道問題的時候已經來不及了。
IBM在設計Cell處理器的同時,拉了研發超級電腦的團隊來幫忙撰寫系統軟體,包括編譯器、程式庫、效能工具、模擬器等,各種開發工具十分完備;而且人家早在2005年就公開很多相關的資料。我並非不贊成國內自行設計異質多核處理器,事實上PACDSP計畫也培育了不少系統軟體人才,但是計畫的提案是有盲點的。
早期按照規格代工設計晶片,重點在於快速把客戶要的晶片做出來,通常只需要提供少數的客製化軟體,包括主機板的支援軟體(Board Support Package, BSP)和作業系統的裝置驅動程式(Device Driver)。
因此在以硬體產品為主的公司,軟體工程師雖然往往多於硬體工程師,但並非主導的角色。也因此到了以軟體應用主導、硬體作為加速器的年代,傳統的研發組織架構就窒礙難行了。
我先前寫過,像Sun這樣的公司也遇到過類似問題,所以需要跨部門的合作。先不談市場趨勢,就技術而言,關鍵是找到兼通軟硬體的人才來主持系統設計、加強軟硬整合優化。
幾年後我與聯發科技合作,看到聯發科技成立Chef Technology Office (CTO),從國外找來資深的架構師,逐年重視軟體應用,發展異質計算,從事軟硬整合優化,算是朝向我所認同的道路發展。
(未完,待續)