在sourceforge地址:http://sourceforge.net/projects/tbb
官網(wǎng)地址: http://osstbb.intel.com/index.php
Intel TBB 開(kāi)源
在這兩天的 OSCON 上,Intel 宣布,Threading Building Blocks,Intel 眾多軟件開(kāi)發(fā)工具中的一個(gè),open source 了。協(xié)議是 GPLv2。
TBB 獲得過(guò) 17 屆 Jolt Productivity Awards,是一套 C++ 模板庫(kù),和直接利用 OS API 寫程序的 raw thread 比,在并行編程方面提供了適當(dāng)?shù)某橄螅?dāng)然還包括更多其他內(nèi)容,比如 task 概念,常用算法的成熟實(shí)現(xiàn),自動(dòng)負(fù)載均衡特性還有不綁定 CPU 數(shù)量的靈活的可擴(kuò)展性等等。STL 之父,Alexander Stepanov 對(duì)此評(píng)價(jià)不錯(cuò),他說(shuō)“Threading Building Blocks… could become a basis for the concurrency dimension of the C++ standard library”。其他 TBB 的早期用戶,包括 Autodesk,Sun,Red Hat, Turbo Linux 等亦然。現(xiàn)在 O’Reilly 已經(jīng)出版了一本 Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism。
TBB 可以在 Windows,Linux 和 OSX 上運(yùn)行,支持 Intel, Microsoft 和 GNU 工具,這就覆蓋了絕大多數(shù)需求范圍。
Intel 內(nèi)部大概在 2004 年有了 TBB 的概念,2005 年 team 成立,2006 年 8 月發(fā)布 1.0,今年 4 月 1.1,這個(gè)程序看上去勢(shì)頭不錯(cuò)。
和業(yè)界目前層出不窮的并行解決方法/方案比較,TBB 有自己的優(yōu)勢(shì),例如:和 OpenMP 比…哦,他們幾乎是兩回事…關(guān)于 OpenMP 有個(gè)笑話:OpenMP is great if you have Fortran code, or C code that looks like Fortran, or C++ that looks like Fortran,或者說(shuō),一句話,flat do-loop centric parallelism。另外,如果你的項(xiàng)目不適合甚至不允許 pragma 來(lái) prgma 去的,那就麻煩了。
目前 TBB 也仍然作為售價(jià) $299 商業(yè)產(chǎn)品(包括了 Intel C++ Compiler Professional Editions 10.0)銷售,因?yàn)橛行┯脩舾矚g Intel 的支持服務(wù)。一個(gè)不知道是好消息還是壞消息的信息是,如果我用 TBB 和 Intel Compiler 配合編寫的程序,在 AMD 的 multicore 處理器上會(huì)有更好的 performance 嗎?答案是,很多情況下,確實(shí)會(huì)提高的
對(duì) TBB 或者說(shuō)并行編程趨勢(shì)的完整理解和支持只可能最先發(fā)生在工業(yè)界,這不是你在論壇上看到的某個(gè)蹩腳程序員或者業(yè)余愛(ài)好者愿意花精力或者有機(jī)會(huì)實(shí)踐的東西,Autodesk,Sun 和 好萊塢 是典型的最渴望和最歡迎任何這方面的有益舉動(dòng)的廠商。DDJ 對(duì) James Reinders 的訪問(wèn),其中有一段,或許,有一天會(huì)擴(kuò)展 TBB 到支持 Java 和 .Net 吧。
Raw thread 幾乎鐵定不是最方便和具備可移植性的選擇,某種程度的 wrapper 只能改良而無(wú)實(shí)質(zhì)變化,TBB 引入 generic parallel programming 的支持是個(gè)大進(jìn)步,當(dāng)然這也不能說(shuō)完美,TBB 有不方便的地方(有些來(lái)自 C++ 有些來(lái)自 TBB 實(shí)現(xiàn)),而且不一定適合某些特定問(wèn)題域,所以 Google Sawzall(適合大規(guī)模數(shù)據(jù)并行處理的腳本語(yǔ)言) 和 Yahoo Pig 都是很好的對(duì)比參考(當(dāng)然,他們是更不 generic 的實(shí)現(xiàn),更針對(duì)自己的問(wèn)題),至于硬件對(duì) parallel progarmming 的支持比如 transactional memory… 扯更遠(yuǎn)了哈。
出于照顧受眾的原因,不少介紹和推廣 multicore 處理器優(yōu)勢(shì)的資料都會(huì)說(shuō)你可以一邊運(yùn)行殺毒軟件,一邊處理照片等等,我得說(shuō),這個(gè)比方真的很蠢,它模糊了實(shí)質(zhì),也讓人覺(jué)得職業(yè)程序員們沒(méi)干什么正事兒,可是,如果你沒(méi)法跟他聊算法,數(shù)據(jù)流以及指令序列,那也就這么著了吧。
Jakob Nielsen 和 Steve Jobs 的看法有很多類似之處,大多數(shù)用戶要么根本不知道自己要什么,要么說(shuō)出來(lái)需要什么后,旋即轉(zhuǎn)身要求其他更好的繼而讓他剛剛告訴你的東西成為廢話。你得敏銳地觀察他們的行為,分析趨勢(shì),這是個(gè)預(yù)測(cè)未來(lái)的活兒,你得做好準(zhǔn)備去迎合至今尚不存在,將來(lái)卻會(huì)鐵板釘釘?shù)哪莻€(gè)“需求”。用戶可能會(huì)覺(jué)得你現(xiàn)在提出的 idea 非其所需,或者不過(guò)是忽悠人,甚至蠢得可以,這樣的過(guò)程在 iPod 身上發(fā)生過(guò),在 Parallelism 身上正在發(fā)生。
推動(dòng)多核發(fā)展 英特爾開(kāi)放TBB程序
據(jù)來(lái)自arstechnica網(wǎng)站的消息,英特爾(Intel)公司今天宣布開(kāi)放多平臺(tái)Thread Building Blocks 2.0 (TBB)程序的模板資源,TBB是英特爾公司開(kāi)發(fā)出來(lái)的一款針對(duì)多核處理器的程序,使用這個(gè)程序能夠讓開(kāi)發(fā)出來(lái)的軟件更加高效的利用目前的雙核處理器和多核處理器,這對(duì)于多核處理器的推廣有著顯而易見(jiàn)的作用,隨著英特爾這次對(duì)TBB的開(kāi)放,相信基于多核處理器的軟件開(kāi)發(fā)工作將能變得更加便利,這也表明了英特爾在推廣多核處理器方面的決心,不久我們就可以感受到多核處理器帶給我們的高效性能優(yōu)勢(shì)了。
據(jù)英特爾公司稱,TBB做為一款開(kāi)發(fā)程序能夠讓程序開(kāi)發(fā)人員很便利的利用多核處理器的優(yōu)勢(shì),它將多核處理器的多個(gè)核心抽象為一個(gè)個(gè)非常高效的可以同時(shí)運(yùn)行的模塊,這樣程序開(kāi)發(fā)人員就能通過(guò)最簡(jiǎn)潔的思路來(lái)開(kāi)發(fā)程序,而不用擔(dān)心由于核心的增加而大幅度增加程序編寫的難度和程序代碼的數(shù)量,而且利用TBB能夠優(yōu)化多核心處理器的多線程優(yōu)勢(shì),讓軟件在運(yùn)行過(guò)程中充分利用多核心提供的高性能。簡(jiǎn)單的理解,TBB可以認(rèn)為是一個(gè)多核編譯器,能夠通過(guò)這個(gè)編譯器定義你所需要的程序任務(wù),這樣不管多核心處理器怎么發(fā)展,只要還是基于目前的物理架購(gòu),程序開(kāi)發(fā)人員都能很便捷的開(kāi)發(fā)出用戶需要的軟件。
據(jù)悉,TBB程序遵守GPL V2x協(xié)議,并將優(yōu)先應(yīng)用C++做為開(kāi)發(fā)工具,而Java 和.NET版本的TBB程序目前英特爾還在評(píng)估當(dāng)中,不過(guò)不久即將同樣開(kāi)放。TBB程序在此之前是英特爾公司開(kāi)發(fā)的一款商業(yè)軟件,根據(jù)不同的用戶,售價(jià)在599美元到1599美元之間。而現(xiàn)在英特爾將該程序完全開(kāi)放,對(duì)于基于Windows操作系統(tǒng)和Linux操作系統(tǒng)的程序開(kāi)發(fā)人員來(lái)說(shuō),要想開(kāi)發(fā)出一款充分發(fā)揮多核處理器的高效軟件已經(jīng)不再困難。這次對(duì)TBB程序的開(kāi)放,只是英特爾一系列開(kāi)放源程序項(xiàng)目中的一個(gè),也是英特爾公司有史以來(lái)規(guī)模最大的開(kāi)放源程序的項(xiàng)目。