中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解多核編程中的負載平衡

發布時間:2021-11-17 16:21:34 來源:億速云 閱讀:118 作者:iii 欄目:web開發

本篇內容主要講解“怎么理解多核編程中的負載平衡”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解多核編程中的負載平衡”吧!

多核CPU中,要很好地發揮出多個CPU的性能的話,必須保證分配到各個CPU上的任務有一個很好的負載平衡。否則一些CPU在運行,另外一些CPU處于空閑,無法發揮出多核CPU的優勢來。

要實現一個好的負載平衡通常有兩種方案,一種是靜態負載平衡,另外一種是動態負載平衡。

1、靜態負載平衡

靜態負載平衡中,需要人工將程序分割成多個可并行執行的部分,并且要保證分割成的各個部分能夠均衡地分布到各個CPU上運行,也就是說工作量要在多個任務間進行均勻的分配,使得達到高的加速系數。

靜 態負載平衡問題從數學上來說是一個NP完全性問題,Richard M. Karp, Jeffrey D. Ullman, Christos H.  Papadimitriou, M. Garey, D.  Johnson等人相繼在1972年到1983年間證明了靜態負載問題在幾種不同約束條件下的NP完全性。

雖然NP完全性問題在數學上是難題,但是這并不是標題中所說的難題,因為NP完全性問題一般都可以找到很有效的近似算法來解決。      

2、動態負載平衡

動態負載平衡是在程序的運行過程中來進行任務的分配達到負載平衡的目的。實際情況中存在許多不能由靜態負載平衡解決的問題,比如一個大的循環中,循環的次數是由外部輸入的,事先并不知道循環的次數,此時采用靜態負載平衡劃分策略就很難實現負載平衡。

動態負載平衡中對任務的調度一般是由系統來實現的,程序員通常只能選擇動態平衡的調度策略,不能修改調度策略,由于實際任務中存在很多的不確定因素,調度算法無法做得很優,因此動態負載平衡有時可能達不到既定的負載平衡要求。

3、負載平衡的難題在那里?

負載平衡的難題并不在于負載平衡的程度要達到多少,因為即使在各個CPU上分配的任務執行時間存在一些差距,但是隨著CPU核數的增多總能讓總的執行時間下降,從而使加速系數隨CPU核數的增加而增加。

負載平衡的困難之處在于程序中的可并行執行塊很多要靠程序員來劃分,當然CPU核數較少時,比如雙核或4核,這種劃分并不是很困難。但隨著核數的增加,劃分 的粒度將變得越來越細,到了16核以上時,估計程序員要為如何劃分任務而抓狂。比如一段順序執行的代碼,放到128核的CPU上運行,要手工劃分成128 個任務,其劃分的難度可想而知。

負載劃分的誤差會隨著CPU核數的增加而放大,比如一個需要16個時間單位的程序分到4個任務上執行,平均每個任務上的負載執行時間為4個時間單位,劃分誤 差為1個時間單位的話,那么加速系數變成 16/(4+1)=3.2,是理想情況下加速系數  4的80%。但是如果放到一個16核CPU上運行的話,如果某個任務的劃分誤差如果為0.5個時間單位的話,那么加速系數變成16/(1+0.5) =  10.67,只有理想的加速系數16的66.7%,如果核數再增加的話,由于誤差的放大,加速系數相比于理想加速系數的比例還會下降。

負載劃分的難題還體現在CPU和軟件的升級上,比如在4核CPU上的負載劃分是均衡的,但到了8核、16核上,負載也許又變得不均衡了。軟件升級也一樣, 當軟件增加功能后,負載平衡又會遭到破壞,又需要重新劃分負載使其達到平衡,這樣一來軟件設計的難度和麻煩大大增加了。

如果使用了鎖的話,一些看起來是均衡的負載也可能會由于鎖競爭變得不平衡起來

4、負載平衡的應對策略

對于運算量較小的軟件,即使放到單核CPU上運行速度也很快,負載平衡做得差一些并沒有太大影響,實際中負載平衡要考慮的是大運算量和規模很大的軟件,這些軟件需要在多核上進行負載平衡才能較好地利用多核來提高性能。

對于大規模的軟件,負載平衡方面采取的應對策略是發展劃分并行塊的宏觀劃分方法,從整個軟件系統層面來進行劃分,而不是象傳統的針對某些局部的程序和算法來進行并行分解,因為局部的程序通常都很難分解成幾十個以上的任務來運行。

另外一個應對策略是在工具層面的,也就是編譯工具能夠協助人工進行并行塊的分解,并找出良好的分解方案來,這方面Intel已經作出了一些努力,但是還需要更多的努力讓工具的功能更強大一些才能應對核數較多時的情況。

到此,相信大家對“怎么理解多核編程中的負載平衡”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

紫阳县| 海盐县| 洛川县| 射洪县| 逊克县| 田东县| 准格尔旗| 宝应县| 徐汇区| 高淳县| 浦东新区| 朝阳区| 博湖县| 唐河县| 如东县| 南丰县| 万载县| 芮城县| 呼图壁县| 鹿泉市| 太和县| 丹巴县| 滨海县| 鄂托克前旗| 嵊州市| 广宗县| 慈溪市| 赣州市| 武义县| 石首市| 双峰县| 新泰市| 蕉岭县| 从化市| 张家界市| 德令哈市| 新安县| 原阳县| 沿河| 保山市| 兰州市|