2016年7月23日

[python] 限制 subprocess 的 CPU & memory 使用量

暑假到了,又一批要進入研究所的新生要來報到,由於實驗室的傳統是所有新生都要接受 programming training project,而我們實驗室的 training 是老闆會幾篇經典的論文要新生實做出來,雖然標準年年都會調整,不過今年老闆明確的說他要檢查新生寫的程式,然後通過的標準除了要檢驗結果的正確性,也要檢查執行時間 & 記憶體使用量。而這次的 training project 老闆指定其中一題要把我現在做的東西切割一小塊出來讓他們實做看看,所以這次我必須要寫一個 verifier 去做自動化的驗證

2016年7月16日

[隨筆] 學術與實務間的巨大差異

做了幾年研究,從碩班做的單一面項的研究,到現在博班做一個領域的研究,雖然還不敢說已經能不負眾望的承接 "博士" 這個稱呼,但確實有比較了解所謂做研究這檔事。即便是對於有經歷過完整碩士研究的人,我想我還是有更深一層的體認的。不過我想這也是正常的,畢竟對於只有兩年,其中有大約一年的心力幾乎都要投入修課所以只剩一年的時間,的碩士研究生來說,一年內要能完整做出一個學術研究,要嘛題目很單純,要嘛老闆很仁慈,不然就是運氣不錯很快的就找出突破點,如果不是運氣那通常只有在該領域已經浸淫多年有些心得的人才有可能辦得到,否則老實說一年內要能做出有突破性的學術研究說實在有點短。所以近幾年 (以前我就不知道了) 碩士研究我覺得教授們大部分都是把重心放在訓練學生如何做一個學術研究,至於成果應該只要別太糟都沒事的,畢竟只是來混碩士學歷的學生很多

通常在碩士訓練中,老闆都會給一個研究方向讓學生找出自己想做的題目,有的甚至會直接指定題目 (恩,我知道有的教授會裝死,畢竟我認識的教授中就有這種 XD)。如果最後題目是自己決定的,而且老闆也有用心指導的話,姑且不論題目本身是否具有實務上的價值,那或多或少也會經歷過一段找出具有學術研究價值的研究題目。不過當過研究生的人一定知道,就算沒當過研究生的可能也有聽過:很多研究其實一文不值 (如果是碩士論文那機率更高 XD)。舉凡像是論文中提出來的論點是假議題到實務上根本不可行 ... 等等,一篇論文就算能被刊在優質期刊/會議上,最後經不起檢驗的也所在多有,特別是審稿者不見得熟悉投稿者所做的方向 (想必有很多研究生都曾經幫教授審過論文吧 XD)。當然,如果做得是純理論的研究就沒道理拿實務上的困境來檢驗,不過因為我自己的研究領域是 EDA,不考慮現實的可行性實在說不過去,所以偶而會對於為了發論文而做的研究感到不能諒解。當然,有些是為了畢業或是為了升等之類的現實困境而不得不為之,但也會為此感到悲哀。

比起其他研究生,我比較幸運的地方碩班與博班期間都接了業界計劃,而且都是具有學術價值且是有實務上困境的題目。不過也正因此會發現有相當大量的學術論文一旦搬到實務上來其實都很不堪一擊。原因其實也不難猜,學術論文對於實驗結果要求的是證明提出來的方法是確實有效的,所以只要能做到這點就是個成功的實驗。而讓學術論文不堪一擊的實務上困境有很大因素來自於學術研究上不會想去處理的細節,也可以說是就算做了也不會提升論文價值的麻煩困擾。這類因素輕則降低實驗宣稱的成效 (但不減低學術價值,因為可能只是一些不常出現的特例,也沒有討論的必要性),重則我認為是能從根本上否定一篇論文的。當然有時是來自於資源的問題,畢竟有些實務上的困境,特別是做 EDA 這行的,沒有業界實際的經驗與資源輔助,只靠學界自身的資源要做出能同時兼具學術價值與實務價值的研究是真的有難度的。比方說先進製程相關的研究有一大堆內容是業界機密,如果不知道那些機密還真不會知道自己做的研究到底有沒有用 (不過這幾年發現有接露出來的還只是冰山的一角,還有一大堆不能說的秘密 XD)。這也是很多人問我未來是否要當教授時我一律回應我要先去業界打滾幾年再說,畢竟老是待在象牙塔裡對於從事這領域來說實在不是件好事。

不過這幾年最有感的地方應該還是投論文吧,特別是當你發現自己辛苦了老半天也用了業界的資料做了套應該還滿完整的實驗,卻比不上一篇很會說但沒啥參考價值的論文時,那沮喪感確實是滿大的。但最近靜下心來想根本原因何在時,我想除了我自認能用 "過往的相似研究均無法解決一個實務上的困境" 來說服審稿者外,我發現會議論文的審稿者其實更喜歡看到一些新穎的題材,我想有部分原因應該跟會議中可以跟發表者互相討論這類新穎的題材,順便從中找出一些做研究的靈感有關,不過這點確實提醒了我行銷故事的重要性。

 下一個研究題目已經開始了,但是望著寥寥無幾能用的參考論文,說實在的還是會覺得相當無力阿。有些論文即便方法沒有參考價值,提出來的問題與論點確實有其參考價值,但也有為數不少根據已知的問題提出的新方法看似比舊方法好,但實際要套用就發現一大堆問題 (攤)