2008年5月13日 星期二

.NET 的 Task Parallel Library

近幾年來多核心CPU日漸普及,從雙核心、四核心到八核心,意味著現在的CPU可以一次執行多道指令,但計算機結構教科書上所提及的pileline三大hazard,與軟體設計的不良,卻使得多核心CPU效能無法被完全發揮。而就軟體來看,雖然設計了multi-threads,但若沒有搭配平行處理的函式庫,程式多半還是以單一核心在執行。在C++中,有著著名的OpenMP函式庫可供使用,但在.NET平台上CLR與Threading類別庫的設計,卻沒考慮到多核心的問題,以致效能不彰。但微軟也發現了這個大問題,成立了平行運算部門來開發新的CLR,並在去年年底發表了 Task Parallel Library測試版本,但這個library的用法必需手動地指明要平行運算的方式,與OpenMP只要指明那個指令想平行運算,compiler就會自動幫你規畫不太一樣,雖然要改寫的code不多,但若能自動的偵測,似乎比較完善。

沒有留言: