出版時(shí)間:2010年9月 出版社:機(jī)械工業(yè)出版社 作者:Clay Breshears 頁數(shù):265 譯者:聶雪軍
Tag標(biāo)簽:無
內(nèi)容概要
《并發(fā)的藝術(shù)》的前面部分給出了一個(gè)完備的并發(fā)程序開發(fā)框架,包括并發(fā)的基礎(chǔ)理論知識(shí)、不同并發(fā)模型的選擇與適用環(huán)境、編寫并發(fā)程序的基本步驟,并發(fā)算法的正確性證明與性能評(píng)價(jià),以及在編寫并發(fā)程序時(shí)遵循的一些指導(dǎo)原則等。這些內(nèi)容使讀者能夠?qū)Σl(fā)編程有基本的了解,在開始動(dòng)手編寫并發(fā)代碼之前首先作出全面的思考,這樣不僅可以提高編碼的效率,而且可以減少代碼中的錯(cuò)誤以及后續(xù)的修改/維護(hù)工作。
作者簡介
Clay Breshears博士,目前是一位課程設(shè)計(jì)師,主要從事多核與多線程方面的編程和培訓(xùn)。
書籍目錄
前言第1章 并行讓程序運(yùn)行得更快你可能會(huì)想到的一些問題采用線程化方法的4個(gè)步驟并行算法的背景知識(shí)共享內(nèi)存編程與分布式內(nèi)存編程的比較本書采用的并發(fā)編程方法第2章 是否采用并發(fā)并發(fā)算法的設(shè)計(jì)模型哪些算法不能并行第3章 算法正確性證明與性能衡量并行算法的驗(yàn)證示例:臨界區(qū)問題性能測(cè)試(程序的執(zhí)行情況如何)硬件并行性的發(fā)展歷史第4章 多線程程序設(shè)計(jì)中的8條簡單規(guī)則規(guī)則1:找出真正獨(dú)立的運(yùn)算規(guī)則2:在盡可能高的層次上實(shí)現(xiàn)并發(fā)規(guī)則3:盡早考慮通過增加處理器核的數(shù)量來獲得可伸縮性規(guī)則4:盡可能使用線程安全的庫規(guī)則5:使用正確的多線程模型規(guī)則6:永遠(yuǎn)不要假設(shè)程序會(huì)按照某種特定的順序執(zhí)行規(guī)則7:盡可能使用線程局部存儲(chǔ)或者與特定數(shù)據(jù)相關(guān)的鎖規(guī)則8:要敢于對(duì)代碼進(jìn)行修改以獲得更好的并發(fā)性小結(jié)第5章 線程化庫隱式線程化顯式線程化其他主題特定領(lǐng)域的庫第6章 并行求和與前綴求和并行求和前綴求和選擇最后的思考第7章 映射歸約并發(fā)映射運(yùn)算并發(fā)歸約運(yùn)算映射歸約的應(yīng)用映射歸約作為一般性并發(fā)第8章 排序冒泡排序奇偶換位排序希爾排序快速排序基數(shù)排序第9章 搜索未排序的數(shù)據(jù)序列二分搜索第10章 圖算法深度優(yōu)先搜索最短路徑問題最小生成樹第11章 線程化工具調(diào)試器性能工具其他主題再接再厲術(shù)語表照片說明
章節(jié)摘錄
加速比簡單地說,加速比就是串行執(zhí)行時(shí)間與并行執(zhí)行時(shí)間的比值。我曾經(jīng)看到過有人用百分比或者倍數(shù)來表示這個(gè)比值.我本人傾向于以倍數(shù)來表示加速比,因?yàn)槭褂冒俜直瓤赡軙?huì)導(dǎo)致混淆(你的目的是讓經(jīng)理能夠清楚地意識(shí)到你超強(qiáng)的編程技術(shù)和取得的成就,而不是使他感到困惑)。例如,如果你說并行代碼比串行代碼要快200%,那么這表示并行代碼的執(zhí)行時(shí)間是串行代碼執(zhí)行時(shí)間的一半還是1/37加速比為105%是表示并行運(yùn)行時(shí)間與串行運(yùn)行時(shí)間幾乎相當(dāng),還是速度提升為原有的兩倍?加速比的基線是0還是100%?而另一方面,如果你說并行程序的加速比為2x,那么很明顯表示執(zhí)行時(shí)間為原來的一半(也就是,在將串行代碼執(zhí)行一遍的時(shí)間里,可以將并行代碼執(zhí)行兩遍)。在計(jì)算加速比時(shí),要確保進(jìn)行比較的對(duì)象是最優(yōu)的串行算法和代碼。在后面的幾章中,我們將看到一些編寫得較差的串行算法更容易被轉(zhuǎn)換為并行算法。即使情況如此,你在計(jì)算加速比時(shí)還是應(yīng)該使用最快的串行算法作為比較對(duì)象。當(dāng)可以使用一種更好的串行算法時(shí),誰還會(huì)愿意使用更差的?我假設(shè)在你實(shí)施并發(fā)化的軟件項(xiàng)目中都已經(jīng)采用了最優(yōu)的串行算法。即使沒有使用,那么最優(yōu)的串行代碼仍然是需要考慮的比較對(duì)象。需要知道的是,加速比可以(并且應(yīng)該)隨著程序所使用處理器核數(shù)量的變化而變化。通過觀察加速比隨著處理器核增加的變化情況,你可以更好地了解代碼的可伸縮性。在圖3.2中給出了幾個(gè)加速比的示例。線性加速比(實(shí)線)是指,加速比的數(shù)值等于處理器核的數(shù)量(例如,加速比為4x表示4個(gè)處理器核)。對(duì)于可伸縮性良好的應(yīng)用程序,加速比增加的速率應(yīng)該接近或者等于處理器核增加的速率(圖3.2中的長點(diǎn)線).也就是,如果你將處理器核數(shù)量翻番,那么加速比應(yīng)該為2。如果加速比的增長無法跟上處理器核數(shù)量的增長(短點(diǎn)線),那么應(yīng)用程序在數(shù)據(jù)集上表現(xiàn)出的可伸縮性就不是很好。 ……
媒體關(guān)注與評(píng)論
“這是一本非常棒的書,從它的名字就可以看出來。雖然你教的可能并不是藝術(shù),但你可以讓學(xué)生了解一下專家的思維和方法。我在超級(jí)計(jì)算公司工作過30余年的時(shí)間,目前在學(xué)術(shù)界從事研究也有將近10年的時(shí)間了,因此我可以肯定地告訴各位讀者,這本書的內(nèi)容絕對(duì)值得一讀?!薄 猅om Murphy,Contra Costa大學(xué),計(jì)算機(jī)科學(xué)委員會(huì)主席 “終于出現(xiàn)了一本專門介紹并發(fā)性的書。本書介紹了大量實(shí)用的重要算法,并且采用多種方 式對(duì)算法進(jìn)行分析,重點(diǎn)講解了如何通過各種并行編程技術(shù)來提升程序的性能?!薄 狹ike Pearce,Intel Software Network,并行計(jì)算負(fù)責(zé)人
編輯推薦
《并發(fā)的藝術(shù)》:分析在共享內(nèi)存模型與分布式內(nèi)存模型之間的編程差異。 學(xué)習(xí)如何設(shè)計(jì)多線程程序,包括對(duì)程序的測(cè)試和調(diào)優(yōu)?! ×私馊绾巫钣行У厥褂酶鞣N不同的線程化機(jī)制,包括Windows線程、POSIX線程、 OpenMP以及Intel Threading Building Blocks?! ≌莆杖绾螌?shí)現(xiàn)各種并發(fā)算法,包括排序、搜索、圖以及其他一些實(shí)用的計(jì)算?! ∪绻阆Mㄟ^并發(fā)編程來充分發(fā)揮多核處理器的強(qiáng)大功能,那么《并發(fā)的藝術(shù)》將為你提供所需的理論知識(shí)和實(shí)際經(jīng)驗(yàn)。《并發(fā)的藝術(shù)》是為數(shù)不多的幾本介紹如何在多核處理器的共享內(nèi)存模型中實(shí)現(xiàn)算法的書籍之一,它并非僅僅介紹一些理論模型或者分布式內(nèi)存架構(gòu)?!恫l(fā)的藝術(shù)》詳細(xì)分析了各種示例程序,這些內(nèi)容非常有助于你將串行代碼轉(zhuǎn)換為并行代碼,此外還介紹了如何避免一些常見的錯(cuò)誤?!恫l(fā)的藝術(shù)》的作者是Intel公司的一位資深工程師,他從事并發(fā)編程已經(jīng)有20多年的時(shí)間,《并發(fā)的藝術(shù)》將幫助你.奉書還介紹了如何在算法中實(shí)現(xiàn)高可伸縮性,使得算法能夠充分發(fā)揮將來包含更多核處理器的強(qiáng)大功能。對(duì)于開發(fā)并行代碼算法的程序員來說,《并發(fā)的藝術(shù)》是必不可少的。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載