Intel Threading Building Blocks編程指南

出版時(shí)間:2009-1  出版社:機(jī)械工業(yè)出版社  作者:仁達(dá)敬  頁(yè)數(shù):323  譯者:聶雪軍  
Tag標(biāo)簽:無(wú)  

前言

  計(jì)算機(jī)領(lǐng)域正在發(fā)生著一場(chǎng)計(jì)算方式的革命。Intel、AMD以及其他芯片制造商不斷推出在單晶片上集成多重處理單元的新型芯片,用于取代過(guò)去的單一中心處理器。多核處理器的問(wèn)世給計(jì)算機(jī)工業(yè)帶來(lái)更強(qiáng)大的能力,但同時(shí)也給軟件產(chǎn)業(yè)帶來(lái)更大的挑戰(zhàn):我們不得不面對(duì)并發(fā)和并行程序這些通常是并行計(jì)算的專業(yè)人員和高端用戶才需要面對(duì)的問(wèn)題?! 鹘y(tǒng)的并行程序設(shè)計(jì)模型主要分為兩大類,一類是共享存儲(chǔ)模型,主要是采用多線程,例如目前已成為事實(shí)工業(yè)標(biāo)準(zhǔn)的OpenMP;另一類是消息傳遞模型,例如MPI(Message Passing Interface,MPI)。然而,這些方式都存在著一些缺陷,或者是需要特定的語(yǔ)言擴(kuò)展,或者是在使用上存在困難,從而降低了并行程序的開發(fā)效率?! ∈聦?shí)上,并行程序的設(shè)計(jì)目標(biāo)是挖掘問(wèn)題求解過(guò)程中的并行語(yǔ)義,尋求并行算法與并行機(jī)器體系結(jié)構(gòu)的最佳匹配和映射,合理組織并行任務(wù),減少額外消息傳遞和數(shù)據(jù)移動(dòng)開銷,而這正是Intel線程構(gòu)建模塊的設(shè)計(jì)初衷?! ∨cOpenMP、MPI等傳統(tǒng)技術(shù)相比,線程構(gòu)建模塊主要有以下特點(diǎn):  1.面向任務(wù)編程。任務(wù)是比線程更高級(jí)的并行抽象,任務(wù)與線程的關(guān)系就好比高級(jí)語(yǔ)言與匯編語(yǔ)言的關(guān)系。在使用線程構(gòu)建模塊時(shí),需要設(shè)計(jì)的是任務(wù)而不是線程,這就使你無(wú)須關(guān)心一些具體的線程細(xì)節(jié)技術(shù),例如負(fù)載均衡,優(yōu)化調(diào)度等。線程構(gòu)建模塊的底層組件已經(jīng)幫你實(shí)現(xiàn)了這些煩瑣的工作,它將通過(guò)高效的方式將任務(wù)映射到線程,并通過(guò)任務(wù)密取(Task Stealing)來(lái)實(shí)現(xiàn)自動(dòng)調(diào)度。這正如在用C++編程時(shí)無(wú)需編寫push/pop之類的指令,C++編譯器將自動(dòng)實(shí)現(xiàn)這些工作?! ?.簡(jiǎn)單易用。線程構(gòu)建模塊是一個(gè)用標(biāo)準(zhǔn)C++和模板實(shí)現(xiàn)的庫(kù),它既沒(méi)有包含像OpenMP中的特殊語(yǔ)言擴(kuò)展,也不是一種全新的編程語(yǔ)言。任何支持ISOC++的編譯器都可以直接編譯TBB程序,而現(xiàn)有的程序也無(wú)需太多修改就可以通過(guò)線程構(gòu)建模塊獲得并行的速度提升。計(jì)算機(jī)領(lǐng)域的發(fā)展歷史已經(jīng)證明,這一特點(diǎn)是決定技術(shù)生命力的重要因素?! ?.豐富的輔助開發(fā)工具。與線程構(gòu)建模塊結(jié)合使用的有許多輔助開發(fā)工具,例如Intel線程檢查器,Intel線程分析器等。這些輔助工具將極大地提高并行程序的開發(fā)效率和調(diào)試效率。  本書作者JamesReinders(仁達(dá)敬)是Intel軟件開發(fā)產(chǎn)品部門的首席講師,他在并行程序設(shè)計(jì)領(lǐng)域有著豐富的經(jīng)驗(yàn)。本書融合了作者和Intel線程構(gòu)建模塊開發(fā)團(tuán)隊(duì)在并行程序設(shè)計(jì)領(lǐng)域和線程構(gòu)建模塊中的寶貴經(jīng)驗(yàn),既有一定的理論深度,又包含了豐富的編程示例?! ”緯鴮?duì)讀者的技術(shù)水平要求不高,對(duì)于各個(gè)層次的讀者,本書都將是非常有用的。但如果讀者具備一些C++模板以及模板庫(kù)等方面的知識(shí),那么就更容易地理解本書中的一些概念。多核時(shí)代已經(jīng)來(lái)臨,并行程序已經(jīng)被推向了主流地位,這既帶來(lái)了挑戰(zhàn),也帶來(lái)了機(jī)遇。衷心希望本書能夠?yàn)椴⑿谐绦蜷_發(fā)人員帶來(lái)幫助。  參與本書翻譯工作的還有李楊、昊漢平、徐光景、童勝漢、陳軍、胡凱、劉紅、張瑋、陳紅和李斌。由于譯者的時(shí)間和水平有限,翻譯中的疏漏之處在所難免,還望讀者和同行不吝指正。

內(nèi)容概要

多核處理器的出現(xiàn)使得并行編程成為了每個(gè)程序員關(guān)注的主題。不具備多處理器核的計(jì)算機(jī)系統(tǒng)已經(jīng)變得越來(lái)越少。本書為c++程序給出了并行編程的解決方案,它既不要求放棄c++,也不要求使用那些裸線程或者本地線程?! ”緯榻B的是Intel線程構(gòu)建模塊。線程構(gòu)建模塊是一個(gè)用來(lái)實(shí)現(xiàn)并行語(yǔ)義的c++模板庫(kù),它對(duì)c++進(jìn)行了擴(kuò)展,抽象出了線程管理機(jī)制并支持簡(jiǎn)明的并行編程。在使用這個(gè)庫(kù)時(shí),你所要指定的是任務(wù)而不是線程,然后庫(kù)將高效自動(dòng)地將這些任務(wù)映射到線程上。如果希望程序在處理器核不斷增加的情況下也能夠繼續(xù)運(yùn)行,那么這種方式將帶來(lái)許多好處。與裸線程相比,線程構(gòu)建模塊能夠使你更方便地表達(dá)并行語(yǔ)義,同時(shí)還能夠提高程序的性能,可移植性和可擴(kuò)展性。在使用本書時(shí),你無(wú)需任何并行編程經(jīng)驗(yàn)或者在多核處理器上的編程經(jīng)驗(yàn)。無(wú)論你是擁有豐富的并行編程經(jīng)驗(yàn),還是對(duì)并行編程一無(wú)所知,本書的內(nèi)容都將是非常有用的。此外,本書也不要求之前是否對(duì)線程有所了解。

作者簡(jiǎn)介

James Reinders(仁達(dá)敬),Intel軟件開發(fā)產(chǎn)品部門的首席講師。他是一位高級(jí)工程師,于1989年加入Intel公司。他在許多項(xiàng)目上做出了貢獻(xiàn),包括世界上第一臺(tái)萬(wàn)億次浮點(diǎn)運(yùn)算超級(jí)計(jì)算機(jī)(ASCI Red)以及iWarp、Pentium Pro、Pentium Ⅱ、Itanium、Pentium 4等處理器上的編譯器和

書籍目錄

致中文版讀者序Intel線程構(gòu)建模塊首席開發(fā)師的筆記前言第1章 為什么需要線程構(gòu)建模塊 簡(jiǎn)介 優(yōu)勢(shì)第2章 并行思維  并行思維的要素 分解 擴(kuò)展性與加速性  什么是線程  互斥和鎖  正確性  抽象  模式  直覺(jué)思維第3章 基本算法  庫(kù)的初始化和結(jié)束  循環(huán)的并行化  遞歸區(qū)間的定義  對(duì)循環(huán)的小結(jié)第4章 高級(jí)算法  用于流的并行算法第5章 容器 cocurrent_queue ConCUrrent_VeCtOr concurrent_hash_map第6章 可擴(kuò)展的內(nèi)存分配. 限制 內(nèi)存分配中的若干問(wèn)題 內(nèi)存分配器 替換malloc、new和delete第7章 互斥  何時(shí)使用互斥  Mutexes 互斥量 原子操作第8章 計(jì)量第9章 任務(wù)調(diào)度器第10章 成功的關(guān)鍵因素第11章 編程示例第12澡 發(fā)展歷程及相關(guān)項(xiàng)目

章節(jié)摘錄

  第1章 為什么需要線程構(gòu)建模塊  簡(jiǎn)介  多核處理器正在變得日益普及,而利用現(xiàn)有的線程軟件包來(lái)編寫一個(gè)簡(jiǎn)單的paralle_for循環(huán)卻是一項(xiàng)乏味的工作。要編寫一個(gè)高效的可擴(kuò)展(scalable)程序則更為困難??蓴U(kuò)展性體現(xiàn)的是這樣的概念:隨著處理器中核數(shù)量的增加,程序的性能能夠得到相應(yīng)的提升?! ‰S著在新推出的處理器中有著越來(lái)越多的核,使用線程構(gòu)建模塊來(lái)編寫程序?qū)椭銖闹蝎@得許多好處?! 【€程構(gòu)建模塊是一個(gè)用來(lái)支撐可擴(kuò)展并行編程的庫(kù),它是用標(biāo)準(zhǔn)的C++代碼實(shí)現(xiàn)的。它不需要專門的語(yǔ)言或者編譯器。線程構(gòu)建模塊可以幾乎應(yīng)用于所有處理器或者操作系統(tǒng)上的任何一種c++編譯器中,這種強(qiáng)大的功能對(duì)于程序員來(lái)說(shuō)是非常有吸引力的?! 【€程構(gòu)建模塊通過(guò)模板來(lái)提供常見(jiàn)的并行迭代模式,這使得程序員即使在不具備同步、負(fù)載均衡以及快存優(yōu)化等專門知識(shí)的情況下,也能夠從多核處理器中獲得性能提升。使用線程構(gòu)建模塊編寫的程序既能夠運(yùn)行在單核處理器的系統(tǒng)上,也能夠運(yùn)行在多核處理器的系統(tǒng)上。線程構(gòu)建模塊促進(jìn)了可擴(kuò)展數(shù)據(jù)并行編程技術(shù)的發(fā)展。此外,它還支持嵌套并行,因此你可以很容易地從小型的并行組件中構(gòu)建出大型的并行組件。在使用這個(gè)庫(kù)時(shí),你需要指定的是任務(wù),而不是線程,然后再通過(guò)這個(gè)庫(kù)以高效的方式將任務(wù)自動(dòng)映射到線程。因此,與裸線程(Raw Thread)相比,線程構(gòu)建模塊能夠更方便地實(shí)現(xiàn)并行,并獲得更優(yōu)的結(jié)果。

媒體關(guān)注與評(píng)論

  “串行計(jì)算的時(shí)代已經(jīng)結(jié)束了……《Intel Threading Building Blocks編程指南》很好地介紹了線程構(gòu)建模塊庫(kù),無(wú)論是初學(xué)者還是專家,都能通過(guò)〈Intel Threading Building Blocks編程指南》清晰地理解并發(fā)的復(fù)雜性。”  ——Charles E.Leiserson,麻省理工大學(xué)計(jì)算機(jī)與人工智能實(shí)驗(yàn)室  “我們通常習(xí)慣說(shuō),首先要使程序正確,然后再提高程序的速度?,F(xiàn)在,我們無(wú)需這么做。TBB使我們?cè)谡_地設(shè)計(jì)程序的同時(shí),還能提升Maya前臺(tái)視圖的速度?!碔ntel Threading Building Blocks編程指南》將向你展示如何通過(guò)在代碼中使用TBB來(lái)獲得最大的性能提升?!薄  狹artin Watt,Autodesk公司高級(jí)軟件工程師

編輯推薦

  “串行計(jì)算的時(shí)代已經(jīng)結(jié)束了……本書很好地介紹了線程構(gòu)建模塊庫(kù),無(wú)論是初學(xué)者還是專家,都能通過(guò)本書清晰地理解并發(fā)的復(fù)雜性?!薄  狢harles E.Leiserson,麻省理工大學(xué)計(jì)算機(jī)與人工智能實(shí)驗(yàn)室  “我們通常習(xí)慣說(shuō),首先要使程序正確,然后再提高程序的速度。現(xiàn)在,我們無(wú)需這么做。TBB使我們?cè)谡_地設(shè)計(jì)程序的同時(shí),還能提升Maya前臺(tái)視圖的速度。本書將向你展示如何通過(guò)在代碼中使用TBB來(lái)獲得最大的性能提升?!薄  狹artin Watt,Autodesk公司高級(jí)軟件工程師本書介紹了如何通過(guò)Intel線程構(gòu)建模塊來(lái)最大限度地利用多核處理器的強(qiáng)大性能。TBB是一個(gè)可移植的C++庫(kù),能夠運(yùn)行在Windows、Linux、Macintosh以及uNIx等系統(tǒng)上。本書闡述了在多線程編程中的關(guān)鍵任務(wù)以及如何通過(guò)TBBE上可移植的和穩(wěn)定的方式來(lái)實(shí)現(xiàn)它們。書中包含了大量的示例和豐富的資料,給出了常見(jiàn)的使用模式,揭示了TBB中的精彩之處,并且還提供了一些指導(dǎo)意見(jiàn),用來(lái)在不同的并行編程方式上進(jìn)行選擇以獲得最佳的性能。本書的內(nèi)容包括:? 充分利用多核系統(tǒng)中并行語(yǔ)義的簡(jiǎn)單且高效的方式。  ? 編寫并行程序的關(guān)鍵問(wèn)題?! ? 多線程中的常見(jiàn)模式?! ? 用于高效處理的線程安全容器?! ? 任務(wù)調(diào)度?! ? 在線程環(huán)境中的內(nèi)存管理?! ”緯f(shuō)明了TBB能夠比原始線程更方便地在c++中指定并行語(yǔ)義,同時(shí)還可以提升程序的性能、可移植性以及可伸縮性。在開始學(xué)習(xí)TBB時(shí),并不要求具備并行編程或者多核處理器的經(jīng)驗(yàn)。任何希望在多核系統(tǒng)上編寫軟件的程序員,都能夠從本書中獲益。

圖書封面

圖書標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Intel Threading Building Blocks編程指南 PDF格式下載


用戶評(píng)論 (總計(jì)4條)

 
 

  •   這是一個(gè)很前衛(wèi)的課題,能有這么新的譯文書,幫了大忙的
  •   書很好,要是有個(gè)光盤就好了
  •   這本書確實(shí)不錯(cuò),我相信英文原版應(yīng)是相當(dāng)?shù)馁?,中文翻譯本有些術(shù)語(yǔ)和我之前看過(guò)的書不太一樣,有點(diǎn)可惜。另外,這本書是講Intel實(shí)驗(yàn)室的那個(gè)tbb庫(kù),如果有更大篇幅講講一般多核程序的編寫就更贊了。
  •   看了后,感覺(jué)水平基本沒(méi)有提高。
    內(nèi)容少,2/3 開 A4大小。 字體較大。
 

250萬(wàn)本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7