訂 閱 本 報 Subscribe »
歷 史 報 區 History»
 
 INDEX »
企業參訪 
接近產業現狀的第一線
黃麗妃
系友會理事長周行健 
以愛為名化為行動 
黃麗妃
暑期三日企業參訪 
行程緊湊收穫滿滿
張德芯、江宇勝、崔
余奇安、吳尚霖、李侑澄
暑期三日企業參訪 
工業4.0為主軸
何廣雷、吳星耀、戴晞昀
高稚然、李雨融、邱學亮

瑞健參訪 團隊合作
創造真正雙贏

碩一生 鄭廷裕
創新設計模擬國際挑戰賽
獲獎有感
大四生 徐阡晏
加拿大蒙特婁生物材料
國際研討會心得
系友 張宜婷
四十年重聚 
再續好情誼
系友 楊申語教授
台積研替甘苦談
系友 周東陞
心懷感恩 
周遭處處是貴人
系友 張復龍
可重現的虛擬實務
系友 陳永昱
可靠度與品質設計
國際研討會有感
吳文方教授
創造力
陳明新教授

周行健系友接任台大
機械系系友會理事長

系辦公室

傑出系友頒獎1959級王正平、1976級陳杰良

系辦公室
傑出校友劉錦川院士
拜訪本系
系辦公室

高中生參訪本系 滿載而歸

系辦公室
全校運動會 
力與美展現
系辦公室
系主任的話
系主任 楊燿州
機械系風雲榜
系辦公室

歡迎系友投稿或提供意見
連絡方式:

meoffice@ntu.edu.tw

點閱人數 カウンター

 

可重現的虛擬實務

文、圖◎2000級學士、2002級碩士系友 陳永昱

計算力學 (computationalmechanics) 是一種不受實驗室限制,完全控制變因,求解任意組態問題的方法。藉由開發電子計算機上的軟體,綜合力學、數學、電腦科學 (computerscience),我們可以解開由統御方程式連起的複雜關係,展現顯微鏡也看不見的現象。對嚮往虛擬世界的人來說,計算力學具有無比魅力。直到如今,仍在為我的知性生活提供活力的來源。

█ 作者在姬路城。

悠遊於計算力學應用領域
台灣大學機械工程學系是帶領我接觸計算力學的地方。2002年,我自機械所畢業之後,進入中山科學研究院執行氣體動力學的計算模擬。其後前往美國俄亥俄州立大學 (Ohio State University) ,研習時空守恆法 (the space-time conservation element and solution Element method) ,應用於研究可壓縮流與複雜固體內的行進波。學無止境,並且愈是學習,愈能明白諸計算應用間的共通之處。取得博士學位之後,我回台加入台灣積體電路公司 (TSMC),進行光波的計算模擬。後來加入新思科技 (Synopsys),開發二維幾何的運算平台與應用。我在數種相連於計算力學的應用領域裡尋找技術挑戰。很幸運地,總是找到難解的問題。作為工程人,或許沒有比這更愉快的事情了。
計算力學這頂帽子可寬可窄。只要使用電子計算機求解力學的統御方程式,都在範疇之內。為了有效解答問題,我們需要數種不同領域的知識。相較於長時間累積而成的基礎課目,這類學習需要更多的摸索,也帶來特別的刺激。為了利用計算機求解,我們需要計算幾何(computationalgeometry)來處理離散化空間;為了正確模擬物理現象,我們開發數值方法;為了得到計算的結果,我們鍛鍊軟體開發技能;因為計算量龐大,所開發的軟體要執著於高效能計算(high-performancecomputing)。這些只是所有問題的一部分。從事計算力學的計算科學家(computationalscientists),得把它們全都解決,才能作成可靠的模擬系統。

軟體開發像詩文創作
在所有計算科學 (computationalsciences) 所需的知識和技術中,軟體工程和機械工程的訓練傳統差別最大,或許也最難習得。機械工程的訓練來自應用物理,但軟體開發無關物理。實務中不可或缺的構建系統 (buildsystem)、版本控制、程式碼審閱 (code review)、自動化測試、重構 (refactor) 等,難在機械系的課程中訓練。在不熟習軟體技能的情況下開發計算力學程式,好比在解大學物理問題的同時訓練讀書寫字。專案或許可以勉強完成,但無法掌握其可重現性 (reproducibility)。無法重現的計算結果,等於被證偽。
計算力學研究成果的可重現性若不足,會非常可惜。軟體不同於硬體,在開發完成之後,雖然仍需大量資源進行維護工作,但產品的生產成本幾乎為零。一套驗證得當的軟體,銷售給一個客戶,和銷售給十個客戶,同樣沒有物質上的耗費。從把研究工作轉換為工業產品的角度來看,軟體是極便利的平台。但這便利的前題,是在軟體開發的過程中踏實地習練軟體工程,否則產品化的過程仍需耗費過多的資源 。
軟體開發的學用落差,不為機械系所獨有。軟體業界很清楚,資訊系所的課程在訓練工程實務技能時,效果也不盡理想。這是因為軟體進步的速度太快,難把開發時所需的知識系統化之後,再行傳授。也不過數年之前,高速伺服器佈署的標準程序都是使用資料中心的實體伺服器(baremetal)。短短時間,已經從實體機器演進到虛擬機器,再演進到容器(container) 技術。大學課程不可能(也不應該)在這麼短的時間內把這些快速變化的技術整理成課程。
針對計算力學的軟體工程訓練,或許和針對其它目的的軟體工程訓練一樣,應該採取不同於一般大學課程的方式進行。軟體雖然被歸為工業 (industry),但無法不採取手工業(craft) 的作業模式。所有重要的程式,都是程式員一行一行操作電腦寫出來的。程式員與其說是工程師,其實更像作家;同一個題目給五個程式員開發,至少出現五種寫法,是正常而可接受的。所以,軟體工程雖然也和其它工程一樣強調可重複的結果,但它依靠的不是自然律,而是人性。
軟體開發有許多方法論。目前看來,最適合計算科學研究的方法之一,是以開放原始碼(opensource;簡稱開源) 的模式,把計算軟體的開發團隊社群化,並利用開源工具一并處理軟體開發工作與研究工作。開源軟體開發與一般的軟體開發工作沒有本質上的不同。最大的差別在於,開源模式的工作流程以原始碼為中心,最小化開發者與使用者之間的差異。這個概念被認為能同時提高生產力與成品品質。即使是封閉原始碼(closesource)軟體,也會在限縮的範圍內採取類似作法。
在通用的科學軟體開發上,歷史悠久的netlib上的諸多程式庫、晚近的NumPy、SciPy、Pandas、Jupyter、Matplotlib、Eigen等,是開源模式諸多成功例證中的一小部分。這些用途廣泛的工具由其使用者自主維護,確保系統的功能、效能,與相容性,並支援了極多的計算科學研究。
我在接觸計算力學不久之後就開始接觸開放原始碼社群。我相信開放原始碼模式會為計算力學帶來很大的幫助,於是在2012年的時候,開始在台灣辦理第一次的Python程式語言年會(PyConTaiwan)。Python是科學界使用得最多的程式語言。在無論資料處理、分析、系統管理,以至於高效能計算中,Python都扮演重要的角色。及至2016年,PyConTaiwan 從260位參加者成長到700位以上,全台各地有七個針對Python的常態研習聚會(meetup)。更重要的是,我們有許多數學、科學,與工程背景的實踐者,見證Python與開源方法對數值計算的貢獻。

█ 姬路城下的好古園。

社群交流學習同好切磋精進
與開源社群間的相互提攜,能為從事力學或任何計算工作的人提供漸進式的管道,導入計算所需的軟體開發技能。社群不取傳統由講台到書桌的課程模式,改以分享、研討與習練,在迭代中進步。迭代是軟體開發的自然模式,這種模式不一定適合基礎穩固的學科,但能有效地把軟體開發的訓練混入其它的領域。若對計算科學有興趣而想了解專業軟體開發,最簡單直接的方法,就是從參與附近的Python社群活動開始。藉由參加在這類的技術聚會認識同儕以及經驗者,並透過討論加速摸索的過程。在此同時,主動去了解對學習或研究有幫助的開源軟體,在社群中與同好一起參與開發。前面提到的幾個常用的軟體系統都是加入開發的好標的。系上也有老師從事計算流體力學、有限元素力學模擬、機器學習、控制系統等等的軟體開發,都是極好的資源。利用開源的工具、以開源的模式習練軟體開發實務,是入門一直到進深技術的最佳手段。操練技術和追求學問一樣,沒有捷徑,困難的路才是容易的。
開發計算力學軟體所需要的軟體工程能力,和開發其它種類軟體所需要的能力是一樣的,只是學習力學需要遠超過學習一般資訊應用的精力。實務上很少要求程式員學習力學或是其它科學,而會讓程式員與科學家或工程師合作開發,或者直接訓練科學家與工程師學習程式設計。未來的世界必然持續追求更複雜的計算。與現在風行的資料科學相比,或許力學計算仍然過於昂貴,不是人人負擔得起的技術。但摩爾定律沒有完全停止,誰也不敢說翻轉點不會明年就到來。無論哪個領域,下工夫在專業軟體開發上的人,一定會有很好的事業發展。
雖然計算科學與軟體開發間的調合至今難解,但能把宇宙放入虛擬世界,看見其它方法看不見的東西,讓人無比地興奮。我享受為了追求這些目標所下的工夫。希望機械系繼續引領同時樂於力學與軟體的工程人,為世界展現更多不可視之物。

作者簡介-------------------------------------------------------------------------------------
陳永昱,2000年台大機械學士畢、2002年台大機械碩士畢,後至美國俄亥俄州立大學取得博士學位,目前任職於新思科技 (Synopsys),擔任研發機械工程師。


 

地址:台灣台北市106 羅斯福路四段1號工學院綜合大樓508室
電話:(02)3366-2744                  傳真:(02)2363-1755
mail:meoffice@ntu.edu.tw

 

Department of Mechanical Engineering, National Taiwan University