從雲端加速技術看台灣高階人才培育問題#3:回顧個人學習歷程/洪士灝
在前面兩篇談了GPU/FPGA加速雲端的人才發展相關議題後,這篇來回顧一下筆者自己的學習歷程。
這兩年,Intel、Altera、NVIDIA、AMD等外商公司不約而同來找過我,討論如何合作培養能夠做這些工作的人才:他們知道雲端加速技術,人才是最重要的關鍵,有人才就有機會。
有幾家新創公司和本土系統廠,也與我們共同探索GPU/FPGA的技術與應用;不過總是希望我們一下子就做出成果,好對老闆和股東交代。
從這些與業界的互動中,我發現很多不是真正懂這個領域的人,以為訓練人才和開發應用很容易。
我教「平行與分散式程式設計」,總得給學生一些信心,在一個學期的課程中把學生帶進門;但我總是要學生知道:這件事情是「易學難精」的,要做出期末專題,才能學習到真正的東西。但是有些人總是不相信,或是聽進去了,還是不知道有多難精通。
所以,接下來,我來說說故事,一面敘述個人的學習歷程,一面記錄相關的見聞。
平行計算與優化:解決重要大型問題時,總嫌電腦慢
首先各位讀者要知道,無論是GPU或是FPGA,能夠加速雲端應用的基本原理,都是平行計算(Parallel Computing)。
雖然平行計算的概念簡單到不行,但是實際運作上困難重重。好比多僱用一些人手一起做事,理論上應該能快點完成工作,但實際上往往並非如此,搞不好還會拖慢速度。
我在念大學時(1985~1989)之所以平行計算這個題目,主要是嫌一般的電腦速度太慢,做不出好的人工智慧應用。我在讀大學時修過幾門人工智慧的課,也學過類神經網路,眼見當年一般的電腦速度太慢,豪門大戶紛紛使用超級電腦和平行計算,來打造人工智慧。
平行計算的概念非常簡單,但實際運作困難重重,就像許多人一起做一件事,理論上應該能快點完成,實際上卻可能更慢。
例如,與著名的MIT人工智慧實驗室相關的Thinking Machines 、日本以國家力量進行人工智慧研究用的第五代電腦計畫,在當時都是令我非常羨慕的技術。
然而當時這些研究人員對於平行計算的技術過度樂觀,所以這些計畫一個接著一個黯然消逝;不過也留下寶貴的經驗與教訓:打造超級平行電腦固然不容易,但是要在這些電腦上寫程式做高效率的計算,更是難上加難。
筆者於1992年到密西根大學(University of Michigan)研究平行計算的時候,可說是躬逢其盛。我的博士論文題目是「最佳化平行計算應用」(Optimizing Parallel Applications),探討的就是在進行平行計算時,如何分析軟硬體之間的互動,找到阻礙效能提升的瓶頸,再對症下藥,追求良好的效能。
我們嘗試在擁有256個處理器的超級電腦上,將福特汽車公司的汽車碰撞模擬程式加速運作,希望把原本需要一週以上才能獲得結果的計算過程縮短到半天以內,所以汽車設計工程師可以在下班前放程式下去跑,隔天早上就可以獲得結果。
除了汽車碰撞之外,我們還設法加速陣列天線設計所需的電磁場模擬計算、以及海洋環境的模擬等應用。我們和不同的應用開發者和使用者互動,每個應用都有其特色和各自的問題,所以常常要見招拆招。
為了要快速解決問題,我研究效能分析和優化的技術,特別著重在發展成工具,讓類似的問題重複出現時可快速迎刃而解,這樣我才有時間學習和研究新的問題(或是多一些時間睡覺和玩樂)。
平行計算是門易學難精的技藝
因此我說,平行計算是一個「易學難精」的研究領域。我在資源豐富的環境以及明師指導下,潛心研究三年後,才對這個研究議題有所掌握;再經過兩年才豁然開朗,最後花了半年時間,一口氣完成博士論文。
所以我覺得,光是修一兩門課程,只能略窺平行計算的門道而已。當然,也可能是我資質不佳,才需要這麼久的時間來學習。