出版時間:2009-1 出版社:機械工業(yè)出版社 作者:仁達敬 頁數(shù):323 譯者:聶雪軍
Tag標簽:無
前言
計算機領域正在發(fā)生著一場計算方式的革命。Intel、AMD以及其他芯片制造商不斷推出在單晶片上集成多重處理單元的新型芯片,用于取代過去的單一中心處理器。多核處理器的問世給計算機工業(yè)帶來更強大的能力,但同時也給軟件產(chǎn)業(yè)帶來更大的挑戰(zhàn):我們不得不面對并發(fā)和并行程序這些通常是并行計算的專業(yè)人員和高端用戶才需要面對的問題?! 鹘y(tǒng)的并行程序設計模型主要分為兩大類,一類是共享存儲模型,主要是采用多線程,例如目前已成為事實工業(yè)標準的OpenMP;另一類是消息傳遞模型,例如MPI(Message Passing Interface,MPI)。然而,這些方式都存在著一些缺陷,或者是需要特定的語言擴展,或者是在使用上存在困難,從而降低了并行程序的開發(fā)效率?! ∈聦嵣希⑿谐绦虻脑O計目標是挖掘問題求解過程中的并行語義,尋求并行算法與并行機器體系結構的最佳匹配和映射,合理組織并行任務,減少額外消息傳遞和數(shù)據(jù)移動開銷,而這正是Intel線程構建模塊的設計初衷?! ∨cOpenMP、MPI等傳統(tǒng)技術相比,線程構建模塊主要有以下特點: 1.面向任務編程。任務是比線程更高級的并行抽象,任務與線程的關系就好比高級語言與匯編語言的關系。在使用線程構建模塊時,需要設計的是任務而不是線程,這就使你無須關心一些具體的線程細節(jié)技術,例如負載均衡,優(yōu)化調度等。線程構建模塊的底層組件已經(jīng)幫你實現(xiàn)了這些煩瑣的工作,它將通過高效的方式將任務映射到線程,并通過任務密取(Task Stealing)來實現(xiàn)自動調度。這正如在用C++編程時無需編寫push/pop之類的指令,C++編譯器將自動實現(xiàn)這些工作?! ?.簡單易用。線程構建模塊是一個用標準C++和模板實現(xiàn)的庫,它既沒有包含像OpenMP中的特殊語言擴展,也不是一種全新的編程語言。任何支持ISOC++的編譯器都可以直接編譯TBB程序,而現(xiàn)有的程序也無需太多修改就可以通過線程構建模塊獲得并行的速度提升。計算機領域的發(fā)展歷史已經(jīng)證明,這一特點是決定技術生命力的重要因素?! ?.豐富的輔助開發(fā)工具。與線程構建模塊結合使用的有許多輔助開發(fā)工具,例如Intel線程檢查器,Intel線程分析器等。這些輔助工具將極大地提高并行程序的開發(fā)效率和調試效率?! ”緯髡逬amesReinders(仁達敬)是Intel軟件開發(fā)產(chǎn)品部門的首席講師,他在并行程序設計領域有著豐富的經(jīng)驗。本書融合了作者和Intel線程構建模塊開發(fā)團隊在并行程序設計領域和線程構建模塊中的寶貴經(jīng)驗,既有一定的理論深度,又包含了豐富的編程示例?! ”緯鴮ψx者的技術水平要求不高,對于各個層次的讀者,本書都將是非常有用的。但如果讀者具備一些C++模板以及模板庫等方面的知識,那么就更容易地理解本書中的一些概念。多核時代已經(jīng)來臨,并行程序已經(jīng)被推向了主流地位,這既帶來了挑戰(zhàn),也帶來了機遇。衷心希望本書能夠為并行程序開發(fā)人員帶來幫助?! ⑴c本書翻譯工作的還有李楊、昊漢平、徐光景、童勝漢、陳軍、胡凱、劉紅、張瑋、陳紅和李斌。由于譯者的時間和水平有限,翻譯中的疏漏之處在所難免,還望讀者和同行不吝指正。
內容概要
多核處理器的出現(xiàn)使得并行編程成為了每個程序員關注的主題。不具備多處理器核的計算機系統(tǒng)已經(jīng)變得越來越少。本書為c++程序給出了并行編程的解決方案,它既不要求放棄c++,也不要求使用那些裸線程或者本地線程。 本書介紹的是Intel線程構建模塊。線程構建模塊是一個用來實現(xiàn)并行語義的c++模板庫,它對c++進行了擴展,抽象出了線程管理機制并支持簡明的并行編程。在使用這個庫時,你所要指定的是任務而不是線程,然后庫將高效自動地將這些任務映射到線程上。如果希望程序在處理器核不斷增加的情況下也能夠繼續(xù)運行,那么這種方式將帶來許多好處。與裸線程相比,線程構建模塊能夠使你更方便地表達并行語義,同時還能夠提高程序的性能,可移植性和可擴展性。在使用本書時,你無需任何并行編程經(jīng)驗或者在多核處理器上的編程經(jīng)驗。無論你是擁有豐富的并行編程經(jīng)驗,還是對并行編程一無所知,本書的內容都將是非常有用的。此外,本書也不要求之前是否對線程有所了解。
作者簡介
James Reinders(仁達敬),Intel軟件開發(fā)產(chǎn)品部門的首席講師。他是一位高級工程師,于1989年加入Intel公司。他在許多項目上做出了貢獻,包括世界上第一臺萬億次浮點運算超級計算機(ASCI Red)以及iWarp、Pentium Pro、Pentium Ⅱ、Itanium、Pentium 4等處理器上的編譯器和
書籍目錄
致中文版讀者序Intel線程構建模塊首席開發(fā)師的筆記前言第1章 為什么需要線程構建模塊 簡介 優(yōu)勢第2章 并行思維 并行思維的要素 分解 擴展性與加速性 什么是線程 互斥和鎖 正確性 抽象 模式 直覺思維第3章 基本算法 庫的初始化和結束 循環(huán)的并行化 遞歸區(qū)間的定義 對循環(huán)的小結第4章 高級算法 用于流的并行算法第5章 容器 cocurrent_queue ConCUrrent_VeCtOr concurrent_hash_map第6章 可擴展的內存分配. 限制 內存分配中的若干問題 內存分配器 替換malloc、new和delete第7章 互斥 何時使用互斥 Mutexes 互斥量 原子操作第8章 計量第9章 任務調度器第10章 成功的關鍵因素第11章 編程示例第12澡 發(fā)展歷程及相關項目
章節(jié)摘錄
第1章 為什么需要線程構建模塊 簡介 多核處理器正在變得日益普及,而利用現(xiàn)有的線程軟件包來編寫一個簡單的paralle_for循環(huán)卻是一項乏味的工作。要編寫一個高效的可擴展(scalable)程序則更為困難。可擴展性體現(xiàn)的是這樣的概念:隨著處理器中核數(shù)量的增加,程序的性能能夠得到相應的提升?! ‰S著在新推出的處理器中有著越來越多的核,使用線程構建模塊來編寫程序將幫助你從中獲得許多好處?! 【€程構建模塊是一個用來支撐可擴展并行編程的庫,它是用標準的C++代碼實現(xiàn)的。它不需要專門的語言或者編譯器。線程構建模塊可以幾乎應用于所有處理器或者操作系統(tǒng)上的任何一種c++編譯器中,這種強大的功能對于程序員來說是非常有吸引力的?! 【€程構建模塊通過模板來提供常見的并行迭代模式,這使得程序員即使在不具備同步、負載均衡以及快存優(yōu)化等專門知識的情況下,也能夠從多核處理器中獲得性能提升。使用線程構建模塊編寫的程序既能夠運行在單核處理器的系統(tǒng)上,也能夠運行在多核處理器的系統(tǒng)上。線程構建模塊促進了可擴展數(shù)據(jù)并行編程技術的發(fā)展。此外,它還支持嵌套并行,因此你可以很容易地從小型的并行組件中構建出大型的并行組件。在使用這個庫時,你需要指定的是任務,而不是線程,然后再通過這個庫以高效的方式將任務自動映射到線程。因此,與裸線程(Raw Thread)相比,線程構建模塊能夠更方便地實現(xiàn)并行,并獲得更優(yōu)的結果。
媒體關注與評論
“串行計算的時代已經(jīng)結束了……《Intel Threading Building Blocks編程指南》很好地介紹了線程構建模塊庫,無論是初學者還是專家,都能通過〈Intel Threading Building Blocks編程指南》清晰地理解并發(fā)的復雜性。” ——Charles E.Leiserson,麻省理工大學計算機與人工智能實驗室 “我們通常習慣說,首先要使程序正確,然后再提高程序的速度。現(xiàn)在,我們無需這么做。TBB使我們在正確地設計程序的同時,還能提升Maya前臺視圖的速度?!碔ntel Threading Building Blocks編程指南》將向你展示如何通過在代碼中使用TBB來獲得最大的性能提升?!薄 狹artin Watt,Autodesk公司高級軟件工程師
編輯推薦
“串行計算的時代已經(jīng)結束了……本書很好地介紹了線程構建模塊庫,無論是初學者還是專家,都能通過本書清晰地理解并發(fā)的復雜性?!薄 狢harles E.Leiserson,麻省理工大學計算機與人工智能實驗室 “我們通常習慣說,首先要使程序正確,然后再提高程序的速度?,F(xiàn)在,我們無需這么做。TBB使我們在正確地設計程序的同時,還能提升Maya前臺視圖的速度。本書將向你展示如何通過在代碼中使用TBB來獲得最大的性能提升?!薄 狹artin Watt,Autodesk公司高級軟件工程師本書介紹了如何通過Intel線程構建模塊來最大限度地利用多核處理器的強大性能。TBB是一個可移植的C++庫,能夠運行在Windows、Linux、Macintosh以及uNIx等系統(tǒng)上。本書闡述了在多線程編程中的關鍵任務以及如何通過TBBE上可移植的和穩(wěn)定的方式來實現(xiàn)它們。書中包含了大量的示例和豐富的資料,給出了常見的使用模式,揭示了TBB中的精彩之處,并且還提供了一些指導意見,用來在不同的并行編程方式上進行選擇以獲得最佳的性能。本書的內容包括:? 充分利用多核系統(tǒng)中并行語義的簡單且高效的方式?! ? 編寫并行程序的關鍵問題?! ? 多線程中的常見模式?! ? 用于高效處理的線程安全容器?! ? 任務調度。 ? 在線程環(huán)境中的內存管理?! ”緯f明了TBB能夠比原始線程更方便地在c++中指定并行語義,同時還可以提升程序的性能、可移植性以及可伸縮性。在開始學習TBB時,并不要求具備并行編程或者多核處理器的經(jīng)驗。任何希望在多核系統(tǒng)上編寫軟件的程序員,都能夠從本書中獲益。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
Intel Threading Building Blocks編程指南 PDF格式下載