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


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

2013年1月15日 星期二

Aaron Swartz 雖千萬人,吾往矣

姑且不論『犯罪』與否,Aaron Swartz做到『雖千萬人,吾往矣』,即使選擇自縊,也達到喚醒世人的作用,短短的人生,卻是轟轟烈烈,何等氣魄?

參考閱讀:
擁有這樣『人才』的國家社會,沒有辦法好好運用他的才能,是何等悲哀?是哪裡出問題?在惋惜之餘,我個人悼念這位英雄的方式,是去思索這整個事件,包括以下的問題:
  • 法律制度的存在,是為了保障人民,促進發展,在這事件中,法律保障了誰?促進了什麼?
  • 知識產業這塊大餅誰吃最多?知識經濟的掌控權在誰手上?當資訊科技已經大幅降低資訊管理與分享的成本的時候,哪些人仍然要維持他們的既得利益?
  • 學術界(以MIT為例)如何自處,能否置身事外?
  • 這件個案對於台灣現況有什麼啓示?
  • 對於那些對我說想要徵求『A類人才』的公司,我建議你們重新思考一下,你們是否有能力好好運用這種人才?
我想,這些問題是身為知識分子可以(或說應該)去探索的問題,尤其是年輕學子,或許可以多想想。
 
Aaron Swartz 的家人想了很多,以下Aaron Swartz家人的公開聲明,譴責「司法系統大砲打小鳥」「MIT校方不挺身而出」:
 
Aaron’s death is not simply a personal tragedy. It is the product of a criminal justice system rife with intimidation and prosecutorial overreach. Decisions made by officials in the Massachusetts U.S. Attorney’s office and at MIT contributed to his death. The US Attorney’s office pursued an exceptionally harsh array of charges, carrying potentially over 30 years in prison, to punish an alleged crime that had no victims. Meanwhile, unlike JSTOR, MIT refused to stand up for Aaron and its own community’s most cherished principles.
 
唉,這種制度殺人的事情,在台灣是常態,該從何談起?不如不談。

2013年1月11日 星期五

談海量資料和資訊系統

繼雲端運算之後,「海量資料分析」(Big Data Analytics)成為學術界和科技界最新的「潮字」(buzz word)。海量資料分析為什麼這麼受矚目呢?簡單地說,是因為人類現在有「能力」蒐集、傳送、儲存、處理多得不得了的資料,如果能夠好好利用這個能力,可能會產生前所未有的知識與應用,讓人腦和電腦變得更聰明。
 
Google藉由搜尋引擎、Gmail、Android還有各式各樣的雲端服務,收集到許多的個人公開與非公開資料。Google除了可以把搜尋做好之外,還可以利用這些龐大的資料和他龐大的資訊系統做很多事情。Google不是第一個做搜尋引擎的,可是他能成功的重要原因之一,是因為他能建夠出便宜好用的資訊系統。
 
Facebook更是後來居上,社群網站這個從BBS時代就有的舊東西,被Facebook經營成功的重要原因之一,因為在最佳的時刻搭上了雲端運算的列車。
 
IBM原本在雲端時代可能成為瀕臨絕種的恐龍,發現雲端運算技術不只是可以用在大眾的雲端服務(Public Cloud),企業和政府這種擁有非常多私密資料的機關,也需要處理與日俱增的資料。甚至,在非常深入地整理資料和運用資料之後,可以做出前無古人的應用。例如IBM引以為傲的Watson系統,比人類回答問題更快更精準,幕後的技術,可以稱之為深層的海量資料分析(Deep Big Data Analytics)。
 
聽起來,海量資料分析應該比雲端更容易懂,不像雲端那麼炫和玄。比起這幾年許多人東比西指地談「雲端服務」,要來得收斂一些,有比較具體一些的定義,但是入門的難度也大幅提高。
 
話說,為什麼現在大家會來談海量資料分析?難道以前沒有嗎?
 
其實,在每個時代,總會有一些人致力於利用當時擁有的運算技術去解決一些大問題,這些領域通常稱之為「高效能運算」( High-Performance Computing, HPC)。有錢的地方,例如歐美的國家實驗室,台灣的氣象局,大陸的中科院,會購買超級電腦(Supercomputer)來解決這些問題,或者當成炫耀國力的展示。這些超級電腦,擁有很高的運算能力,處理和分析的是當時的海量資料,不過做的多半是科學和工程的計算(包含國防用途)。
 
這些關心高效能運算的人,畢竟是少數。靠著賣超級電腦,很難賺錢過日子,所以,沒有一家只賣超級電腦而不倒的公司。IBM這家老店,如果不轉型,恐怕也很難維持榮景。幸好,IBM畢竟是人才濟濟,把他們用於高效能運算研發的人才、用於幫大企業的營運資訊系統的人才,集結起來從事商用版的高效能運算,頗為成功,也就是我們現在看到Watson系統和IBM喊出的智慧運算(Smart Computing)。
 
整體來看,資訊系統技術的突破創新(disruptive Innovation),的確會改變雲端的基礎架構和應用,例如高速的智慧手機、便宜的伺服器和雲端空間、高速的LTE網路等等。不過,所謂的改變,根本上,也不過就是某個應用的資料在「運算資源(Computer)」「儲存空間(Storage)」「網路(Network)」上的流動所需的時間比例變了。

但是,比例變了,這個應用的最佳處理方式就跟著變了,其實跟生意人打的算盤,和經理人規劃公司營運的方式,是一樣的道理。除了靠算計之外,生意人靠眼光,經理人靠經驗,電腦工程師靠工具。某個東西變了,我們就有機會把同一種應用以更好的方式建構出來,或者是把原來沒辦法做完的應用及時完成。所以,我們在過去幾十年,其實不斷在重複一些東西。雲端裡,有很多幾十年前的東西,又復活跑出來。

用「電腦來設計電腦」,是電腦之所以進步神速的重要原因。不斷進步的電腦硬體和軟體的設計工具和日積月累的智慧財產(軟體庫和硬體庫),到底會進化到何時方休?這是個有趣的問題。雖然原理沒變,但複雜度隨著資料的海量化而增大。人類設計電腦系統和應用的能力,受到「設計工具」和「對應用主題的了解」的限制,就算是再聰明的人,也很難突破這些限制。
 
因此我想,在海量資料的時代,要做好軟體和系統設計來進行海量資料分析,我們需要強化兩種基礎:
  1. 更強大的設計工具:能夠幫助開發者快速建構出優質硬體和軟體系統的工具(Tools)和方法(Methodologies)。

    有學生說,光是單看硬體,或是單看軟體,就已經很複雜了,我們要如何又看硬體又看軟體呢?關鍵就在工具和方法。

    有趣的是,傳統資訊系統是一般來說是一層一層疊上去的(階層式,hierarchical),在每個層次都必須提供有效的工具和方法。然而,面對海量資料,傳統階層式的作法,把開發工作分為:應用開發、中介軟體、系統軟體、系統架構、硬體設計,可能沒有辦法有效率地解決問題,但是要找到能夠通曉多層次的人才,又是非常難的事情,所以如果能夠研究出跨層次的工具和方法,就可已是很好的貢獻。

    因此,我希望我的學生能夠跨層次廣泛涉獵(學得快),精通每個層次(學得好),而且能夠貫串不同層次(學得巧),創新研究工具和方法(學得妙)。
  2. 對應用領域更了解:能夠更透徹理解各個重要應用領域的特性。

    有人看到Google搞海量資料,以為海量資料就是搜尋和存放資料;有人看到Facebook搞海量資料,以為海量資料就是社群網路行為的分析;如果你去看IBM搞海量資料,定義和做法又是有很大的不同。不管是哪一個,對於重要領域理解透徹的專家,決定了這些海量資料能夠帶我們到哪裡去。

    然而,這些專家,來自於四面八方,不再是傳統資訊學門所能延伸觸及的。以前,資訊工程師花一些時間去學習特定的專業知識,很可能就可以寫出一套應用;海量資料的應用,必須有領域專家(Domain Experts)的介入,甚至主導,才不會產生一些膚淺的應用。

    幾十年來,高效能計算應用的開發就是這樣性質的工作,那些在超級電腦中心工作的領域專家,比資訊專家還多,所以跨領域的團隊合作是極其重要的。在IBM的例子裡,我們可以看到領域專家的重要性。想搞海量資料的資訊人,要學習與領域專家合作,溝通技巧很重要。
然而,我們目前的工具、方法和領域專家還遠遠不足以讓我們有效且快速地開發海量資料分析應用。我看到一篇UC Berkeley的短文,標題寫著: We don't know enough to make a big data benchmark suite,只有兩頁,不妨看看,可以看看我們還缺些什麼東西。總之,可以做的研究多得很!

2013年1月4日 星期五

談Intel的60核心協同處理器Xeon Phi

最近用『說』的方式,發表了一些看法,感覺上還滿方便的。ITHome的主編來訪問我,聊個半小時,講的東西就被記錄下來,比自己打字還快 :)

我講的東西被刊登在這篇報導裡:
Intel推60核心協同處理器Xeon Phi挑戰GPU繪圖卡
http://www.ithome.com.tw/itadm/article.php?c=77741&s=1

有些話不便在採訪中講得太重,免得被斷章取義,在這裡補充一下,在古文裡,這叫做『注』『釋』或『註釋』 :)

以下原文摘要用斜體字,註釋用藍字或紅字。開始的那幾段跟我沒有關係,是編輯自己整理的,或是訪問其他人的,後面那幾段才是我講的,算是壓軸嗎?

每年公布兩次的全球超級電腦5百強排名,不只是各國展現運算國力的排名,從排名中也可以看出高效能運算技術的新趨勢。… 但是,這份排名中,也有6臺超級電腦採用了Intel剛推出的第一款60核心協同處理器Xeon Phi,其中包括了全球超級電腦排名第七,位於德州先進運算中心的Stampede超級電腦,這也是第一部採用Xeon Phi協同處理器的超級電腦。 … Xeon Phi的首度登場,超級電腦除了利用GPU來提高運算效能的作法之外,又有了新選擇。 

XEON Phi登場,為什麼選超級電腦作為最初的戰場?當然是有理由的。

1 Pflops相當於每秒可以執行1,000兆次的數學浮點運算。而可以提供17.59Pflops運算效能的Titan超級電腦有多快?每個人每秒若能計算一次浮點運算,全臺灣2,300萬人需連續計算24年所累積的計算量,就相當於Titan用1秒鐘所完成的計算量。

這段實在是有講等於沒講,現在很多地方都好像有這種弱智的對話。

因為Nvidia早在1999年就推出第一款GPU繪圖卡,2006年時更發表了GPU的開發框架CUDA(Compute Unified Device Architecture),協助開發人員透過C語言或Fortran語言來運用GPU的平行運算核心,2008年更推出專供高效能運算用的GPU繪圖卡後,不只超級電腦,許多HPC高運算伺服器也紛紛搭載Nvidia的GPU繪圖卡,來提高運算效能。 … 不過,Nvidia GPU繪圖卡在平行運算領域的地位,開始受到了挑戰。英特爾推出了Xeon Phi協同處理器來對抗Nvidia的GPU。 

CUDA是比較早出來的東西,市場佔有率高。不算非常好用,但是硬體的性能價錢比很高,所以很適合用來建超級電腦,反正超級電腦的使用者已經很習慣花很多時間去開發和調校城市了。(我博士論文就是搞這個的)。

英特爾推出超多核心架構的Xeon Phi協同處理器5110P,採用PCIe介面卡設計,可作為HPC的運算加速卡,單顆處理器內建了60個運算核心,運算效能媲美1臺1997年的超級電腦。 … 這款處理器採用22奈米製程,時脈1.053GHz,採用常見的PCIe介面卡設計,並搭配被動式散熱機制,功耗為225瓦,可搭載8GB的GDDR5記憶體。 … 除了5110P之外,另外還有還將推出一款更低價的Xeon Phi 3100協同處理器,可支援6GB記憶體,同樣採用22奈米製程,但熱設計功耗較高,達到300瓦特,預定明年上半年上市,售價將會低於2,000 美元。

2000美元的處理機貴嗎?新東西當然貴,如果量夠多的話,價格會降下來的。問題是,銷售量有沒有辦法衝高?這是雞生蛋 蛋生雞的問題。Intel在個人電腦的市場上呼風喚雨,憑藉的就是市佔率,現在豬羊變色,Intel是後來者,要靠什麼打江山?


英特爾亞太區暨大中華區高效能運算解決方案架構師Scott David表示,因為Xeon Phi協同處理器延續了Xeon的x86架構,所以,可以沿用平行處理常用的開發語言如C、C++和Fortran語言,也能沿用原有的平行運算模型,所以,在原有Xeon E5處理器環境中執行的程式碼,略作調整並重新編譯,也可以在新的Xeon Phi處理器執行環境中,不需要重新改寫程式碼,就可以提高效能。

Intel官方的說法,就是靠這個Intel最厲害的市佔率,叫大家不要學什麼CUDA了,用原本寫給多核心Intel (x86)電腦的方法就對了!真的嗎?廠商講的話不能盡信,要仔細檢視喔,所以我小小吐槽一下。

不過,臺灣大學大資工系副教授洪士灝認為,雖然可以執行,但要充分發揮Xeon Phi的運算效能,還是得費心調校平行運算的程式。

『費心調校』這四個字,說得很模糊,但是內行的人就聽得懂。這不是普通人會做的事,剛好可以拿來訓練我的學生!

若用核心數來比較,Nvidia的GPU繪圖卡擁有高達2千多個運算核心,而Xeon Phi介面卡只搭載一顆Xeon Phi,只有60核心。看起來GPU的核心數比Xeon Phi多很多,但是,洪士灝認為,Nvidia的GPU繪圖卡和Xeon Phi介面卡,同樣都是可以用來加速HPC平行運算的效能,但兩者適合的運算架構截然不同,對於平行運算的加速效果,不一定能放在同一個標準上比較。

不一定能放在同一個標準上比較,那要怎麼比較?請來修計算機結構。接下來這幾段是我對採訪人員免費上的課:

臺灣大學大資工系副教授洪士灝表示,GPU類似SIMD架構,而Xeon Phi則是MIMD架構,兩者的運算架構截然不同,擅長的平行運算任務也不同。HPC常見高效能運算方式有兩種,第一種是資料平行化的運算方式,也就是Data Parallel,也可稱為Stream計算。這種作法適合處理大量資料,資料就像水流一樣持續提供給處理器,處理器執行完運算指令後,處理過的資料不需保存在GPU加速卡中,而是繼續提供下一筆資料給處理器,就像水流一樣持續流動。洪士灝表示,GPU擅長這種運算方式,運算量不大,也不用保留資料,處理完就送走。 


另外一種運算方式則是要對同一批資料反覆進行大量運算。例如汽車碰撞的程式,可以用來計算汽車和牆壁碰撞後,汽車或汽車內木偶的變形過程。分析人員可用3角形來模擬汽車外觀,再透過平行運算來計算汽車受力後的變化,這是工程上常用的有限元素分析方法或者稱為蒙地卡羅模擬。運算時,程式每次計算一個奈秒後的變化,如哪些地方受力會發生改變,計算出結果後,程式再依據前一奈秒的結果,採用同樣的運算規則來計算下一個奈秒的改變情形。資料就只有車子和牆,同一批資料要計算幾百萬次。洪士灝認為,Xeon Phi比GPU更擅長處理這類型的運算。 

因為GPU擅長Stream風格的平行計算方式,接近是SIMD(Single Instruction, Multiple Data,單一指令多重資料)的運算模式,這是指所有運算核心都執行同一個指令,只是作用在不同的資料上。而Xeon Phi則是MIMD架構(Multiple Instruction, Multiple Data,多重指令多重資料)的運算模式,Xeon Phi中的60個核心,每個核心都可以處理不同的指令和不同的資料。正因為如此,每個處理核心彼此需要許多同步和通訊的機制,所以,Xeon Phi處理核心的電路遠比GPU的核心更複雜。 

而SIMD架構的GPU,上千個處理核心會分群執行,例如一次使用256個核心,每個核心都是同步執行相同的指令,所以,彼此之間不需複雜的通訊或同步機制,而且所有核心可以共用同一個指令分派元件,所以,單一運算核心的電路可以簡化,就很容易在單一晶片中設計出大量的運算核心。但是,洪士灝認為,遇到蒙地卡羅模擬這類運算需求,例如汽車碰撞模擬,要對同樣的資料進行反覆大量運算的需求,GPU就不容易處理。

我已經盡可能用白話文解釋了,聽不懂的話,我也沒辦法。話說回來,為什麼中文的科普教材幾乎都沒有『電腦科學與工程』?電機資訊人應該去編一些科普教材,向下扎根才是。

不過, Xeon Phi介面卡目前內建記憶體只有8GB,有些大型運算任務的資料量容易超過這樣的規模,程式得先切割資料後才能放入Xeon Phi中計算,這樣作會影響運算效能,所以,Xeon Phi目前也不一定能滿足這類大型運算的需求。 洪士灝表示,Xeon Phi的處理核心是x86架構,雖然複雜性相當於是十年前的處理器架構,只是現在集中到同一個晶片中,就像是在一張主機板上有60顆處理器一樣,彼此組成運算叢集。「若能找到適合這類處理器的應用,這種在單晶片中放入60核心的作法,能以更低成本來取代現有的伺服器叢集或大型平行運算用的電腦。」他說。

Xeon Phi到底好不好用?答案是:『It depends』。要看你遇到的問題而定,見招拆招。有多少招?請參考拙著『 Optimizing Parallel Applications』,這本1998年寫的博士論文,到現在還很有用。

我們實驗室很快就會拿到這個XEON Phi來玩,有興趣的同學可以來詢問。