多核編程中的鎖競爭現象相關文章鏈接:多核編程中的負載平衡難題多核編程的幾個難題及其應對策略(難題一)OpenMP并行程序設計(二)OpenMP并行程序" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

多核編程中的鎖競爭難題

系統 2440 0
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
多核編程中的鎖競爭現象
在前一篇講解多核編程的幾個難題及其對策(難題一)的文章中提到了鎖競爭會讓串行化隨CPU的核數增多而加劇的現象,這篇文章就來對多核編程的鎖競爭進行深入的分析。
為了簡化起見,我們先看一個簡單的情況,假設有4個對等的任務同時啟動運行,假設每個任務剛開始時有一個需要鎖保護的操作,耗時為1,每個任務其他部分的耗時為25。這幾個任務啟動運行后的運行情況如下圖所示:
圖1:對等任務的鎖競爭示意圖
在上圖中,可以看出第1個任務直接執行到結束,中間沒有等待,第2個任務等待了1個時間單位,第3個任務等待了2個時間單位,第3個任務等待了3個時間單位。
這樣有3個CPU總計等待了6個時間單位,如果這幾個任務是采用OpenMP里的所有任務都在同一點上進行等待到全部任務執行完再向下執行時,那么總的運行時間將和第四個任務一樣為29個時間單位,加速系數為:(1+4×25)/ 29 = 3.48
即使以4個任務的平均時間27.5來進行計算,加速系數=101/27.5 = 3.67
按照阿姆爾達定律來計算加速系數的話,上述應用中,串行時間為1,并行處理的總時間轉化為串行后為100個時間單位,如果放在4核CPU上運行的話,加速系數=p / (1 + (p-1)*f) = 4/(1+(4-1)*1/101) = 404/104 = 3.88
這就產生了一個奇怪的問題,使用了鎖之后,加速系數連阿姆爾達定律計算出來的加速系數都不如,更別說用 Gustafson 定律計算的加速系數了。
其實可以將上面 4 個任務的鎖競爭情況推廣到更一般的情況,假設有鎖保護的串行化時間為 1 ,可并行化部分在單核 CPU 上的運行時間為 t CPU 核數為 p ,那么在 p 個對成任務同時運行情況下,鎖競爭導致的總等待時間為: 1 2 p p*(p-1)/2
耗時最多的一個任務所用時間為: p + t/p
使用耗時最多的一個任務所用時間來當作并行運行時間的話,加速系數如下
S(p) = (t+1) / (p + t/p) = p*(t+1) / (p*p+t) (鎖競爭下的加速系數公式)
這個公式表明在有鎖競爭情況下,如果核數固定情況下,可并行化部分越大,那么加速系數將越大。在并行化時間固定的情況下,如果 CPU 核數越多,那么加速系數將越小。
還是計算幾個實際的例子來說明上面公式的效果:
t=100, p=4, 加速系數= 4 ×( 100 +1)/ (4*4+100) = 3.48
t=100, p=16, 加速系數= 16 ×( 100+1) / (16*16+100) = 4.54
t=100, p=64, 加速系數= 64 ×( 100+1) / (64*64+100) = 1.54
t=100, p=128, 加速系數= 128 ×( 100+1) / (128*128+100) = 0.78
從以上計算可以看出,當核數多到一定的時候,加速系數不僅不增加反而下降,核數增加到 128 時,加速系數只有 0.78 ,還不如在單核 CPU 上運行的速度。
上面的例子中,鎖保護導致的串行代碼是在任務啟動時調用的,其實對等任務中在其他地方調用的鎖保護的串行代碼也是一樣的。
對等型任務的鎖競爭現象在實際情況中是很常見的,比如服務器軟件,通常各個客戶端處理任務都是對等的,如果在里面使用了鎖的話,那么很容易造成上面說的加速系數隨 CPU 核數增多而下降的現象。
以前的服務器軟件一般運行在雙 CPU 或四 CPU 機器上,所以鎖競爭導致的加速系數下降現象不明顯,進入多核時代后,隨著 CPU 核數的增多,這個問題將變得很嚴重,所以多核時代對程序設計提出了新的挑戰。以前的多任務下的編程思想放到多核編程上不一定行得通。
所以簡單地認為多核編程和以前的多任務編程或并行計算等同的話是不切實際的,在講串行化難題的那篇文章中提出了一些解決方面的對策,但是那些對策還有待業界繼續努力才能做得到。
當然由于目前市面上銷售的多核CPU還是雙核和四核的,等到16核以上的CPU大規模進入市場可能還有幾年時間,相信業界在未來的幾年內能夠對于上面對等任務上的鎖競爭問題找到更好的解決方案。
作者介紹: 周偉明,自由職業,從事軟件行業十年有余。目前主要關注軟件測試、多核編程、軟件設計等基礎方面的內容。寫有《多任務下的數據結構與算法》一書,目前正在寫作《軟件測試實踐》一書,計劃在不久的將來寫一本多核編程方面的書籍。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1559718


多核編程中的鎖競爭難題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美综合区 | 国产精品一区二区久久 | 国产毛片a级 | 久久久精品中文字幕 | hd性videos意大利复古 | 国产一区二区丁香婷婷 | 国产色视频一区 | 亚洲热线99精品视频 | 91精品国产综合久久福利软件 | 美女扣下面流白浆丝袜 | 国产精品黄大片观看 | 国内精品视频在线观看 | 人人九九 | 91在线播放免费不卡无毒 | 国产限制级在线 | 伊人伊人网 | 老美AA片 | 久草青娱乐 | 一区二区三区免费网站 | 我把寡妇日出水好爽视频 | 91九色视频在线播放 | 99re6在线视频精品免费 | 国内精品视频区在线2021 | 一级午夜a毛片免费视频 | 末成年毛片在线播放 | 黄色网页免费 | www.久久精品| www.91p| 在线视频 中文字幕 | 欧美a级成人淫片免费看 | 欧美色综合| www.国产 | 国产精品小视频在线观看 | 国产精品久久久久久久久久久新郎 | 爱爱综合网 | 国产一区二 | 成人一区二区三区在线 | 国产成人综合网在线观看 | 综合色久 | 亚洲综合色视频在线观看 | 欧美激情网|