Der Unterschied zwischen starker und schwacher Skalierung besteht darin, wie die Problemgröße mit zunehmender Anzahl der Prozessoren angepasst wird und wie sich dies auf die Gesamteffizienz der parallelen Berechnung auswirkt.
starke Skalierung:
* Ziel: Reduzieren Sie die Zeit bis zur Lösung für eine * feste * Problemgröße, indem Sie die Anzahl der Prozessoren erhöhen. Das Problem bleibt gleich.
* Szenario: Sie haben ein bestimmtes Problem, das Sie so schnell wie möglich lösen möchten. Sie werfen mehr Ressourcen (Prozessoren) darauf, in der Hoffnung, die Ausführungszeit drastisch zu verkürzen.
* Effizienz: Eine starke Skalierungseffizienz wird daran gemessen, wie stark die Ausführungszeit abnimmt, wenn Sie die Anzahl der Prozessoren erhöhen. Idealerweise würde die Verdoppelung der Prozessoren die Ausführungszeit halbieren. Dies geschieht jedoch selten perfekt.
* Formel: `Effizienz =(Beschleunigung) / (Anzahl der Prozessoren)` `
* `Beschleunig =(Ausführungszeit für 1 Prozessor) / (Ausführungszeit für N -Prozessoren)`
* Eine Effizienz von 1 (oder 100%) ist eine perfekte, starke Skalierung.
* Einschränkungen: Starke Skalierung hat inhärente Grenzen. Wenn Sie mehr Prozessoren hinzufügen, wird die Arbeit, die jeder Prozessor ausführen muss, immer kleiner. Schließlich überwältigt der Overhead von Kommunikation, Synchronisation und Leerlaufzeit (Prozessoren, die auf andere warten) die Vorteile der Parallelisierung. Sie erreichen einen Punkt, an dem das Hinzufügen von mehr Prozessoren die Ausführungszeit tatsächlich erhöht. Dies ist auf das Amdahlsche Gesetz zurückzuführen, das besagt, dass die Beschleunigung eines Programms durch den Anteil des Programms begrenzt ist, das von Natur aus sequentiell ist (kann nicht parallelisiert werden).
* Auswirkungen auf die Leistung:
* positiv (anfangs): Reduzierte Ausführungszeit für die gleiche Problemgröße.
* negativ (schließlich): Abnehmende Renditen, wenn Kommunikationsaufwand dominiert. Kann sogar die Ausführungszeit über eine bestimmte Anzahl von Prozessoren hinaus erhöhen. Engpässe in gemeinsamen Ressourcen (z. B. Speicherbus) werden stärker ausgeprägt.
Schwache Skalierung:
* Ziel: Behalten Sie eine * konstante * Ausführungszeit bei, indem Sie sowohl die Problemgröße * als auch * die Anzahl der Prozessoren proportional erhöhen. Jeder Prozessor behandelt idealerweise die gleiche Menge an Arbeit.
* Szenario: Sie haben ein Problem, das Sie auf einem bestimmten Leistungsniveau lösen möchten, und möchten zunehmend große Versionen dieses Problems lösen und gleichzeitig diese Leistung beibehalten. Sie fügen Prozessoren hinzu und erhöhen die Problemgröße entsprechend.
* Effizienz: Die schwache Skalierungseffizienz wird gemessen, wie gut die Ausführungszeit konstant bleibt, wenn Sie die Anzahl der Prozessoren und die Problemgröße erhöhen. Wenn die Ausführungszeit konstant bleibt, haben Sie eine perfekte schwache Skalierung.
* Formel: `Effizienz =(Ausführungszeit für N -Prozessoren und skaliertes Problem) / (Ausführungszeit für 1 Prozessor und Basisproblem)`
* Eine Effizienz von 1 (oder 100%) zeigt eine perfekte schwache Skalierung (konstante Ausführungszeit). Praktischer messen Sie, wie nahe 1 der Effizienz bleibt, wenn Sie das Problem skalieren.
* Vorteile: Eine schwache Skalierung ist oft einfacher zu erreichen als eine starke Skalierung, insbesondere bei sehr großen Problemen. Da die Menge an Arbeit pro Prozessor relativ konstant bleibt, werden Kommunikations- und Synchronisationsaufwand nicht so dominierend. Es ist besonders nützlich für Probleme, bei denen Sie einen größeren Parameterraum untersuchen oder ein größeres System innerhalb einer festen Zeitspanne simulieren möchten.
* Einschränkungen: Eine schwache Skalierung ist nur sinnvoll, wenn das Problem angemessen skaliert werden kann. Einige Probleme haben inhärente Einschränkungen ihrer Größe oder Komplexität.
* Auswirkungen auf die Leistung:
* positiv: Ermöglicht Ihnen, viel größere Probleme in angemessener Zeit zu lösen, ohne dass die Ausführungszeit erheblich erhöht wird. Zeigt die Skalierbarkeit des parallelen Algorithmus und des Systems.
* negativ: Verringert nicht die Zeit, um ein * spezifisches * behobenes Problem zu lösen. Die Effizienz kann sich verschlechtern, wenn sich das Problem und die Anzahl der Prozessoren aufgrund von Kommunikationskosten letztendlich erhöhen.
Zusammenfassend:
| Feature | Starke Skalierung | Schwache Skalierung |
| ---------------- | ------------------------------------------------ | ---------------------------------------------- |
| Problemgröße | Behoben | Erhöht sich proportional mit der Anzahl der Prozessoren |
| Ziel | Reduzieren Sie die Ausführungszeit für ein festes Problem | Behalten Sie die konstante Ausführungszeit für skalierte Probleme bei |
| Fokus | Beschleunigung für eine bestimmte Aufgabe | Skalierbarkeit des Systems und Algorithmus |
| Schlüsselfrage | Wie viel schneller kann ich dieses Problem lösen? | Wie groß kann ich in einer bestimmten Zeit lösen? |
| Effizienz | Nimmt mit zunehmender Kommunikationsaufwand ab | Bleibt relativ konstant, wenn die Skalierung effizient ist |
| Amdahls Gesetz | Signifikante Einschränkung | Weniger Einschränkungen |
Beispiel:
* starke Skalierung: Simulation des Wetters für eine bestimmte Stadt für die nächsten 24 Stunden. Sie möchten die genaueste Prognose so schnell wie möglich erhalten. Sie erhöhen die Anzahl der Prozessoren, um die Berechnung zu beschleunigen.
* Schwache Skalierung: Simulation des Wetters für eine Region. Sie möchten das Wetter über einem immer größeren geografischen Bereich simulieren und gleichzeitig eine bestimmte Auflösung und Simulationszeit beibehalten. Sie fügen mehr Prozessoren hinzu, wenn die Größe der Region zunimmt.
In der Praxis sind sowohl starke als auch schwache Skalierung wichtige Überlegungen beim Entwerfen und Bewerten paralleler Algorithmen und Systeme. Die Wahl, auf die man sich konzentrieren kann, hängt vom spezifischen Problem und den gewünschten Leistungszielen ab.