多核编程中的负载平衡难题_PHP教程
多核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已经作出了一些努力,但是还需要更多的努力让工具的功能更强大一些才能应对核数较多时的情况。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Laut Nachrichten dieser Website vom 28. Juli berichteten die ausländischen Medien TechRader, dass Fujitsu den FUJITSU-MONAKA-Prozessor (im Folgenden als MONAKA bezeichnet) detailliert vorgestellt habe, dessen Auslieferung im Jahr 2027 geplant sei. MONAKACPU basiert auf der „Cloud Native 3D Many-Core“-Architektur und übernimmt den Arm-Befehlssatz. Es ist auf die Bereiche Rechenzentrum, Edge und Telekommunikation ausgerichtet. Es ist für KI-Computing geeignet und kann RAS1 auf Mainframe-Ebene realisieren. Fujitsu sagte, dass MONAKA einen Sprung in puncto Energieeffizienz und Leistung machen wird: Dank Technologien wie der Ultra-Low-Voltage-Technologie (ULV) kann die CPU im Jahr 2027 die doppelte Energieeffizienz von Konkurrenzprodukten erreichen, und für die Kühlung ist keine Wasserkühlung erforderlich Darüber hinaus kann die Anwendungsleistung des Prozessors doppelt so hoch sein wie die Ihres Konkurrenten. In puncto Anleitung ist MONAKA mit Vector ausgestattet

Intel Arrow Lake wird voraussichtlich auf der gleichen Prozessorarchitektur wie Lunar Lake basieren, was bedeutet, dass Intels brandneue Lion Cove-Leistungskerne mit den wirtschaftlichen Skymont-Effizienzkernen kombiniert werden. Während Lunar Lake nur als Ava verfügbar ist

Inteli5-12600 und höher CPUs, i5-13400 und höher CPUs verfügen über P-Core-Leistungskerne (große Kerne) und E-Core-Energieeffizienzkerne (kleine Kerne), einige Spiele kann Frames verlieren, nicht so gut wie die alte CPU. Tatsächlich geht das System davon aus, dass die jüngere CPU damit umgehen kann und es nicht nötig ist, die ältere zu versenden Der ältere Kern ruhte und funktionierte nicht. Der folgende Editor zeigt Ihnen, wie Sie dieses Problem lösen können. Erstellen Sie ein neues Textdokument auf dem Desktop, kopieren Sie den folgenden Inhalt, speichern Sie ihn als 1.reg und klicken Sie dann mit der rechten Maustaste, um ihn zusammenzuführen. WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SY

Bei Prozessoren der 13. und 14. Generation kam es zu Spielabstürzen, Bluescreens des Todes, automatischen Neustarts des Computers und anderen Fehlern. Nach einer Nachfrage von nvidia lag die Ursache kürzlich bei Intel machte die Stabilitätsprobleme der Prozessoren der 13./14. Generation für Motherboard- und BIOS-Systemhersteller verantwortlich. Jetzt hat auch Intel eine Lösung vorgeschlagen. Werfen wir einen Blick darauf. Es ist möglich, dass im BIOS der Mainboards der 600er- und 700er-Serie die Einstellungsmöglichkeiten bezüglich Spannung, Frequenz, Stromverbrauch und Stabilität der Core-Prozessoren der 13. und 14. Generation falsch eingestellt sind oder die Einstellwerte außerhalb des offiziellen Bereichs liegen Die von Intel empfohlenen Einstellungen führen zu bzw. erhöhen das Risiko eines instabilen Prozessorbetriebs (siehe Abbildung unten): [C

Laut Nachrichten dieser Website vom 22. August bemerkte der X-Plattform-Benutzer 포채포채 (@harukaze5719), dass Intel auf seiner offiziellen Website DESIGN-iNTOOLSstore zwei Adapterplatinen aufgelistet hat, die für den Test von Netzteilen der LGA9324-OKS-AP-Plattform geeignet sind. ▲Adapterplatine der BLU-Version, zusätzlich zur RED-Version schrieb Intel in der Beschreibung dieser beiden Produkte, dass die LGA9324-OKS-APOakStream-Plattform DiamondRapids unterstützt, was die Existenz des Xeon-Leistungskerns der nächsten Generation nach Xeon 6 „GraniteRapids“ positiv bestätigt Prozessoren und entsprechende Plattformen. Aktuelle Informationen zu DiamondRapids-Prozessoren und OakStream-Plattformen

Laut Nachrichten dieser Website vom 3. Juli erklärte der Blogger Jinzhu Upgrade Package kürzlich in einer Antwort unter dem Weibo-Update, dass der AMD KrackanPoint-Prozessor Teil der Ryzen AI300-Produktlinie sei und nächstes Jahr auf den Markt kommen werde. AMD hat den RyzenAI300-Prozessor auf der Taipei International Computer Show 2024 vorgestellt. Die beiden derzeit vorgestellten Produkte basieren auf der StrixPoint-Serie. Die Kernspezifikationen sind wie folgt: AMD RyzenAI9HX370: 12-Kern-CPU (4×Zen5+8×Zen5c), 16CU Skala RDNA3.5-Architektur Radeon890M-Kerndisplay; AMD RyzenAI9365: 10-Kern-CPU (4×Zen5+6×Zen5c), 12CU-Skala

Laut Nachrichten dieser Website vom 29. Juli, basierend auf den Nachrichten der X-Plattform-Quelle HXL (@9950pro) und dem Artikel der ausländischen Medien Tom'sHardware, ist der Siebdruckfehler auf der oberen Abdeckung einer der Gründe, warum AMD die Veröffentlichung von Ryzen verzögert hat 9000 Desktop-Prozessor. Es ist noch nicht bestätigt, ob die Verschiebung dieses Verkaufs auch mit anderen Problemen zusammenhängt. AMD gab in seiner Ankündigung zuvor an, dass bei der Endkontrolle festgestellt wurde, dass die erste Charge von Produktionseinheiten, die an Vertriebspartner gesendet wurden, die Qualitätserwartungen von AMD nicht vollständig erfüllte und sich die Einzelhandelslieferung von Desktop-Prozessoren der Ryzen 9000-Serie kurzzeitig verzögern wird. Darunter sind die Prozessoren Ryzen 79700X und Ryzen 59600X, die am 8. August verfügbar sein werden, und die Prozessoren Ryzen 99950X und Ryzen 99900X, die am 15. August verfügbar sein werden. HXL

Wenn Sie kürzlich den MagicX XU Mini M gekauft haben, könnte diese Nachricht eine Überraschung sein. Ein Hardware- und Software-Teardown der neu veröffentlichten Handheld-Konsole ergab, dass es sich bei der beworbenen RK3562-CPU tatsächlich um einen älteren RK3326-Prozessor mit geringerer Spezifikation handelt.
