電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

2013年8月26日 星期一

我今天前進了沒?

我的好朋友蘇文鈺教授非常關心國內的科技教育和產業的議題,昨天寫了一篇 「腦力科技之四 - 要複雜還是要簡單]」(https://www.facebook.com/arwen.su.5/posts/232377766915835),其中娓娓道來他身為資訊科技研究者與教育工作者的心路歷程,很多東西與我常說的不謀而合。

我一直很好奇,他所談的東西,以及我所寫的東西,台灣到底有多少人真的懂?我在幾年前思考台灣的狀況時,一度非常震驚。我想,台灣這麼多聰明人,怎麼會搞成這個樣子?怎麼會找不到出路?在人們痛罵政府貪腐無能的時候,我看懂其中一些文化的問題、結構性的問題雖然盤根糾結,但其實並不複雜,只是沒有看到人出來整體性地解決問題,甚至主流的媒體論述還不斷欺瞞、誤導、弱智化社會和群眾,所以我不得不野人獻曝,開始在部落格分享自己粗淺的想法。

文鈺兄引聖嚴法師說的故事,最後說:「大鴨子與小鴨子,只要願意前進,都可以游出自己的路。」為什麼要講這麼基本簡單的常識?因為很多學生、工程師、老闆,面對台灣這幾年和現在的困境,似乎都慌亂了,划來划去,找不到能夠持續前進的方向,原地踏步,和國外越差越遠。大家可以繼續罵政府無能,但是其實你自己可以決定你要往哪裡走。

別的東西我不敢講,在我所熟知的「電腦工程」領域,隨便都可以舉出一堆當前紅得發紫的領域。但這些東西,老實說,都不是短期可以學成的技藝。如果沒有多年深厚的基礎和經驗,很難領悟個中的奧妙。我二十年前研究平行處理,六年間玩了六部超級平行電腦,挑戰最難的實務問題,拿到博士前沒有任何投稿。回頭看去,我念博士的過程,只不過鑽進一些當時世界上最先進的系統,最後搞懂了一些簡單的道理。

大家應該都聽過「庖丁解牛」的故事吧?庖丁談的東西,看似簡單,但沒有幾個人做得到,其中的道理,不透過身體力行,也不會真正領悟。我數月前寫了一篇「排球、養生與證悟」(http://hungsh-ntucsie.blogspot.tw/2013/06/blog-post.html),講我研究排球多年後小開悟的經驗。身為一個熱愛學習的人,驅使個人不斷做研究的,或許是追求這類所謂的「顛峰經驗」中的狂喜 -- 包括領悟道理的那一刻,以及之後不斷實踐道理的時機。我猜,庖丁在表演解牛的時候,心情是愉悅的。

我原本不敢相信這些簡單道理的價值,但這些年下來,我從作為工程師和教學生的經驗中發現,那個訓練是很扎實的,那些簡單道理可以說是接近形而上的道和真理。我喜歡簡單的道理,我欣賞透過簡單道理創造出的偉大成就。我討厭那些囉裡囉嗦的論文,要解個工程問題,卻列了一大堆式子。當做頭腦體操可以,搞成作文比賽,拿結果在學術界裡自欺欺人,那就很可悲了。

幾年前有位剛從本系畢業的博士,申請到中研院的助理研究員的工作,煩惱究竟要照著當時的資訊所所長游本中教授(從美國明尼蘇達大學請來的)的建議,做實務研究;還是要追隨大部分人的途徑,多做些理論研究,以方便多發表論文、拿到終生俸?他擔心雖然目前強調產學績效,但如果游所長不續任,之後該麼辦?要我給點意見,我剖析現況與未來,最後說,未來難料,我自己會做「以長遠看來是對的事情」

「自反而縮,雖千萬人,吾往已」 - 如果你發現一個你深思遠慮,最後認為是對的方向,縱然周遭很多人選擇的是不同的方向,或是停滯不前,你該怎麼辦?我們看過一些故事,主人翁堅持做自己,最後證明自己的堅持為其生命帶來無比的意義。或許有些人出社會之後,就不再相信這些故事,但我從小開始,一直熱愛喜歡「天地一沙鷗」這個簡單的故事。

在今天美國如此資訊科技熱門且亟需人才的情況下,我們在台灣的資訊工程相關領域的學生、工程師、公司,如果還要擔心飯碗的問題,不能勇於前進的話,那是為什麼?唯一的答案,就是故步自封。

在「天地一沙鷗」的故事中,一群的沙鷗每天在棲息地搶食,日復一日。一隻想法離經叛道的鷗鳥,就是想學高速飛行,不顧旁人的眼光,不斷地練習,但是被鷗群驅逐。後來,他在更遼闊的世界裡,遇到了同樣熱愛高速飛行的鷗鳥,達到更高的境界,然而他選擇回到他原生的地方,去分享他的心得。

我看到一些人看衰台灣的軟體產業,覺得很可惜。軟體很有搞頭,但絕對不是目前一堆那種急就章的搞法足以成功的。我們需要有一些真正好的作法,和更多願意努力做教育和擔任橋樑角色的人

至於我們個人,遇到困境時,不妨問問自己:「我今天前進了沒?

2013年8月21日 星期三

業界(和國家)需要系統架構師

Tyler Chen問我能不能談談系統分析師(system analyst)、系統架構師(system architect)的差別,剛好颱風假把我今天早上的會議全取消了,我們正好來談一談...

這個問題的由來,是我說了一句有爭議的話(食物可以亂吃,話不能隨便講):「作為系統架構師,分析和溝通的能力遠比coding重要」。

軟體專家聽了,可能不以為然 :) Raymond Lai就關切了一下,他說十幾年前矽谷就下定論了:master coder一定是architect,會講不會code的architect在軟體公司是不會那麼受尊敬的。

不要誤會,我說「系統架構師」指的是system architect,不是專做software的architect。我特別舉system architect出來,其實是希望台灣的軟體人才,除了能在軟體領域專精之外,能夠有企圖心去進到系統領域,俯視與掌握全局。

台灣現在缺system architects缺得很嚴重,在大部分的老闆眼中,系統公司裡面功績彪炳的戰將,是硬體工程師,所以在缺系統架構師的情況,只有硬體工程師暫代。這很正常,因為過去的產品的軟體層次不高,軟體工程師所負責的多半是支援的工作,例如寫drivers。我會希望軟體人才,在台灣現在和未來勢必要提昇產品的層次的時候,跳脫自身軟體背景的格局,多從應用面、系統面去看,有機會出來作為領導者。

然而,什麼是系統呢?系統可大可小,舉例來說,一個system可以是:
1. operating system - 以軟體為主
2. embedded system - 低階系統往往是以硬體設計為主,軟體為輔
3. computer - 傳統是以CPU為主,其他的東西叫做「周邊」
4. enterprise server system - 建構商用系統上複雜的軟體層,這是IBM所謂的system architect
5. distributed system - 重點在軟體和網路協定
6. data center - 對於以上東西的組合和整體規劃,應該要對上述的東西有深入的了解
7. system-on-chip (SoC) - 應該是由應用去推動軟硬體協同設計的工作,不過國內多由硬體人士主導

我常常談的系統,講的是最後那兩項,那也是台灣公司一直談說要做的東西。問題是,談的人多,真正能做的人少。

台灣的分析師(Analyst)一大堆,但就像Wikipedia (http://en.wikipedia.org/wiki/Systems_analyst) 開宗明義講的: "they do not normally involve themselves in the actual hardware or software development" --多半不是真正有參與實際研發工作的人。當然,有很多分析師找出來的結果很重要,但是要有人來擬定和指揮產品開發計畫。擬定和指揮產品開發計畫的人可稱之為architect。

Architect這個字,是從工程領域借來的。An architect is a person trained and licensed to plan, design, and oversee the construction of buildings. (http://en.wikipedia.org/wiki/Architect) (中文版的Wikipedia寫得不好)把這句話的buildings換成systems,就可以拿來定義system architects。這句話的重點在於:有規劃(plan)、設計(design)、全面監督(oversee)系統建構的能力,不是只出一張嘴做規劃,也不是只聽命把長官要的東西實際設計出來,也不是只在旁邊釘著下屬每天加班把東西搞出來。

朋友們常說業界缺乏戰將,有好的architect來帶領研發團隊,是非常重要的事情。所以我希望能訓練出一些將來能擔當大任的architect。不要誤會了,台灣現在當然有一些architect的人才,但我們還需要更多。一個好的architect要有很強的能力和非常豐富的經驗,所謂十年磨一劍,要有真材實料,不是把名片上的頭銜換一換就行的 :)

業界的需求,當然由市場來決定。十年磨一劍,要怎麼磨?要磨出什麼樣的劍?科技一日千里,這些問題都是大哉問。這也是architect難以量產的原因。在業界裡,需要各種的architects,有的地方,做很大很複雜的計畫,需要一群architects集思廣益,每個architect負責其中一部分的專業領域,但是每個人也得具備跟其他architects溝通的能力,這個團隊合作才會順利。

我希望來找我做系統研究的碩博士班學生,能把劍磨好再出去,不然出去以後跟人家真刀真槍地累積實戰經驗,或許也是個辦法,但不見得人人都有再磨劍的機會。還有啊,有些同學自己不認真磨劍,我在旁邊幫著磨,其實磨得頗辛苦的。最好是你們自己學會磨劍的方法,到業界之後找機會更上層樓。

Architect既然是工程的概念,想朝這方面前進的同學,可以想想該修什麼課程?工程的核心概念之一是trade-offs -- 考慮複雜因素後做規劃和設計、一面做一面評估和改進 。資訊工程的課程中,有幾門課能夠讓學生強化這工程核心概念呢?我想很多課都有 ,只是學的人有沒有注意而已 。"Archi" 這個字根,源自於希臘文,意思是 "chief"。而chief就是領袖的意思。在各種領域,我們都需要有能力讓事情被做好(get the job done well)的領導者。有的地方,做很大很複雜的計畫,需要一群architects集思廣益,每個architect負責其中一部分的專業領域,但是每個人也得具備跟其他architects溝通的能力,這個團隊合作才會順利。

這裡有個問題:有經驗,即使在各部門歷練過各種實務工作的優秀的設計者,並不代表能夠做管理者;能做管理者的,未必能作為一個有眼光的規劃者;能規劃的,未必能動手。就單一項目而言,要成為優秀人才是相對容易些,但是要集上述能力於一身,就難多了。這是「我眼中」architect獨特的地方,坦白說,必須有些天份、機運和有個人的努力,才有辦法達到。

蘇文鈺教授特別指出:「國家需要architects,現在是用商業的運作方式來管國家,學校與醫院。Orz! 」這個我再同意不過了,但是要讓政府轉型並不容易,關鍵在於「人」,如何找到architects來為國為民做事。

國家是一個大系統,我們當然也希望主政者有能力讓事情被做好,而不是被說成是bumbler。很顯然,在多年的內鬥和空轉之下,執政黨竟然找不到賢能者來擔任要職。君不見,國防部長上任沒幾天就換下來了... 這些檯面上的人物,究竟有多少實力?如果我們在看檯面上的人物這些年的績效的時候,不去看他們的頭銜、人脈、收入、談話、論文發表的話,而是認真去評量他們所實際做過的計畫和事業,到底有多少人物是真的賢能者??以我所見所聞,能幹、認真、負責、務實且清廉的人,多半不大願意淌渾水,或者是進到系統後被卡住、被鬥垮、被同化。現在國家,如果要做些事情,好比被圍標、綁標的標案,源頭就不對了,自然不會有好的工程品質。

國家要改革,談何容易,但還是得做,不然我們天天罵也無濟於事。我想,要讓政府轉型並不容易,關鍵在於「人」。

- 談「人」的話,行政機構公務員的人事是最難改動的,光靠換首長是不夠的,所以我不期待行政單位的施政「能量」有大幅改進的空間,與其要求行政單位多做事,不如減少他們的負擔,要他們把基本的工作做好,並且廉潔,這是所謂小而美的廉能政府。很多事情(但不是所有事情),要讓會做事的民間單位去做,才會有效率。

- 立法委員是人民選的,人民願意選出一些會做事的賢能者進入立法院,讓立法院發揮功能,這是人民自己的責任。各政黨和民間團體也需要賢能者作為領導人。當然,推舉誰出來作為團體領導人,也是社群決定的。國家既然是個大系統,各單位之間要能夠有像上述system architects一樣的精神,不只負責個別的專業領域,也得具備跟其他單位溝通的能力,這個團隊合作才會順利。

我看在接下來的世代,當人民厭惡政府的貪腐無能到達極點的時候,自然想法會轉。所以啊,能力強的人千萬不要氣餒和放棄努力,更不要同流合污。風水輪流轉,將來會有發揮的時候。當然,有些人才,沒遇到機會,在那裡默默耕耘。有心、有機會的話,不妨出來試試看。孔子很推崇的管仲,可算是architect的人才,也是需要有機會的。

2013年8月19日 星期一

台灣科技業和科技教育轉型之路

前言

喜見積極進取的博班學生和我的老學長一週後(8/25)同台演講「台灣科技業轉型之路」(http://www.accupass.com/go/yowu2013)。對科技業來說,低工資高利潤的時代過去了,單憑一張嘴再也騙不了幾個白目的金主。現在,不管是靠硬實力還是靠軟實力,都得靠「實力」。

目前的科技中生代,要靠實力,才有辦法出頭;台灣的科技業,遲早得讓有實力的中生代接棒,才有辦法轉型。培植和支持有實力的中生代和年輕人,是我們在大學為人師表者的當務之急。

科技業的轉型,我以前談了不少,在此先不談,有興趣的朋友這週日去聽上述的演講吧!我藉此機會,來談談科技教育該如何轉型或改進...

科技人才

中興以人才為本,所以我們該先談人才... 我說了好多次,台灣人很聰明、很好用,但是從台灣科技產業未來長久的發展來看,我們缺很大的是高階的、能幫台灣在國際競爭的人才

Raymond Lai 學長和我在fb上討論如何發掘資訊科技人才,說到他正在用國外如MIT的線上教材,教十幾歲的小朋友資訊科技,看到很大的潛力。

我們下學期要開一門談e-Learning/Teaching Engineering的課,會研究資訊系入門的cornerstone courses的設計,以及探討「個人化的學習」(personalized learning)的平台。我想,這些線上課程和教學技術是未來培植有實力的年輕人的重要途徑

在我們的教育體系中,資訊科學,並沒有資優生的路線。不過,當年像前面談到的學長和在下這樣在中學時自行鑽研電腦科技的人,總是會找到途徑,我其實不大擔心。我比較擔心的是「假資優」的學生 -- 家長在後面支持,為了推上資訊系,使出渾身解數,參加各種比賽,但是學生本人並不熱愛這個專業。所以說,不管制度怎麼設計,都會有些問題,我們在觀念上,要先釐清什麼是資訊科技人才,以及要教他們什麼

我個人覺得,第一,除非是特殊個案,不然沒有必要揠苗助長。第二,很多人覺得程式寫作(coding)就是軟體研發,但科技業所需的人才,要會的不只是這個,要怎麼有效學習是個學問。第三,學習態度非常重要,態度往往決定了高度。

思索具體作法

- 如果各位先進有獨到的見解的話,請多指教,更好的作法,是來學校交流、給演講、幫學生上課。業界要轉型,也不要只大喊找不到人才,或是只想撿現成的。有能力的話,請對學校做些建設性的影響。(我下學期有三門課,e-Learning、Computer Architecture、Systems Research,歡迎到課堂上,給我們教師和學生一些經驗分享。)

- 台灣大環境空轉了十多年,造成目前教育上很多的問題。制度改來改去也沒有大用,因為主要是人的問題。問題在此不多講,我們個人能做的多少努力,就盡量做,把e-Learning做好,或許對有心向學的人會有些實質的貢獻

- 我所強調的人才,是需要所謂「十年磨一劍」的人才,不管是在哪一方面,那就是我前面所講的「實力」。能搞定複雜軟體、世界級的 hacker,也是一種人才。比如說,我們搞資安,就需要高段的hackers。台灣常聽到「科技業所需的人才,要會的不只是軟體」這樣的評論,第一,是來自於一些製造業的舊觀念,認為軟體一定要跟硬體沾上邊。第二,是我們純軟體產業的技術層次,的確有待加強,否則在業界只搞軟體的話,能見度不高。我們或許該思索一下,告訴小朋友們,將來台灣和世界需要的軟體人才,有哪些種類,給一些典範做為他們磨劍的參考

- 我想,在教育上,coding的重要觀念和技巧,如果能夠在小時候養成扎實的基礎,會是很有利的。更重要的是英語的能力和資訊技術能力息息相關,英文不好,對軟體的學習影響極大。目前大學裡的課程,包羅萬象,對資優生來說,不滿意學校的課程,有一堆國外的課程可以學習,比我們那年代好多了 -- 這是我說資優生會自己找到出路的原因。

- 教有興趣的小孩,教的內容有廣度和深度,加上小孩很願意學,而不是整天掛在電腦前面玩game,的確是很好的資訊人才養成教育。這個境界,和坊間所談的內容,不可同日而語。不過,目前在台灣要做好這個,並不容易,我們可以想看看該怎麼做。例如Raymond Lai學長給的例子,在此給大家參考

... 去年七月開始用用MIT Media Lab的Scratch Curriculum教一些小孩程式設計。選這個教材是因為裡面不只講程式語言 (教材裡叫 computational thinking concepts: sequence, loops, parallelism, events, conditionals, operators, data),還融入軟體工程的概念 (computation thinking practices: working iteratively and incrementally, testing and debugging, reusing and remixing, abstracting and modularizing) 。另外,這個教材也強調實作 (design-based learning: designing, personalizing, collaborating, reflecting)。

暑期課程結束以後我選了一下,在去年11月開始用Udacity的課程繼續。現在最快的一個小孩已經拿到了好幾個Highest Distinction certifications: CS101 (CS Intro/Python), CS253 (Web Development), CS255 (HTML5 Game Development), CS262 (Programming Languages), CS291 (Interactive 3D Graphics)。他現在正在上CS271 (Intro to Artificial Intelligence) 和 ST101 (Intro to Statistics)。

這個小孩13歲,去年七月前沒碰過程式設計。他很明顯是資優生,但是如果沒機會接觸,他不會知道。他也不是唯一的突出學生 -- 還有兩個13歲的孩子也緊跟在後 (CS101, CS253, 現在在上CS255, 我們還用w3schools補了一些HTML/CSS/JavaScript)。


- 嚴肅問題是,這些年台灣的大環境,很容易把辛苦培育出來的學生搞砸。大環境的因陋就簡,讓人才無法發揮,十年磨一劍的實力展現不出來,對於一些資質還不錯的學生來說,這就是所謂的「看不到未來」大環境的問題,透過各種耳語、討論版、媒體誇大,嚴重影響大學生的學習意願。我希望有志之士,可以多發揮正面有建設性的影響力。

- 今日科技產業需要的「轉型」,是從基本心態和職場文化做起的轉型。公司重用有實力的人,有企圖心的員工就會想辦法充實自己;人才因為缺乏發揮的空間而在網路上酸來酸去,然後就影響到大學生的思維。很多人說,要轉型很難 -- 沒錯,要壯士斷腕,談何容易?但是腐爛的部份不去除,繼續惡化蔓延到其他部分,會如何?這是「魄力」的問題。產學的議題,繼續用舊模式攪和,雙方互相指責,無濟於事。業界和學界,如何好好搭配和互動,是極其重要的工作。

結語

我在fb和部落格上拋轉引玉,為的是得到高人的指教,讓自己think out of the box。我想,這是網路時代中,我對於「獨樂樂,不如與眾樂樂」的詮釋。雖然討論版上的訊息簡短,有時會不同調,但是有時合奏得還滿愉快的。

龐大的教育體系,要改革、要真正動起來,需要花很大的力量和很多的時間。現在是社群的時代,crowdsourcing、crowdfunding等等,都是可以集思廣益和做事的方法

2013年8月14日 星期三

人才與研發

【就業困難】這件事,在我們實驗室這邊幾乎感覺不到。我想,有一小部份是靠台大的名氣,但是大部分是靠同學的努力和才氣。不過,我常鼓勵同學,以各位的資質和努力,找到一般人稱羨的工作,是理所當然的,但是要能成為領導型或開創型人物,成為人才,會更有成就感。

以下舉近期的例子:

1. 聯發科的朋友要我推薦對 HSA 和異質運算系統架構的有興趣的學生或工程師,有點招不到人才的感覺。

我想,真正會做這個東西,人在台灣,卻不在聯發科工作的人應該不多吧 學術界有多少人有做過研究呢? 很少。

我說呢,第一,人以稀為貴,聯發科應該大幅提高雇用這些專業人才的薪水才對,這樣也可以鼓勵學生們在學校就來好好學做前瞻產業技術;第二,我們六七年前就開始做異質運算系統架構,但一直沒有好用的平台,做起來很辛苦,我希望聯發科在人才訓練的支援上,能多做一點。

2. 聯發科有像這樣的OpenCL系統工程師職缺 (http://goo.gl/uZIaKZ): 負責提供可充分運用CPU/GPU能力的平台, 以作為embedded 系統的核心,主要工作為"分析影像多媒體演算法, 並定義能充分運用多核CPU/GPU的軟體架構",條件: 2-4 年的 Android/Linux 的行動裝置平台開發經驗、熟悉 Android 系統開發實作和 Open Soruce 開發流程、熟悉 OpenCL 應用於 Image/Video 處理、熟悉主流 GPU 架構、或熟悉 LLVM 編譯器架構。

要在學校學會以上這些技能,難不難? 對於懂得自學的人不難,給不想自學的人,我們還特別開了【系統研究專題】(http://goo.gl/oYmEUd)這門課來補習。然而真正我們想要教的,不是一堆單一的技術,而是希望學能能夠融會貫通這些技能,就像令狐沖學獨孤九劍一樣,學完後會活用,還可以自創新招。

或許業界先進可以回答這個問題,能夠在短期間融會貫通以上技術的人才,你願意付多少薪水? 以我看,年薪二百萬是不見得足夠雇用一個有經驗的專業人才。但是換個思維,你如果願意開出年薪二百萬給學校訓練出來,學有專精的人才,我猜有不少學生會好好學習來搶這些位置。Why not? 你說公司有制度,不能這樣幹,那招不到人的話,我也沒辦法。

我想,新創公司和大公司爭取人才的策略應該是有所不同:

- 我所樂見的新創公司招募新人的態度是:給合理的薪水讓新人活得健康、給光明的願景讓新人對未來充滿希望、給適當的教育訓練資源,讓新人的技術能力迅速上升,即便公司沒起來,也能學到很多東西。

- 大公司多半有用人制度,但往往過於僵化,以至於招不到也留不住第一流人才。大公司裡面也有各式各樣的單位,部門主管的人品和能力很重要,我覺得進到好團隊跟到好老闆比賺到更多薪水重要。我往往建議學生去面試時要多認識未來的主管,甚至,如果可能的話,選擇未來的主管。

從人力仲介公司找高階研發人才,機會渺茫。搞高階研發,需要人才,用得到人脈。你透過做人和做事,讓人家知道你的才能,這樣所建立的人脈,是有意義的。科技人,藉由你的知識和能力所建立的人脈,人家有問題要解決時會想到你,是最扎實的人脈。

但是有些缺乏社會經驗的宅學生,不聽老人言。研究所選指導老師和研究題目要選輕鬆的,選課要選其他很多同學選的,選工作要選其他同學認為好的,這是目前的校園文化嗎?學生要能學習獨立思考,我不介意學生不聽話,但是不信老師的話,卻聽學長同學的二手傳播?往往是缺乏獨立思考的緣故。你在學校怎麼表現,大家看得清清楚楚,跟你的人脈節節相關。

同學們找工作時,要不要看薪水?雖然薪水不是工作的唯一指標,不過該給的薪水是該給的,不然就顯得不夠誠意;此外,成就感是重要的,不過因人而異,該想想要如何才會有成就感,這算是正向思考;但是,注意不要過度地使用正向思考模式而走火入魔了,年輕時候所認知的成就感,可能並非人生的全部。

同學們要懂得提升自己的專業能力和認識自己的價值。就目前高階意統研發所需的工作性質來說,懂多核架構、會平行處理加上能系統實作,如果真有非常優秀的人才,一個人才抵得過好多個庸才,這個和一般程式寫作有大不同。

不懂多核架構,寫出來的系統程式不會快;不會平行處理,寫出來的平行程式有超難抓又隨時會掛的錯;不能系統實作,現成好用的東西不會用,要做的東西半年整合不進來。

這裡談的問題,不是那種三個臭皮匠勝過諸葛亮的問題,而是一個諸葛亮可以敵得過一百個狗頭軍師。某些三國故事中,徐庶說諸葛亮的才能勝己十倍 -- 打仗的時候,不玩文人相輕那套,就可以看出真本事。科技的戰場,也是如此。

很現實的問題是,公司要與國際競爭,你願意雇一個人才,會藉由主動學習、與人溝通,獨立快速完成計畫呢?還是願意帶幾個效率不彰可能扯後腿的庸才?正常的公司會選擇前者,但我看過好幾篇文章,描寫台灣一些變態的文化:長官不敢雇人才,怕被幹掉,一件計畫能多雇幾個究多雇幾個,底下帶越多人越風光 -- 這是關起門搞鬥爭,不是出去打仗。

去年我學生在IBM Austin Research Lab做Intern,只有他一個台灣人在那裏,拿IBM的薪水。韓國人由韓國公司和政府贊助,去了十多個,要偷學人家的技術。要與國際競爭,國家不能關起門來,一面補貼業界,一面讓業界壓榨勞力。對於勇於到國際競爭的台灣廠商,我樂見他們和台灣學生有良好的互動,互惠共榮,在待遇上做適度調整,是起碼的誠意。

高階人才要不要每天花十多個小時在公司裡?不必。要不要老闆隨時盯著看?不用。給他有挑戰性、能學習新東西的工作,他願意不意做?多半願意。腦袋會不會被繁重的工作操壞?不大可能,因為工作中隨時要思考。會不會因為工作忙碌而衍生家庭問題?有可能,這個要注意。

高階人才年薪兩百萬多不多?不多。工時要不要長?不必。國內業界要向高階系統做前瞻研發,心態要轉。實際上,我知道很多公司的研發文化都逐漸在改了,但有些還留在過去。

各位耳聞某某公司工時超長的事,未必發生在其所屬每個單位。我認識幾位在聯發科CTO的朋友,做的工作很有趣,可以讓他們一展所長,至於工作累不累,我看他們都蠻厲害的,應付自如,不見得比在大學當助理教授累 你夠厲害的話,去找聯發科談談也無妨,談個值得的薪水,以及確認工作的時間。

有人說高科技快沒落了吧? 還能研發些甚麼?

以Android手機為例,現在利潤越來越薄,各家的差別化越來越難,台灣能做甚麼? 有人看不到前景,但是,我們倒是看到不少可以著力的地方。

根據Google目前的態度(http://goo.gl/rjmiag)看來,要用OpenCL開發Android apps的人,得出來呼喊一下。不過,做系統開發,,不必凡事靠Google,可以自行想辦法把OpenCL埋到自己的Android裝置裡面,支援自己的一套system software和middleware就行了,反正Google也不會來幫妳的處理機架構寫OpenCL driver。

我想,Android搞到目前這個地步,大多數通俗的功能都有,iOS也差不多,大概快變不出甚麼新把戲。Fragmentation的問題,跟螢幕大小的關係,比跟處理機架構的關係還大。Google現在有自己的手機公司,當然不想給競爭對手太多支援。

OpenCL v.s. 手機,重點在於找出與建構killer apps。我們覺得手機廠和晶片廠該想想新的手機和雲端合作的模式,不必一直抱Google大腿。手機價錢直直落,緊抱大腿的話遲早也跟PC產業一樣,利潤越來越低。搞一些獨門絕技出來,做軟硬體統合設計,或許可多些加值效果。

我們或許該來看看其他的手機了,前天公開的Firefox手機(http://goo.gl/2ii4y7),一台不到US$80。將來當手機的處理能力強到某個程度,可以非常輕鬆處理目前多數的Android Apps的時候,乾脆把Android放在虛擬機器上算了。這樣一來,無論Android如何改版,只要找虛擬機器用的標準版來跑就行了,而且還可以用到虛擬機器其他的好處。

而且,由於Android並非設計給桌機使用,把Android手機接螢幕做為工作站,就好比用Microsoft Windows 8的平板模式,使用者經驗不佳。

Ubuntu Phone標榜可以拿來做為工作站使用(http://goo.gl/S9fek),用過Linnux作業系統的同學知道,Linux當做工作站,需要用MS Office的時候開一下VM,其實還不錯用。

想想一個搭載2.4GHz四核Snapdragon 800的手機,或是MTK真八核的手機,如果跑Ubuntu Phone,上面開一個VM跑Android,開另一個有dynamic binary translation功能的VM跑Windows;在路上用Android,進辦公室用無線接螢幕和周邊用Windows。運算量龐大的工作怎麼辦?到雲端去。想玩Game怎麼辦?有寬頻網路的話,接上GPU Cloud就行了。

做這些一定要靠Google嗎?不必。Google有太多他自己想做的事,Android對她來說算是雞肋,所以也不可靠。做以上講的東西,說難其實也不難,說簡單嘛,要找能做的人也不容易,所以是有機會的。

您說以上有些東西早先有人也嘗試過不成功,例如Google自家推ChromeOS,就沒賣出多少。沒錯,這是Timing和眼光的問題。有人說:Timing is everything。東西太早和太晚出來,都不行。個人覺得ChromeOS是Google一廂情願的想法,低估硬體的進化速度,現在大家不可能走回頭路去搞 ChromeOS。硬體繼續進化下去,單螢幕單視窗的Android和iOS設計,會落伍。至於微軟Windows 8的惡搞法,誰能解釋? 大公司的大腿,能一直抱下去嗎? 誰能帶大家衝出去呢?

2013年8月8日 星期四

OpenPower Consortium

看到IBM要推OpenPOWER (http://goo.gl/a9xa4A),就來說說故事吧

有誰記得OpenSPARC? 我的前公司SUN在2005-2007年間也作過類似的事,把SPARC開放給大家用,不過我在台灣問了ㄧ些人,似乎沒甚麼人要(會)用。

免費的為甚麼不用? 當時OpenSPARC比最高階的ARM還強,又有多核心和64bit的支援,還有開放的Linux和Solaris軟體支援,我看大家不用,覺得好可惜。不用的原因之一,是不會用。在業界很有趣,當主管的,往往對外人說我們甚麼都會做,只是不想作;在內部,工程師多半覺得多一事不如少一事,就算會做的,有時也推說不會做。(這是當過兵的遺毒?)

因此,國內業界選擇 1. 用更低階的處理機(OpenRISC)繼續做簡單系統 2. 買ARM/MIPS現成的解決方案 3. 自行設計處理機。我可以接受前兩項,至於為何選擇第三項而不接收免費的資源,我就覺得不大合乎商業考量。(同理,前幾年搞雲端軟體產業,國內好像一定要自己做Cloud OS不可,結果OpenStack出來就沒得玩了) 。

當然,當做人才訓練,也不是件壞事。國內缺乏計算機結構和軟體工程的實務人才,需要這些練兵機會。但是,可以一面練兵,一面接收國外的高科技武器,並行不悖不這樣做,我想跟主事者好大喜功的心態有關 - 新聞裡面沒有【自創】【唯一】【第一】等字眼的話,對長官來說,就是缺乏【亮點】。殊不知,要搞懂和活用最先進的東西,也是追趕技術的重要工作,但在台灣鮮少人做。那些所謂【自創】【唯一】【第一】的東西,有些的確很厲害,但我看華而不實的居多。

回到主題,話說後來Oracle併購了SUN,覺得好東西為什麼要open? 就不再推OpenSPARC了。我的前同事們,繼續在SPARC系統上優化Oracle的資料庫和商務軟體,幫助Oracle做垂直整合、賣整套系統。我開玩笑對這一票台大電機的學長們說,你們回來幫台灣做,台灣這塊很弱,需要人才。他們說,以後再說吧。

IBM在六年前也派人來台灣推CELL多核處理機,我參加了,採購了一堆SONY PS3來教multicore programming。CELL在當時,是很有趣的處理機,可以拿來做高階的嵌入式系統。IBM急於拓展CELL的使用數量,才有辦法在市場上存活,價錢應該很好談。如果台灣能善用CELL來做些高檔電子產品,有IBM的拉抬,或許有成功機會。

可惜,沒看到有廠商願意合作。這麼先進的多核心處理機架構,要怎麼用? 要用來做甚麼產品? 只有工研院願意試試看,推了ㄧ年就推不下去了。其間我去講了幾次課,觀察到國內高階軟體人才和高階應用規劃人才的缺乏。

所以,即便免費給你好東西,沒有能力好好利用,可能就錯失了好機會。當然,你可以說還有別的機會。問題是,台灣在近年來在科技競爭和合作的中,做了哪些選擇,結果如何? 我看乏善可陳。

現在,這個OpenPower Consortium的目標跟當年大力推CELL時差不多: servers, networking, and storage devices。為什麼選現在推呢? 因為: 1. 不推的話POWER快要被Intel幹掉 2. 不推的話,等到ARM更上一層樓,就連合作夥伴都找不到了。

如果POWER能像ARM一樣,可以讓客戶用來客製化SoC,這樣能夠做到Intel x86達不到的高效率,或許是一條出路。然而,這條路是辛苦的,需要很多硬軟體的人才來做: 1. Application-system co-design and co-optimization at system planning and architectural level, 2. Heterogeneous computing infrastructure for application programming and runtime optimization,當然還有其他,所以要一個Consortium來做, 這個OpenPower Consortium包括Google, Nvidia, Mellanox Technologies, Tyan Computer Corp,陣容頗具可看性

我這裡不用傳統的【硬軟體統合設計】字眼,因為太多做hardware-software co-design的人,看的是系統底層的一小部分,看不到完整的應用。實際上,學術界或業界單獨來做這個很難,必須合作。這幾年我們跟IBM Austin Research Lab (ARL)合作,ARL正好是POWER研發的大本營。觀察IBM思索和規劃POWER的前景,是一件有趣的事。接下來觀察OpenPower Consortium要怎麼佈局,應該更有趣了。

在x86-based PC和 ARM-based Android裝置價格不斷下滑的情況,台灣的系統產業,是否看到其他能獲利的機會? 除了Intel和ARM之外,是否能把握其他的選項呢? 不要一面原地踏步一面說沒機會,機會是給有能力和志氣的人發揮的空間

我以上講的這些,比較適合那些找到專攻領域,懂得運用高階人才,懂得運用資源和工具的小新創公司。我不大期盼台灣的大公司或政府會來做這些,也不預期學術界會來搞這些,因為台灣的大環境還不到那裏 (除非有當年引進半導體產業的大氣魄)。

在現實面上,以台灣的現況,如果能集結一些有興趣做系統的人才,應該是可以在本文所提到的複數領域上創出一些事業。耕耘這些領域,不需要大資本,但是要負擔的起的高階人才成本。我這裡談的高階人才,不是有碩士或博士學位就算了,而是有資格進得去國外一流研發單位的人才。這些人才有沒有? 有一些。

有些事情以前做不到,因為時機不對。所謂【時機】者,時間點和機會都要齊備,過去當然值得參考,更重要的是分析和真正看懂歷史,以抓住現在和未來的機會。如果因為過去種種表面現象,認為歷史會重複,就說現在不可行,並不是具洞察力的看法。

我的朋友們,我不是呼籲大家都來做這個,我本身就做一堆f其他的東西。我看到這個領域的潛力,過許過分樂觀,但我說出我的觀點和觀察,供您參考。我知道別的領域也很重要,但各位如果可能的話,告訴我一些與本文相關、具有洞察力的見解,說出你對於Application-system co-design和heterogeneous computing infrastructure的認識和市場展望。

現在是分工合作的時代,(像聯發科那樣的公司,是很少見的,也是很難模仿的),這OpenPower Consortium的成員頗具可看性。各位可以想想,為何Google要在這裡? 因為他有應用需要優化。為何Nvidia要在這裡? 因為要進一步讓GPU、CPU、應用三者結合。其他幾家是做系統的,做的東西台灣公司也會做,所以他們要取得先機提高產品加值。做出來的產品當然要比Intel/ARM-based產品好用很多,才會有利基。

台灣廠要不要進去? 如果進去只是幫人家代工的話,那沒甚麼;如果能藉此偷學到點東西,那就有看頭。做Application-system co-design的計畫,自然會接觸應用面,一腳跨進門,剩下的就是想辦法偷學人家的技術,然後自立門戶。看一些大廠多年來一直甘於為人代工的心態,我不寄望在大廠身上。人才在哪裡? 或許從社群去找比較快

2013年8月6日 星期二

由六天下台的部長看政治文化

【國防部長楊念祖請辭下台... 坦承錯誤,說這篇文章是朋友代筆,當初並不曉得有這些內容!不過掛名就得概括承受。】(http://goo.gl/tRUW8u)

這只是他個人交友不慎嗎? 還是為了成名,不擇手段?

台灣大環境的結構性問題很嚴重,很多一心要向上爬的人,犧牲掉很多東西,價值觀扭曲了。要進入利益共同體,跟黑道相仿,必須納投名狀,把柄被抓到了。利益沒分好或是擋人財路,很可能搞得滿臉灰。

學術界也是如此。一堆防弊措施,嚇阻不了鑽營的小人,反而讓想做事的人,遇到重重阻礙;成大事者不拘小節,但種種小節皆可入人於罪時,要做事更難。學術界如此,其他政府單位的人事,可想而知。

就像我這兩天所說的,我早已放棄【說服與改變長官想法】的這種思維,也不認為那種【先進入體制,在其中設法改變體制】的論調可行。我們這代有很多的人才,受這些年大環境影響,小人當道,沒有充分被利用與發揮,卻也不必絕望,因為種種的事實真相,透過我們的思辨和網路的傳播,會讓年輕人思索甚麼是他們該做的,由他們決定他們的未來。

中國的隱士哲學很有趣,歷史上記載的,往往是那些隱士們在關鍵時刻作做了一般人做不了的事。亂世中,隱藏在某處不露鋒芒,韜光養晦,不遇伯樂不出來作官,如管仲、諸葛亮; 或者是堅持理想入世,雖屢屢受挫不得志,依然動心忍性,增益其所不能,以德性影響世人,著述將理念留給後人,孔孟是也。看看這些例子,知道自己的淺薄,能力之不足,不要妄想在現況做大事,卻也想從週邊能做的事盡點棉薄之力,以待來者。

聯發科技真八核

今天看了一下【聯發科技真八核( True Octa-Core)】白皮書
http://www.mediatek.com/_tw/Event/201307_TrueOctaCore/MediaTekTrueOcta-CorePositionPaper.pdf

簡短地,只有四頁,讀起來很快。內容主要是打擊對手(三星)的【假八核】設計,並且說明八核優於四核的地方。

這類東西,很適合拿來當【計算機結構】的考題。計算機結構,是資訊工程的課程裡面,比較富有工程意味的課程。複雜的系統工程中,必須考慮種種因素之間的相互影響,做出最有利的設計。這門課教的東西,是可以拿來活用的,可以解決實際問題。

以下的問題,應該也適用於延攬高級系統研發人才的面試。給你上網一個小時找參考資料,看看你是否能夠正確清楚且深入淺出地回答。我當初去SUN面試一整天,有些題目和此類似。

- 對手三星的八核解決方案,一次只能運行一半 CPU 核心,理由何在? (Hint: 看看它的架構圖,查查它的功率消耗數據)

- 其他對手,例如Qualcomm,目前只有四核方案,Apple的A6X只有雙核,理由何在? (Hint: 看看Snapdragon 800和A6X的架構圖裡面有甚麼,CPU核心的種類,除了CPU之外還有甚麼?)

- 白皮書說,現今的行動裝置使用者已經越來越不能忍受那些無法提供穩定的多工處理的產品,所以要用八核心。請問,市面上的筆電,為什麼大部分只有雙核心? 穩定的多工處理的關鍵在哪裡? 作業系統有哪些地方要和計算機結構搭配的?

- 白皮書上列舉了ㄧ些能發揮八核功能的應用,能不能用其他方式解決呢? 試申論之。(Hint: GPU, ASIP)

- 大多數行動裝置的應用,和桌機筆電的應用,有何不同? 請以此觀點探討為何聯發科認為八核有其優點。(Hint: 目前行動裝置的CPU核心數有多有少,應用開發者的根據為何? 用大核心跑運算需求小的程式,是否殺雞用牛刀?)

有想法,有心得的話,這些都可做研究、寫論文。台灣終於在計算機結構設計上了國際舞台,這是我八年前回國時認為國內應該要做的,因緣際會,在聯發科的產品和研發企圖心上看到曙光,同志仍需努力。

歡迎提供題目和解答  :)

2013年8月5日 星期一

公民意識

昨天家父看新聞時提到有人說凱道二十五萬人背後恐怕有人操弄,說這1985聯盟不知道是什麼來頭?

我說,什麼來頭不重要,重要的是,很多人是經過自己理智和良心的判斷,自發地到場聲援,可能連1985聯盟是誰都不在乎。

我觀察一些老一輩的人,由於當年的時空背景,多半對於權力關係很敏感。你說是自發,基於理念,他們將信就疑。大時代悲劇的遺毒,很難根除,有些人趨炎附勢,有好處就撈,自掃門前雪,個人顧性命,臺灣公民意識薄弱,跟這些想法不無關係。

「你能到台大教書,一定有背景或關係」,我說沒有,人家不信,我也懶得多解釋。我知道我沒背景、不願用關係,會被人看不起,孤立,甚至打壓排擠,但是自食其力反而清靜踏實,除了辛苦點,但還算過得去。

時至今日,我所唾棄的,是那些沒本事領導,霸佔住位置和資源,卻又做不了事的人。我所反思的是,自己是否對得起自己所得的資源?是否能避免受大環境的污染被自己所唾棄的系統同化?在凱道的人們,是否也如此想,能時常善護此念?

我們周圍的確充斥著一些靠逢迎拍馬而上的人,所以改革推不動。公民意識,如果僅止於保護個人權益和爭取個人資源,那大概也改不多。說白話,只要大多數人心裡面還是羨慕那些走捷徑升官發財住豪宅開名車的人,或者聰明人都選擇捧著有保障的金飯碗過安逸的日子的話,沒有提昇公德的話,那社會大概就在這裡原地踏步。成熟的公民意識,才是我心中真正可貴的臺灣文化。

不敢負責、欺下瞞上、腦殘的手下

政府處事的荒腔走板,又添一例。第三份死亡證明書,死因改寫「他殺」,但死亡地點寫的是「自宅」?(http://www.ettoday.net/news/20130805/251041.htm)

有這種平常不敢負責、只會欺下瞞上、一做事就腦殘的手下,馬先生,您還需要敵人來讓您民意崩盤嗎? 這整件事情,會小事化大,就是政府裡有一大堆這種人。您口口聲聲關懷人民,應該先從管好自己的手下開始。

總統講一聲,證明書當晚就開出來,這是手下不敢負責。開出來的東西牛頭不對馬嘴,也沒有好好給一個說法,是腦殘。整個事件,到目前還是欺上瞞下,沒有真相。

我們在抗議的同時,捫心自問,是否下決心讓自己不要成為這種欺下瞞上、不會做事的人呢? 如果我沒有覺察到自己平時偶爾也如此,甚至整個社會風氣也這樣,那抗甚麼議呢?

看遠一點,八月三日的公民運動中,我希望散播的是改變社會風氣的種子。政府回應也好,不回應也罷,能做的改變有限。年輕人是否有肩膀、有能力、能分辨是非、勇於創新和改變不合理的現況?

別人怎麼看你們,不是最重要的;你們自己怎麼看自己,才是重點。沒有這樣的自覺,能改變的也有限。還是那句老話,改變,從自己做起。

這些話,我不想跟那些老人家說了,所謂老狗學不了新把戲,只有頭腦和體力還年輕的朋友,還有能力學習和改變。

2013年8月2日 星期五

CUDA for ARM

心血來潮,順便來出個作業好了

適用科目: 高等計算機結構、平行計算、系統研究專題

題目: CUDA for ARM

NVidia剛出了可支援ARM系統的CUDA 5.5,參考:
https://developer.nvidia.com/content/cuda-arm-platforms-now-available
https://developer.nvidia.com/cuda-downloads#source=pr

現在推出CUDA for ARM,NVidia想要做甚麼呢? 參考:
http://www.theregister.co.uk/2013/06/18/nvidia_cuda_arm_openacc/

問題1: 如果計算都在 GPU上做,CPU用Intel x86還是ARM是不是沒多大差別? (提示: 請考慮既有、現有與未來的計算環境、程式設計師、市佔率等因素,分別與綜合討論效能、成本、電力等面相。)

問題2: 你覺得CUDA與OpenCL相比,將來鹿死誰手?