日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

正文

基于任務(wù)的程序設(shè)計(jì)(22)

C#并行編程高級(jí)教程 作者:(美)Gastón C.Hillar


1.8  判斷是否適合并行化

有時(shí),并行化并不是優(yōu)化算法的最佳選擇。如果相比于串行執(zhí)行的方式,并行化能夠帶來顯著的性能提升,那么并行化才有意義。判斷是否適合并行化并沒有一勞永逸的方法——一切都取決于特定問題的功能需求和性能需求。例如,如果一個(gè)并行化的算法完成整個(gè)作業(yè)的時(shí)間能夠減少30%,而如果串行版本的算法只需要不到1秒就可以完成,那么這個(gè)加速就不明顯了。然而,如果對一個(gè)需要運(yùn)行18個(gè)小時(shí)才能完成的批處理作業(yè)進(jìn)行并行化加速也能達(dá)到如此的性能提升,那么加速之后不到13小時(shí)就能完成運(yùn)行了,這樣的話并行化的意義就很顯著。

您還可以考慮通過并行化執(zhí)行來向現(xiàn)有的應(yīng)用程序添加新功能。通過可以充分發(fā)揮并行化優(yōu)勢的異步任務(wù)和線程,可以設(shè)計(jì)出對用戶的響應(yīng)能力更好的方案。

并行化程序設(shè)計(jì)比傳統(tǒng)的串行程序設(shè)計(jì)復(fù)雜得多。然而,只要您開始進(jìn)行基于任務(wù)的設(shè)計(jì),并且編寫并行化代碼之后,就很難不再去想并行化了。

Visual C# 2010和.NET Framework 4提供了很多特性,使得從基于任務(wù)的設(shè)計(jì)到并行化代碼成為可能;本書剩余的部分將會(huì)對這些特性進(jìn)行深入講解,并且會(huì)幫助解決這個(gè)轉(zhuǎn)變過程中可能遇到的所有問題。

1.9  小結(jié)

本章介紹了共享內(nèi)存的多核體系結(jié)構(gòu)和NUMA體系結(jié)構(gòu)。首先解釋了新的輕量級(jí)并發(fā)和并行模型的細(xì)節(jié),并且闡述了在編寫代碼之前以并行的思想指導(dǎo)設(shè)計(jì)方案的必要性。然后還討論了一些與并行優(yōu)化和可擴(kuò)展性局限性相關(guān)的經(jīng)典法則。本章的主要內(nèi)容包括:

● 將算法分解為并行的任務(wù)可以充分地發(fā)揮多硬件線程的優(yōu)勢。

● 可以使用更加簡潔且高效的輕量級(jí)并發(fā)模型。

● 通過改進(jìn)設(shè)計(jì),可以避免Amdahl法則所描述的可擴(kuò)展性的局限性。

● 可以考慮Gustafson法則。

● 必須盡可能地減少臨界區(qū),臨界區(qū)會(huì)限制可擴(kuò)展性。

● 在設(shè)計(jì)的時(shí)候要以并發(fā)、交錯(cuò)并發(fā)和并行化的思想作為指導(dǎo)。

● 必須考慮代碼并行化帶來的開銷。

● 在使用NUMA體系結(jié)構(gòu)的時(shí)候,可能會(huì)面臨異常的性能問題。

● 在編寫并行化代碼的時(shí)候,要考慮目前已經(jīng)學(xué)習(xí)的所有與現(xiàn)代硬件體系結(jié)構(gòu)相關(guān)的知識(shí)。


上一章目錄下一章

Copyright ? 讀書網(wǎng) rgspecialties.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)