真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

多核編程中的鎖競爭現(xiàn)象分析

這篇文章主要介紹“多核編程中的鎖競爭現(xiàn)象分析”,在日常操作中,相信很多人在多核編程中的鎖競爭現(xiàn)象分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”多核編程中的鎖競爭現(xiàn)象分析”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站制作、達(dá)川網(wǎng)絡(luò)推廣、成都小程序開發(fā)、達(dá)川網(wǎng)絡(luò)營銷、達(dá)川企業(yè)策劃、達(dá)川品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供達(dá)川建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

為了簡化起見,我們先看一個(gè)簡單的情況,假設(shè)有4個(gè)對(duì)等的任務(wù)同時(shí)啟動(dòng)運(yùn)行,假設(shè)每個(gè)任務(wù)剛開始時(shí)有一個(gè)需要鎖保護(hù)的操作,耗時(shí)為1,每個(gè)任務(wù)其他部分的耗時(shí)為25。這幾個(gè)任務(wù)啟動(dòng)運(yùn)行后的運(yùn)行情況如下圖所示:

多核編程中的鎖競爭現(xiàn)象分析

圖1:對(duì)等任務(wù)的鎖競爭示意圖

在上圖中,可以看出第1個(gè)任務(wù)直接執(zhí)行到結(jié)束,中間沒有等待,第2個(gè)任務(wù)等待了1個(gè)時(shí)間單位,第3個(gè)任務(wù)等待了2個(gè)時(shí)間單位,第3個(gè)任務(wù)等待了3個(gè)時(shí)間單位。

這樣有3個(gè)CPU總計(jì)等待了6個(gè)時(shí)間單位,如果這幾個(gè)任務(wù)是采用OpenMP里的所有任務(wù)都在同一點(diǎn)上進(jìn)行等待到全部任務(wù)執(zhí)行完再向下執(zhí)行時(shí),那么總的運(yùn)行時(shí)間將和第四個(gè)任務(wù)一樣為29個(gè)時(shí)間單位,加速系數(shù)為:(1+4×25)/ 29 = 3.48

即使以4個(gè)任務(wù)的平均時(shí)間27.5來進(jìn)行計(jì)算,加速系數(shù)=101/27.5 = 3.67

按 照阿姆爾達(dá)定律來計(jì)算加速系數(shù)的話,上述應(yīng)用中,串行時(shí)間為1,并行處理的總時(shí)間轉(zhuǎn)化為串行后為100個(gè)時(shí)間單位,如果放在4核CPU上運(yùn)行的話,加速系 數(shù)=p / (1 + (p-1)*f) = 4/(1+(4-1)*1/101) = 404/104 = 3.88

這就產(chǎn)生了一個(gè)奇怪的問題,使用了鎖之后,加速系數(shù)連阿姆爾達(dá)定律計(jì)算出來的加速系數(shù)都不如,更別說用Gustafson定律計(jì)算的加速系數(shù)了。

其實(shí)可以將上面4個(gè)任務(wù)的鎖競爭情況推廣到更一般的情況,假設(shè)有鎖保護(hù)的串行化時(shí)間為1,可并行化部分在單核CPU上的運(yùn)行時(shí)間為t,CPU核數(shù)為p,那么在p個(gè)對(duì)成任務(wù)同時(shí)運(yùn)行情況下,鎖競爭導(dǎo)致的總等待時(shí)間為:1+2+…+p = p*(p-1)/2

耗時(shí)最多的一個(gè)任務(wù)所用時(shí)間為: p + t/p

使用耗時(shí)最多的一個(gè)任務(wù)所用時(shí)間來當(dāng)作并行運(yùn)行時(shí)間的話,加速系數(shù)如下

S(p) = (t+1) / (p + t/p) = p*(t+1) / (p*p+t)       (鎖競爭下的加速系數(shù)公式)

這個(gè)公式表明在有鎖競爭情況下,如果核數(shù)固定情況下,可并行化部分越大,那么加速系數(shù)將越大。在并行化時(shí)間固定的情況下,如果CPU核數(shù)越多,那么加速系數(shù)將越小。

還是計(jì)算幾個(gè)實(shí)際的例子來說明上面公式的效果:

令t=100, p=4, 加速系數(shù)=4×(100 +1)/ (4*4+100) = 3.48

令t=100, p=16, 加速系數(shù)=16×(100+1) / (16*16+100) = 4.54

令t=100, p=64, 加速系數(shù)=64×(100+1) / (64*64+100) = 1.54

令t=100, p=128, 加速系數(shù)=128×(100+1) / (128*128+100) = 0.78

從以上計(jì)算可以看出,當(dāng)核數(shù)多到一定的時(shí)候,加速系數(shù)不僅不增加反而下降,核數(shù)增加到128時(shí),加速系數(shù)只有0.78,還不如在單核CPU上運(yùn)行的速度。

上面的例子中,鎖保護(hù)導(dǎo)致的串行代碼是在任務(wù)啟動(dòng)時(shí)調(diào)用的,其實(shí)對(duì)等任務(wù)中在其他地方調(diào)用的鎖保護(hù)的串行代碼也是一樣的。

對(duì)等型任務(wù)的鎖競爭現(xiàn)象在實(shí)際情況中是很常見的,比如服務(wù)器軟件,通常各個(gè)客戶端處理任務(wù)都是對(duì)等的,如果在里面使用了鎖的話,那么很容易造成上面說的加速系數(shù)隨CPU核數(shù)增多而下降的現(xiàn)象。

以前的服務(wù)器軟件一般運(yùn)行在雙CPU或四CPU機(jī)器上,所以鎖競爭導(dǎo)致的加速系數(shù)下降現(xiàn)象不明顯,進(jìn)入多核時(shí)代后,隨著CPU核數(shù)的增多,這個(gè)問題將變得很嚴(yán)重,所以多核時(shí)代對(duì)程序設(shè)計(jì)提出了新的挑戰(zhàn)。以前的多任務(wù)下的編程思想放到多核編程上不一定行得通。

所以簡單地認(rèn)為多核編程和以前的多任務(wù)編程或并行計(jì)算等同的話是不切實(shí)際的,在講串行化難題的那篇文章中提出了一些解決方面的對(duì)策,但是那些對(duì)策還有待業(yè)界繼續(xù)努力才能做得到。

到此,關(guān)于“多核編程中的鎖競爭現(xiàn)象分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


網(wǎng)頁題目:多核編程中的鎖競爭現(xiàn)象分析
網(wǎng)頁鏈接:http://weahome.cn/article/peohpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部