Forum: Mikrocontroller und Digitale Elektronik Warum sind Rechenarchitekturen begrenzt skallierbar?


von Goldenboyx1 (Gast)


Lesenswert?

Gibt es Ursachen für die limitierte Skalierbarkeit von 
Rechenarchitekturen die prinzipieller Natur sind?
Oder kann es eine Rechenarchitektur geben die in der Praxis theoretisch 
unendlich skalierbar ist?

Die Frage die mich interessiert ist ob die Limitierungen rein 
technischer Natur sind oder ob man da eher so was wie einen Naturgesetz 
hat?
z.B. mit zunehmender Größe wachsen die Leitungswege, was irgendwann zu 
immer längeren Wartezeiten der Recheneinheiten führt.
Oder das anwachsen der Datenmenge für die Kommunikation zwischen den 
Recheneinheiten, die irgendwann so groß wird dass es nicht genug 
Bandbreite gibt.

Es ist ja z.B. klar dass Recheneinheiten nicht beliebig kleiner werden 
können. Folglich können die Datenleitungen zwischen den Recheneinheiten 
nicht immer kürzer werden.
Wenn die kleinste mögliche Recheneinheit gebaut ist und man fängt an 
diese Recheneinheiten nebeneinander und übereinander zu stappeln fangen 
die Datenleitungen an zu wachsen.

von Max M. (jens2001)


Lesenswert?

Goldenboyx1 schrieb:
> in der Praxis theoretisch

LOL!

von foobar (Gast)


Lesenswert?

Die Skalierung wird durch den Zugriff auf gemeinsam genutzte Resourcen 
begrenzt - typischerweise das RAM.  Systeme, die keine gemeinsamen 
Resourcen nutzen, skalieren bereits jetzt beliebig.

von Wolfgang (Gast)


Lesenswert?

Goldenboyx1 schrieb:
> Wenn die kleinste mögliche Recheneinheit gebaut ist und man fängt an
> diese Recheneinheiten nebeneinander und übereinander zu stappeln fangen
> die Datenleitungen an zu wachsen.
Daran siehst du schon, dass es auf die Aufgabe ankommt. Eine 
Recheneinheit, die lokal viel rechnen kann und wenig auf externe 
Datenzugriffe angewiesen ist, hat damit wenig Probleme.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Am besten gehen Aufgaben, die sich gut parallelisieren lassen, so daß 
viele Prozesse bzw. Maschinen einen Teil der Gesamtaufgabe berechnen.

Was eher schlecht funktioniert sind Aufgaben, wo eine Berechnung immer 
auf das Ergebnis einer vorangegangenen Berechung angewiesen ist.

von (prx) A. K. (prx)


Lesenswert?

Goldenboyx1 schrieb:
> Gibt es Ursachen für die limitierte Skalierbarkeit von
> Rechenarchitekturen die prinzipieller Natur sind?

Ein schon recht altes "Gesetz" ist das von Amdahl:
https://de.wikipedia.org/wiki/Amdahlsches_Gesetz

von (prx) A. K. (prx)


Lesenswert?

Ben B. schrieb:
> Was eher schlecht funktioniert sind Aufgaben, wo eine Berechnung immer
> auf das Ergebnis einer vorangegangenen Berechung angewiesen ist.

Wobei das auch bei Entscheidungen statt Berechnungen gilt.

von Rolf M. (rmagnus)


Lesenswert?

foobar schrieb:
> Die Skalierung wird durch den Zugriff auf gemeinsam genutzte Resourcen
> begrenzt - typischerweise das RAM.  Systeme, die keine gemeinsamen
> Resourcen nutzen, skalieren bereits jetzt beliebig.

Wenn es keinerlei gemeinsamen Ressourcen gibt, ist es dann überhaupt 
zusammen als ein System zu betrachten?

von Klaus R. (klara)


Lesenswert?

Rolf M. schrieb:
> Wenn es keinerlei gemeinsamen Ressourcen gibt, ist es dann überhaupt
> zusammen als ein System zu betrachten?

Siehe SETI und Co.
mfg klaus

von Rolf M. (rmagnus)


Lesenswert?

Klaus R. schrieb:
> Rolf M. schrieb:
>> Wenn es keinerlei gemeinsamen Ressourcen gibt, ist es dann überhaupt
>> zusammen als ein System zu betrachten?
>
> Siehe SETI und Co.

Auch da gibt es gemeinsame Ressourcen, in dem Fall die Datenbank, von 
der die Eingangsdaten kommen und auf der die Ergebnisse gespeichert und 
verarbeitet werden, bzw. deren Verbindung mit dem Internet.

von MikeH (Gast)


Lesenswert?

Wenn du wirklich an einer theoretischen Grenze interessiert bist, 
solltest du dir das Landau-Limit anschauen.

https://de.wikipedia.org/wiki/Landauer-Prinzip

Praktische Rechner sind allerdings um viele Größenordnungen von dieser 
Granze entfernt.

von Zeitjäger  . (forgoden)


Lesenswert?

Das Naturgesetz verbietet das. Sogar die Intelligenz ist nicht beliebig 
skalierbar.

Flaschenhals-Datenstrom.
https://de.wikipedia.org/wiki/Von-Neumann-Architektur#Von-Neumann-Flaschenhals

Parallele Ausführungen bedeutet, dass ich ein komplexes 
Newton-Physik-System nicht mehr ausrechnen kann, weil jedes berechnetes 
Atom von allen anderen Atomen beeinflusst werden müssten.

Wenn ich bessere Simulationen haben will, dann berechne ich den 
Atomschlag nicht im Computer, sondern ich führe sie aus.

von Rolf M. (rmagnus)


Lesenswert?

Helwein V. schrieb:
> Parallele Ausführungen bedeutet, dass ich ein komplexes
> Newton-Physik-System nicht mehr ausrechnen kann, weil jedes berechnetes
> Atom von allen anderen Atomen beeinflusst werden müssten.

Das hat aber nichts mit paralleler Ausführung zu tun. Ohne Parallelität 
hat man das selbe Problem.

von oszi40 (Gast)


Lesenswert?

Irgendwo ist immer ein Flaschenhals, der limitiert.

von Pandur S. (jetztnicht)


Lesenswert?

Vielleicht aendern sich auch die Anforderungen mit der Groesse. Eine 
Turing Maschine ist zwar denkbar, aber nicht wirklich optimal. Fuer gar 
nichts.
Und dann benotigt man fuer einen neue Architektur auch eine 
Infrastruktur, sprich Compiler, usw, bedeutet man benoetigt einem Markt, 
und Investoren.

Es gibt ja spezialisierte Architekturen. zB GPU.

von sid (Gast)


Lesenswert?

Goldenboyx1 schrieb:
> die in der Praxis theoretisch unendlich

Ähm ja das ist ein Hirnfurz was :D

Aber ne, gibt es nicht;
parallel ist schön; aber auch jedes nochso komplexe Problem kann sich 
nicht beliebig klein aufbrechen lassen, deswegen ist "unendlich" schon 
im Ansatz falsch

Sobald die Recheneinheit eine Rückgabe erzeugt (und das muss sie 
zwangsläufig um Sinn zu machen)
ist mindestens der Rückgabekanal als limitierend zu betrachten.

Ansprechbarkeit (addressierung) ist ein weiterer Faktor den man sogar in 
der Theorie als limitierend betrachten muss.

Grundsätzlich gibt es also immer einen Punkt, an dem eine weitere 
Recheneinheit keinen Geschwindigkeitsvorteil mehr bei der Berechnung des 
Problems erzeugt.
Entweder weil die Datenübergabe an den Rechenkern den erwarteten 
Zeitvorteil kompensiert, oder die Ergebnissmeldung (im Zweifel beides)

Und während semi autarke Botnetze (wie seti)
das relativ gut verschleiern, funktioniert das auch nur deswegen,
weil die Daten redundant gerechnet werden und das Netz an sich selbst 
schon stark begrenzt ist.
Aufgaben und Rückgaben caching sind der einzige Weg ein Botnetz 
einigermassen stabil laufen zu haben.
implementiert man mirrors und bubbling data kann man die Controllerlast 
weiter reduzieren,
aber selbst mit allen Tricks gäbe es einen Punkt an dem die zentrale 
Datenbank überlastet werden würde.

In der Praxis gibt es immernoch Auswege daraus,
in der Theorie allerdings ist dem immer eine Grenze gesetzt.
(spätestens weil man nicht alle 10^80 Teilchen im bekannten Universum in 
einen eigenständigen Rechner umwandeln kann ;))

'sid

von Goldenboyx1 (Gast)


Lesenswert?

Interessante Antworten und interessante Indizien. Indizien weil mir 
bisher noch nicht wirklich klar ist ob unendliche Skalierbarkeit 
wirklich prinzipiell unmöglich ist. Es wirkt so als würde der eindeutige 
mathematische Beweis fehlen. Auch wenn vieles darauf hindeutet dass es 
prinzipiell begrenzt ist.

Wenn wir die Rechenkraft von Computern als Problemlöser interpretieren 
und menschlichen Fortschritt ebenfalls als Problemlösung auffassen. Ist 
es dann so dass die Menschheit, quasi als ein biologischer Prozess, 
ebenfalls limitiert ist?

Der aktuelle Fortschritt sprengt bereits die Fähigkeiten einzelner 
Menschen. Bisher konnten immer komplexere und aufwendigere Probleme 
dadurch gelöst werden dass Menschen sich organisierten und ein gewisser 
Wissensaustausch stattfindet.
Doch können organisierte Projekte beliebig groß werden?

Können 100 Mio. Menschen an einem Projekt arbeiten? Könnten 100 Mrd. 
Menschen zusammenarbeiten?
Oder würde man selbst mit den besten Organisationsmethoden und 
Kommunikationsmittel irgendwann an eine prinzipielle Grenze stoßen?

von oszi40 (Gast)


Lesenswert?

Mit der Anzahl der beteiligten CPUs steigt der Organisationsaufwand. 
Ähnlich Konzern gegen Ein-Mann-Firma. Eine Fehlersuche könnte auch 
interessant werden sobald das Zeitfenster nicht reicht.

von georg (Gast)


Lesenswert?

sid schrieb:
> ist mindestens der Rückgabekanal als limitierend zu betrachten

Bei einem Computer, der Jahrhunderte rechnet und dann 42 ausgibt ist das 
nicht wirklich der Flaschenhals.

Georg

von sid (Gast)


Lesenswert?

georg schrieb:
> sid schrieb:
>> ist mindestens der Rückgabekanal als limitierend zu betrachten
>
> Bei einem Computer, der Jahrhunderte rechnet und dann 42 ausgibt ist das
> nicht wirklich der Flaschenhals.
>
> Georg

Du verwechselst Rückgabekanal mit Ausgabe.

Nehmen wir ein banales true false Problem an
für die durchaus leicht parallelisierbare Frage: "ist x Prim"
nun nimmst Du 2^80 -1 Prozessorkerne die alle ihre ureigene uniqueID
(integer zwischen 1 und 2^80) daraufhin prüfen
der Auftrag ist schnell gemacht ..
proc0 sendet also bool is_prim(proc_id) an alle kerne

die Rückgabe ist der weg zum zwischen den 2^80 -1 prozessorkernen und 
dem
auftragstellenden Master (proc0)
der empfängt also im Zweifel zeitgleich 2^79 mal FALSE
und muss diese 604462909807314587353088 binären Einzelinformationen
irgendwie fassen können.
Die Ausgabe
2 false
4 false
6 false etc.pp.
oder
xyz numbers are prime
ist dem ja nachgeschaltet und besonders im letzten Fall bestimmt nicht 
der bottleneck ;)

Goldenboyx1 schrieb:
> Indizien weil mir
> bisher noch nicht wirklich klar ist ob unendliche Skalierbarkeit
> wirklich prinzipiell unmöglich ist.

Nun das ist aber mehr ein Problem Deinerseits fürchte ich.
Okay es bleibt dabei,
die Zahl der Atome im Universum ist ENDLICH
selbst WENN jedes Atom ein eigener Prozessor wäre,
wäre die Anzahl der Prozessoren die damit prinzipiell möglich sind 
ebenfalls ENDLICH!
Damit ist die UNENDLICHE skalierbarkeit de facto vom Tisch.

Selbst unermessliche Skalierbarkeit ist nur theoretisch möglich,
eben weil Du Einheits-verhalten verlangst.
Eine Eingabe, eine Ausgabe und unermessliche Rechenkapazität in der 
Mitte.
scheitert schon an der Auftragserteilung.
Du kannst einfach nicht schnell genug Zählen.
und bis ins "unendliche" kannst Du sowieso nicht zählen
wie also willst Du die Prozessoren adressieren?
Und das musst Du immer wenn Du von Systemeinheit sprichst.
unermesslich grosse Zahlen sind leicht zu schreiben
in der Grössenordnung von 2^1024 sogar in Gebrauch
aber versuchst du nur bis 2^80 hochzuzählen in Einzelschritten wirst Du 
am Hitzetod des Universums scheitern (weil auch dessen Lebenszeit 
ENDLICH ist)
2^80 sind 1.208.925.819.614.629.174.706.176
sagen wir du kannst 100.000 Zahlen pro sekunde hochzählen
(und prozessoren addressieren)
also durch (~)3.155.673.600.000
brauchst Du 383.095.963.921,82 Jahre (383 milliarden jahre)
ab welcher Geschwindigkeit denkst Du Du könntest für Dich erfassbare
Zeitspannen erreichen?

Also vielleicht ignorierst Du den inflationären Umgang mit "unendlich" 
wenn Du von physischen Einheiten sprichst besser schnell,
und formulierst Die Frage ggf um.

'sid

von Berufsrevolutionär (Gast)


Lesenswert?

Goldenboyx1 schrieb:
> Gibt es Ursachen für die limitierte Skalierbarkeit von
> Rechenarchitekturen die prinzipieller Natur sind?

42!

Sorry, aber das ist ein typisches Beispiel einer Frage deren Antwort 
zweckfrei ist, weil die Frage scheisse formuliert ist.

So wie beim "Hitchhiker", die Frage nach dem "Life, universe and 
everything" (die deren Antwort 'fourty two' lautet).

Den schaut man auf das Internet und insbesonders IoT muss man schon 
einräumen, das Rechnerarchitekturen beliebig erweiterbar und 
zusammenschaltbar sind.

'Skalierbarkeit von Rechenarchitekturen' ist da ein ziemlich dehnbarer 
Begriff, den man auch so postulieren kann, das er nie den Wert Null 
annimmt. Ohnehin wird der Begriff der Skalierbarkeit nicht binär 
eingesetzt (ist oder ist nicht Skalierbar) sondern um qualitative 
Abstufungen (ist gut , ist weniger gut skalierbar) erklennbar zu machen.

von Berufsrevolutionär (Gast)


Lesenswert?

georg schrieb:
> sid schrieb:
>> ist mindestens der Rückgabekanal als limitierend zu betrachten
>
> Bei einem Computer, der Jahrhunderte rechnet und dann 42 ausgibt ist das
> nicht wirklich der Flaschenhals.

Naja, es sind Millionen Jahre (wobei sich Jahr auf ein anderes 
Planetensystem als Erde-Sonne bezieht) nicht hunderte und hat er mehr 
als ein schnödes fourty two von sich gegeben:
https://youtu.be/5ZLtcTZP2js?t=22

;-)

von Berufsrevolutionär (Gast)


Lesenswert?

Goldenboyx1 schrieb:
> Doch können organisierte Projekte beliebig groß werden?
>
> Können 100 Mio. Menschen an einem Projekt arbeiten? Könnten 100 Mrd.
> Menschen zusammenarbeiten?
> Oder würde man selbst mit den besten Organisationsmethoden und
> Kommunikationsmittel irgendwann an eine prinzipielle Grenze stoßen?

Die Grenze liegt nicht bei 100 Millionen, die Grenze liegt bei 7.

Bei einer Teamgröße von 7 ist das Optimum erreicht. Dann noch mehr Leute 
zu Team abzukommandieren führt zu mehr Kommunikation als 
Effizientsteigerung im Team.
Sowas lernt man in Vorlesungen/Schulungen zum Thema 'Software 
engineering'.
Das ist IMHO ein sinnvollerer Zeitvertreib als das aufgeblasene palaver 
über angeblich Mathematische Beweise und Indizien.

von georg (Gast)


Lesenswert?

Berufsrevolutionär schrieb:
> Bei einer Teamgröße von 7 ist das Optimum erreicht

Was für ein Optimum - man kann ein System wie Windows oder Office nicht 
mit 7 Programmierern verwirklichen, also ist bei grösseren Projekten 
diese Frage irrelevant, es muss eben mit hunderten gehen.

Auf der anderen Seite ist das natürlich vom Problem abhängig - ein 
Software-Guru hat mal gesagt, im Team programmieren wäre wie der Versuch 
die Zeit für eine Schwangerschaft durch Einsatz von 9 Frauen auf 1 Monat 
zu reduzieren.

sid schrieb:
> die Zahl der Atome im Universum ist ENDLICH

Das ist ein völlig unbewiesene Behauptung.

Georg

von lächler (Gast)


Lesenswert?

Goldenboyx1 schrieb:
> Oder kann es eine Rechenarchitektur geben die in der Praxis theoretisch
> unendlich skalierbar ist?

Physikalische Systeme sind immer endlich.
:-)

von Leadership vor die Säue (Gast)


Lesenswert?

georg schrieb:

> Was für ein Optimum - man kann ein System wie Windows oder Office nicht
> mit 7 Programmierern verwirklichen, also ist bei grösseren Projekten
> diese Frage irrelevant, es muss eben mit hunderten gehen.

Herrgottssakrament, das hat man davon, daß die Jugend von heute nicht 
beim Militär war, denn dort lernt man, das man einen großen Haufen 
Kanonenfutter nur steuern kann, wenn man in 'Teams' aka militärische 
Einheiten wie Gruppe, Zug, Kompanie, Batallion etc. strukturiert. 
'Divide et impera' wie schon die römischen Bettlakenträger wussten.

von Joachim B. (jar)


Lesenswert?

Goldenboyx1 schrieb:
> Gibt es Ursachen für die limitierte Skalierbarkeit von
> Rechenarchitekturen die prinzipieller Natur sind?

weil ALLES nur limitiert skalierbar ist? (aus Prinzip)
Auch 1 Mio Maurer mauern 1m² Mauer nicht 1 Mio x schneller als einer!

Fragen gibt es.........

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

georg schrieb:
> Berufsrevolutionär schrieb:
>> Bei einer Teamgröße von 7 ist das Optimum erreicht
>
> Was für ein Optimum - man kann ein System wie Windows oder Office nicht
> mit 7 Programmierern verwirklichen, also ist bei grösseren Projekten
> diese Frage irrelevant, es muss eben mit hunderten gehen.

Unsinn. Man steckt dann aber nicht 100 in ein Team, sondern teilt das 
Problem auf und macht entsprechend wieder kleinere Teams für die Teile.

Die Frage des TE ist so schwammig, wie sie gestellt ist, aber wirklich 
unsinning. Die Antworten sagen mehr darüber aus, was der jeweilige 
Antworter sich unter der Frage vorgestellt hat.

In der Praxis stellt sich die Frage allein schon deswegen nicht, weil es 
gar keine Aufgabenstellung gibt, die unendlich parallelisiert bearbeitet 
werden könnte.

von Goldenboyx1 (Gast)


Lesenswert?

Ich kann ja mal den ursprünglichen Gedanken der Frage wiedergeben. Es 
ist die Überlegung darüber ob die Leistungsfähigkeit (Problemlösungen, 
Berechnungen, Intelligenz, Anhäufung von Wissen) eines System 
(Gesellschaft, Computer, Lebewesen) theoretisch beliebig groß werden 
kann.

Dabei sind physikalische Grenzen wie dass es möglicherweise nicht 
unendlich viel Materie und Raum gibt außer Acht gelassen. Physikalische 
Gesetze die ein beliebiges anwachsen eines einheitlichen Systems bereits 
lokal begrenzen sind natürlich von Bedeutung.

Die Antwort auf die Frage würde beispielsweise auch erklären ob das was 
wir Intelligenz nennen theoretisch beliebig groß anwachsen kann.
Oder ob selbst die leistungsfähigste Maschine, also eine KI, an 
prinzipielle Grenzen stößt.

von S. R. (svenska)


Lesenswert?

Joachim B. schrieb:
> Auch 1 Mio Maurer mauern 1m² Mauer nicht 1 Mio x schneller als einer!

Aber 1 Mio Maurer können 1 Mio Mauern ziemlich genau 1 Mio x schneller 
mauern als einer. Und genau damit wären wir wieder bei den gemeinsamen 
Resourcen: Können wir die Maurer schnell genug mit ausreichend Zement 
versorgen, und müssen die einzelnen Mauerteile irgendwann miteinander 
verbunden werden.

Die Frage, ob man Systeme grundsätzlich skalieren kann, ist schon recht 
sinnvoll. Auf existierende Systeme mit einem "dieses da nicht" zu zeigen 
ist da nicht zielführend.

Goldenboyx1 schrieb:
> Die Antwort auf die Frage würde beispielsweise auch erklären
> ob das was wir Intelligenz nennen theoretisch beliebig groß
> anwachsen kann.

Auch da landen wir wieder bei der Parallelisierbarkeit. Nehmen wir mal 
als Beispiel die Forschung: Die findet in kleinen Teams statt (weil 
große Teams ineffizient werden), die parallel verschiedene Dinge 
gleichzeitig erforschen. Aber es gibt keine globale Koordinierung, 
folglich gibt es viele Teams, die das gleiche machen - das ist 
Verschwendung.

Solange es genug verschiedene Forschungsthemen gibt, hält sich die 
Verschwendung in Grenzen. Engt man die Bereiche ein (z.B. durch einen 
Fokus auf ein Virus, durch bestimmte Fragestellungen, oder durch 
politische Ungewolltheit), dann steigt die Wahrscheinlichkeit von 
Kollisionen - es wird mehr verschwendet, also sinkt die Skalierbarkeit.

Nun gibt es zwischen den Forschungsteams auch Austausch (Konferenzen, 
Journals, etc.) und schon hast du sowohl einen Rückkanal als auch 
globale Koordinatoren. Verschwendete Forschung freut die Beteiligten 
nicht, also müssen sie Zeit opfern, um rauszufinden, was (a) sinnvoll zu 
erforschen ist und (b) noch nicht erforscht wurde.

Insbesondere (b) ist schwierig. Es gibt viele coole Patente und Ideen 
aus dem 20. Jahrhundert, die man als Basis für aktuelle Forschung nehmen 
kann. Was vor 100 Jahren als schlechtere Option gescheitert ist, kann 
heute z.B. mit modernen Materialien oder Fertigungstechniken die bessere 
Option sein. Der Haken: Jemand mit Wissen müsste das mal durchgehen. 
Die Lebenszeit eines Menschen ist begrenzt - es folgen Heuristiken und 
damit Verschwendung und damit begrenzte Skalierbarkeit.

von Goldenboyx1 (Gast)


Lesenswert?

S. R. schrieb:
> Auch da landen wir wieder bei der Parallelisierbarkeit. Nehmen wir mal
> als Beispiel die Forschung: Die findet in kleinen Teams statt (weil
> große Teams ineffizient werden), die parallel verschiedene Dinge
> gleichzeitig erforschen. Aber es gibt keine globale Koordinierung,
> folglich gibt es viele Teams, die das gleiche machen - das ist
> Verschwendung.

Parallelisierbarkeit beinhaltet das Konzept der Trennung. Man will 
getrennte Prozesse bzw. Systeme koordiniert auf ein bestimmtes Ziel hin 
steuern.
Diese Trennung oder Aufspaltung in mehrere Prozesse/Systeme hat in der 
Regel immer einen guten oder zwingenden Grund.
Das soll heißen dass man aus zwingenden Gründen beispielsweise einen 
Supercomputer aus vielen Recheneinheiten baut. Da es nicht möglich ist 
einen einzigen etwa 50m² großen Chip herzustellen. Der zwingende Grund 
muss nicht nur technologischer und praktischer Natur sein, es kann auch 
prinzipieller Natur zwingend werden.

Also, ab einer System bedingten unterschiedlichen Skalierungsgröße, ist 
eine weitere Leistungssteigerung nur noch durch Trennung weiter 
hinzugefügter Systemressourcen möglich. Das heißt aus einem System 
werden zwei Systeme. Damit ist die Leistungsfähigkeit eines einzelnen 
Systems begrenzt. Durch zwei Systeme hat man insgesamt mehr Leistung im 
Raum. Aber damit beide Systeme auf das selbe Ziel hin arbeiten müssen 
sie miteinander wechselwirken bzw. kommunizieren.

Und das ist nun eine interessante Stelle finde ich. Kann die 
Kommunikation die Trennung der beiden Systeme bzw. die Trennung ihrer 
Leistungsfähigkeit vollständig kompensieren? Eigentlich nein. Wäre die 
Kommunikation so effizient dass sie die Trennung vollständig 
kompensieren würde, dann wäre eine Aufteilung in zwei Systeme gar nicht 
notwendig gewesen. Man hätte quasi eine Lösung für weitere Skalierung 
eines Systems und hätte die maximale Skalierungsgröße nicht erreicht.
Folglich verrät bereits diese Logik dass die Kommunikation zwischen 
zuvor zwei zwingend (Systembedingt) getrennten Systemen mit 
Informationsverlust behaftet ist, ganz gleich welcher Art und Effizienz 
die Kommunikation ist.

Es gibt zwischen zwei notwendig getrennten Systemen also einen 
Informationsverlust. Das eine System verfügt nicht über alle 
Informationen des anderen Systems und somit ist das Ausmaß der 
koordinierten Arbeit begrenzt. Und wie du sagst, kann es passieren dass 
beide teilweise am selben Problem arbeiten ohne es zu wissen und somit 
Ressourcen verschwenden.

Doch führt man dieses Konzept weiter: Immer wenn die systembedingte 
maximale Skalierung eines Systems erreicht ist, wird das System geklont 
und als neues System hinzugefügt und mit dem Rest vernetzt.

Dann passiert etwas erstaunliches. Trotz der Informationsverlust 
zwischen den einzelnen vernetzten Systemen, gelingt es dem neuen 
Netzwerk eine Leistungsfähigkeit zu erbringen wie es ein einzelnes 
System nicht schafft.
Hinzu kommt dann dass dieses neue Netzwerk wiederum als ein 
einheitliches System definiert werden kann. Dessen Skalierung auf die 
bisher formulierte Art vermutlich auch limitiert ist und nur durch 
Schaffung zweier Netzwerke aufgehoben werden kann, wobei es wieder einen 
Informationsverlust zwischen beiden Systemen gäbe, also zwischen 
Netzwerk A und Netzwerk B.

Doch man kann dieses Prinzip immer weiter führen und es entsteht 
insgesamt mehr Leistungsfähigkeit.
Die maximale Skalierung eines System wird also durch trennen, 
kopieren/klonen und vernetzen der getrennten Systeme überwunden. Oder 
nicht?

So erklärt sich im Grunde auch die Entstehung komplexer Lebewesen bzw. 
Systeme.
Atome verbinden sich zu Molekülen (System Level 1), Moleküle verbinden 
zu komplexen Proteinen (Level 2), Proteine verbinden sich zu einer 
ganzen Zelle (Level 3), Zellen verbinden sich zu einem Organ (Level 4) 
und Organe verbinden sich zu einem ganzen Organismus (Level 5).
Menschen verbinden sich in Familien/Gruppen (Level 6), Menschengruppen 
verbinden sich zu einer Stadt/Dorf (Level 7), Städte verbinden sich zu 
einer Nation (Level 8), Nationen verbinden sich zu internationalen 
Organisationen/Partnern (Level 9). Möglicherweise verbinden sich 
irgendwann von Menschen bewohnten Planeten oder Raumstationen zu neuen 
Strukturen (Level 10).
Die Einstufung der einzelnen Systemstufen kann durchaus unterschiedlich 
aufgelöst werden. Das hier ist also nur eine mögliche Einordnung.

Was fällt dabei auf? Es wird immer größer und größer und auch die Menge 
an Informationsverlust zwischen den Systemen nimmt zu. Leider bin ich 
kein Mathematiker und habe keine Vorstellung welche Werte in welchem Maß 
wachsen oder sinken.
Kann durchaus sein dass dieses Prinzip der natürlichen Skalierung einen 
Sättigungspunkt erreicht.
Außerdem stellt sich auch die Frage was bei dieser großen Betrachtung 
eines derart vielfältigen dynamischen Systems noch überhaupt als Einheit 
begriffen  werden kann.
Kann man davon sprechen dass die Aktivitäten einzelner Menschen in einer 
Nation eine Form der parallelisierten Aktivität darstellen?
Im groben irgendwie schon. Denn es gibt sie, die Leistung einer Nation 
in Form der Wirtschaft oder Forschung und diese Nation wird auch zentral 
durch Gesetze und Maßnahmen geführt.
Doch es gilt nicht mehr die strenge Definition der Parallelisierung wie 
man es aus Computer Architekturen kennt.

von Fast track to /dev/null (Gast)


Lesenswert?

Goldenboyx1 schrieb:
> Was fällt dabei auf? Es wird immer größer und größer und auch die Menge
> an Informationsverlust zwischen den Systemen nimmt zu. Leider bin ich
> kein Mathematiker und habe keine Vorstellung welche Werte in welchem Maß
> wachsen oder sinken.
> Kann durchaus sein dass dieses Prinzip der natürlichen Skalierung einen
> Sättigungspunkt erreicht.

Lies ISBN: 978-3518389942 . In diesem Werk hat Stanislaw Lem deutlich 
unterhaltsamer und intellektuell fundierter das Problem der 
Erkenntnisfähigkeit als Funktion der gesellschaftlichen Entwicklung 
dargestellt.

BTW:
Das ist kein Forum für Wannebe-Philosophen und verkannten Literaten.

von Goldenboyx1 (Gast)


Lesenswert?

Fast track to /dev/null schrieb:
> Lies ISBN: 978-3518389942 . In diesem Werk hat Stanislaw Lem deutlich
> unterhaltsamer und intellektuell fundierter das Problem der
> Erkenntnisfähigkeit als Funktion der gesellschaftlichen Entwicklung
> dargestellt.

Danke, sieht interessant aus.

Fast track to /dev/null schrieb:
> BTW:
> Das ist kein Forum für Wannebe-Philosophen und verkannten Literaten.

Benötigt man denn erst ein qualifizierenden Titel als Erlaubnis zum 
nachdenken? :D

Vielleicht füge ich meinen Texten in Zukunft die nachfolgende Anmerkung 
hinzu damit niemand verletzt oder verwirrt wird.

Zu Risiken und Nebenwirkungen lesen sie die Fachliteratur und fragen Sie 
Ihren Philosophen oder Logiker.

von S. R. (svenska)


Lesenswert?

Goldenboyx1 schrieb:
> Wäre die Kommunikation so effizient dass sie die Trennung
> vollständig kompensieren würde, dann wäre eine Aufteilung
> in zwei Systeme gar nicht notwendig gewesen.

Das ist ein Widerspruch. Erst sagst du, dass man Systeme ab einer 
bestimmten Größe notwendigerweise trennen muss, und hier sagst du, dass 
man sie garnicht hätte trennen müssen.

> Man hätte quasi eine Lösung für weitere Skalierung eines
> Systems und hätte die maximale Skalierungsgröße nicht erreicht.

Es gibt Algorithmen mit verdammt hoher Skalierbarkeit. Ich hab mal mit 
Lattice-Boltzmann hantiert (Simulation von Fluiden). Sinnvollerweise 
teilt man das zu simulierende Volumen in kleine Volumenelemente auf, und 
dann ergeben sich zwei für die Skalierung relevante Eigenschaften:

(a) In jedem Volumenelement (abgesehen von den Randelementen, die man 
anders behandeln muss) finden exakt die gleichen Rechenschritte statt; 
die Simulation kann also im Gleichschritt erfolgen.

(b) Zwischen den einzelnen Volumenelementen kommunizieren ausschließlich 
die Ränder miteinander. Die Anzahl der Randelemente hängt von der Größe 
der Volumenelemente ab und kann daher mit der Kommunikationsfähigkeit 
abgestimmt werden, um Skalierungsbeschränkungen zu vermeiden.

Das Verfahren skaliert extrem gut.

> Folglich verrät bereits diese Logik dass die Kommunikation
> zwischen zuvor zwei zwingend (Systembedingt) getrennten
> Systemen mit Informationsverlust behaftet ist, ganz gleich
> welcher Art und Effizienz die Kommunikation ist.

Nein. Wenn ich in einem Verfahren einmalig kommunizieren muss (z.B. in 
der Simulation einmal die Aufteilung) und danach vollständig parallel 
weitermachen kann, dann habe ich weder Einschränkungen in der 
Kommunikation noch muss ich Informationsverluste hinnehmen.

Der Rest deiner Ausführungen basierend auf dieser Prämisse ist somit 
erstmal hinfällig: Es hängt vom konkreten Problem ab, welche Teile 
serialisiert werden müssen (also nur begrenzt parallelisierbar sind) und 
welche Teile nicht. Es gelte Amdahls Gesetz.

> Doch es gilt nicht mehr die strenge Definition der
> Parallelisierung wie man es aus Computer Architekturen kennt.

Wenn du damit anfängst, die Definitionen, auf denen du deine 
Argumentation aufgebaut hast, aufzuweichen, dann kannst du die 
Argumentation auch gleich mit entsorgen.

von Goldenboyx1 (Gast)


Lesenswert?

S. R. schrieb:
> Das ist ein Widerspruch. Erst sagst du, dass man Systeme ab einer
> bestimmten Größe notwendigerweise trennen muss, und hier sagst du, dass
> man sie garnicht hätte trennen müssen.

Das war eine Überlegung über die Konsequenz. Nämlich der Annahme das die 
Kommunikation zwischen zwei Systemen die Folgen der Trennung in zwei 
Systeme vollständig kompensieren kann. So als wäre keine Trennung 
vorhanden. Wäre dem so, dann wäre die vorherige Trennung in zwei Systeme 
nicht notwendig gewesen. Die Trennung wäre quasi vor dem Maximum der 
Skalierung erfolgt.
Daraus schlussfolgere ich dann dass zwei Systeme, die wirklich 
notwendigerweise getrennt wurden, über eine Kommunikation miteinander 
verfügen, die die Defizite der Trennung nicht vollständig kompensieren 
können.
Wobei ich diesen Defizit als Informationsverlust interpretiere. Soll 
heißen, System A kann nicht nachvollziehen wieso System B ein bestimmtes 
Ergebnis mit ihm teilt und umgekehrt.

Beispielsweise gibt es bei menschlicher Kooperation aus der Position der 
einzelnen immer Informationslücken.
Beispiel: Ein Team soll ein neues innovatives Flugzeug bauen. Der 
CNC-Techniker der eine bestimmte Form aus Metall fräsen soll, muss nicht 
verstehen können, wieso die Mathematiker ausgerechnet diese Form gewählt 
haben. Und die Mathematiker müssen nicht wissen wie der CNC-Techniker im 
Detail Bauteile anfertigt. Sie müssen nur soweit miteinander 
kommunizieren um zu wissen was möglich ist und was nicht.

Vielleicht kann man auch sagen dass die Kommunikation zwischen 
notwendigerweise getrennten Systemen Abstraktionen enthält. Eine 
Abstraktion ist mit Informationsverlust verbunden.

S. R. schrieb:
> Nein. Wenn ich in einem Verfahren einmalig kommunizieren muss (z.B. in
> der Simulation einmal die Aufteilung) und danach vollständig parallel
> weitermachen kann, dann habe ich weder Einschränkungen in der
> Kommunikation noch muss ich Informationsverluste hinnehmen.

Hmm. Ich ging davon aus dass der parallele Prozess zwischen den 
einzelnen Recheneinheiten (Systemen) mit Kommunikation verbunden ist.
Das also System A zwingend mit System B kommunizieren muss um das 
Gesamtergebnis zu erzeugen.
Eine Parallelisierung die ohne Kommunikation zwischen den einzelnen 
beteiligten Recheneinheiten auskommt hätte wohl kein 
Informationsverlust. Da im Grunde jede Recheneinheit für sich selbst 
arbeitet und keine Daten/Ergebnisse anderer Recheneinheiten benötigt.

von S. R. (svenska)


Lesenswert?

Goldenboyx1 schrieb:
> Da im Grunde jede Recheneinheit für sich selbst
> arbeitet und keine Daten/Ergebnisse anderer
> Recheneinheiten benötigt.

Für Lattice Boltzmann muss jede Recheneinheit nur mit wenigen anderen 
Recheneinheiten kommunizieren, und zwar gleichmäßig verteilt. Der 
Großteil der Daten ist rein lokal. Das Gesamtergebnis ist dann natürlich 
auf die Recheneinheiten verteilt, aber danach hattest du ja nicht 
gefragt...

Solange der Kommunikationsoverhead aber hinreichend gering ist, kann er 
vernachlässigt werden.

von Kurt (Gast)


Lesenswert?

Goldenboyx1 schrieb:
> Warum sind Rechenarchitekturen begrenzt skallierbar?

Weil es irgendwann keine ls mehr gibt, um beliebig zu 
skalllllllllllllieren.

Im Ernst, deine Annahme ist falsch, darum kann man deine Frage auch 
nicht beantworten. Rechnerarchitekturen SIND im Rahmen der im Universum 
verfügbaren Resourcen unbegrenzt skalierbar, nur ist die Skalierung für 
die wenigsten Probleme effizient. Gute Beispiele sind Folding@Home und 
SETI@Home, bei denen der serielle Anteil gegen null geht.
Dann gibt es theoretisch noch DNA-Computer, in denen jedes Molekül einen 
Task ausführt, so dass man in der Größenordnung von 10^23 Rechnungen/(kg 
Materie) parallel ausführen könnte, aber auch hier wächst der Bedarf an 
DNA-Molekülen linear mit der benötigten Rechenleistung.
Und schließlich die Quantencomputer, deren Rechenleistung sich mit jedem 
hinzugefügten Qubit verdoppeln kann, vorausgesetzt das Problem passt. 
Dann gilt für die Rechenleistung P = O(exp(n)), wenn n die verwendeten 
Resourcen sind. Für bisherige Architekturen incl. DNA-Computer ist P < 
O(n). Der Unterschied ist atemberaubend, wenn man ihn begreift (aber 
auch nur dann, und deshalb brauchst du keine Angst haben, dass dir der 
Atem stockt.)

von oszi40 (Gast)


Lesenswert?

Kurt schrieb:
> Der Unterschied ist atemberaubend,

Es bleib trotzdem die Frage, ob das Ergebnis 42 richtig war. Könntest Du 
jetzt bitte mal nachrechnen? Hast Du die Zahlen im Backup?

von Kurt (Gast)


Lesenswert?

oszi40 schrieb:
> Es bleib trotzdem die Frage, ob das Ergebnis 42 richtig war. Könntest Du
> jetzt bitte mal nachrechnen? Hast Du die Zahlen im Backup?

Ob 42 das richtige Ergebnis ist zu welcher Frage? Wenn du mir das sagst, 
schlage ich schnell nach.

von Joachim B. (jar)


Lesenswert?

Kurt schrieb:
> Ob 42 das richtige Ergebnis ist zu welcher Frage?

auf alle Fragen!
https://de.wikipedia.org/wiki/42_(Antwort)

von Einer K. (Gast)


Lesenswert?

Darf ich mal ein Urteil fällen?

Lattenschuß!

von Veit D. (devil-elec)


Lesenswert?

Hallo,

also wenn ich an Grafikkarten denke, da skaliert die Leistung mit jeder 
Ausbaustufe mit. Die Daten werden häppchenweise passend zerlegt und 
durch die Recheneinheiten geschickt. Grafikdaten lassen sich eben gut 
parallelisieren. Bei CPU mit mehreren Kernen sieht das schon anders aus. 
Für Video/Bild-Bearbeitung klappt das mittlerweise gut. Irgendwas 
kompilieren auf Linux klappt auch gut. Und dann gibts eben Software die 
tut sich schwer mit paralleler Kern/Thread Nutzung. Warum auch immer. 
Entweder bringt es keine Punkte oder die Programmierer tun sich nach 
Jahren immer noch schwer mit mehreren Kernen. Ich weiß es nicht. Sie 
müßten ja ihre Software erstmal in passende Häppchen zerlegen die dann 
vielleicht von mehreren Kernen profitieren. Stell ich mir nicht gerade 
einfach vor. Wenn 3 Kerne auch einen warten bringt es ja auch nichts.

von S. R. (svenska)


Lesenswert?

Veit D. schrieb:
> Und dann gibts eben Software die
> tut sich schwer mit paralleler Kern/Thread Nutzung.

Du kannst ja mal versuchen, einen Emulator zu bauen, der eine CPU 
korrekt mit mehreren Threads emuliert...

von Rainer V. (a_zip)


Lesenswert?

...die Frage ist einfach doof gestellt...wie halt zum Feierabend in der 
Lieblingskneipe...zum Einen ist "Skaliert" so kein Begriff, der was 
aussagt...zum Anderen ist auch die Frage nach Rechnerarchitekturen, die 
skaliert sein mögen, keine Frage. Also Langeweile...
Gruß Rainer

von oszi40 (Gast)


Lesenswert?

Rainer V. schrieb:
> keine Frage. Also Langeweile...

Das sehe ich ganz anders. Eine Rechnung muß nachvollziehbar sein. dazu 
gehört auch ein ordentliches Backup für de Fall dass mal was schief 
geht. Das mag bei der Pi-Berechnung mit einem einfachen Anfangswert noch 
gut gehen. Aber Säcken von Daten eine Momentaufnahme zur rechten Zeit?

von Stefan F. (Gast)


Lesenswert?

Veit D. schrieb:
> Grafikdaten lassen sich eben gut parallelisieren.

Du meinst wohl mehrere Rechenkerne auf eine Karte zusammen mit RAM.

Versuche mal, 20 Grafikkarten an einem einzigen Monitor und PC 
anzuschließen und auszulasten, dann merkst du, wo das Problem ist.

von Rainer V. (a_zip)


Lesenswert?

Goldenboyx1 schrieb:
> Gibt es Ursachen für die limitierte Skalierbarkeit von
> Rechenarchitekturen die prinzipieller Natur sind?
> Oder kann es eine Rechenarchitektur geben die in der Praxis theoretisch
> unendlich skalierbar ist?
>
> Die Frage die mich interessiert ist ob die Limitierungen rein
> technischer Natur sind oder ob man da eher so was wie einen Naturgesetz
> hat?

oszi40 schrieb:
> Das sehe ich ganz anders. Eine Rechnung muß nachvollziehbar sein. dazu
> gehört auch ein ordentliches Backup für de Fall dass mal was schief
> geht. Das mag bei der Pi-Berechnung mit einem einfachen Anfangswert noch
> gut gehen. Aber Säcken von Daten eine Momentaufnahme zur rechten Zeit?

Hier, wie so oft oder fast immer, beantworten die Leute ihre eigene 
(verstandene) Fragestellung. Ist doch eigentlich langweilig!? Wie ich 
schon sagte, ist die Frage nach limitierter Skalierbarkeit (und der Rest 
auch) Blödsinn. Ich erwarte also vom TO eine(seine) konkrete Definition 
von "Skalierbarkeit"...vielleicht lohnt es sich ja dann noch 
weiterzureden :-)
Gruß Rainer

von Veit D. (devil-elec)


Lesenswert?

Stefan ⛄ F. schrieb:
> Veit D. schrieb:
>> Grafikdaten lassen sich eben gut parallelisieren.
>
> Du meinst wohl mehrere Rechenkerne auf eine Karte zusammen mit RAM.
>
> Versuche mal, 20 Grafikkarten an einem einzigen Monitor und PC
> anzuschließen und auszulasten, dann merkst du, wo das Problem ist.

Es wird immer Szenarien geben wo irgendwas limitiert. Wenn du das 
meinst.
Mit einer CPU und 20 GPUs kann man die Auslastung immer noch gut 
verteilen. Die einzigste Frage ist nur ob die CPU für die Anzahl Karten 
genug Daten liefern kann. Die Aufgabe muss zur Hardware passen.

Beim spielen auf dem Desktop ist das doch wie folgt.
Niedrige Grafikeinstellungen > CPU limitiert.
Volle Grafikeinstellungen vielleicht noch mit 4k Monitor > GPU limiert.
Wobei man bei Ersteren von den Frameraten her nicht meckern kann.
Im zweiten Fall kann das unspielbar werden.

Daran erkennt man auch das pauschale Aussagen nicht viel bringen.

Die TO Frage zur Skalierung verstehe ich so das man unglaublich viel 
Rechenleistung für ein bestimmten Problem benötigt und dabei die 
Hardware immer weiter ausbauen möchte. Dabei stellt er sich die Frage 
bis zu welchen Punkt das Sinn macht.

Wenn ich mir dabei die Superrechner der Welt anschaue mit unzähligen 
CPUs und GPUs, dann werden diese für ganz bestimmte Rechenaufgaben 
konfiguriert. Steigt der Rechenaufwand wird erweitert. Die Hardware muss 
zur Aufgabe passen.

Ich meine selbst Seti@home u.ä. Projekte zeigen doch auch das mit 
gezielter Aufgabenverteilung verteilte Rechenleistung gebündelt werden 
kann. Ob da 1000 Raspis mit machen oder 50 x86 Rechner ... vollkommen 
egal.

von Stefan F. (Gast)


Lesenswert?

Veit D. schrieb:
> Die einzigste Frage ist nur ob die CPU für die Anzahl Karten
> genug Daten liefern kann.

Ich würde auch hinterfragen, wie man die Ergebnisse der 20 Grafikkarten 
zu einem Monitor zusammen bringt und wie es sich auf die Effektivität 
auswirkt, dass sie keinen gemeinsamen RAM zur Verfügung haben.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

in sehr gut ausgestatteten Spielerechnern können bis zu 4 Grafikkarten 
parallel geschalten werden. Früher lief das direkt zwischen den 
Grafikkarten ab. Heute gehts mit über den PCIe Bus. Das skaliert aber 
nicht 1:1 mit. Also eine dickere Grafikkarte ist besser wie zwei. Nur 
wenn man schon die fetteste Grafikkarte hat und noch mehr Grafikleistung 
benötigt, dann muss man eben von den fetten Teilen mehrere einbauen und 
sich über die Mehrleistung freuen. Auch wenn es sich nicht 1:1 
niederschlägt, man hat dennoch mehr Grafikleistung wie alle anderen.

Genau das ist der Grund warum in besagten Superrechnern Clusterweise 
Hardware drin steckt. Der Rest ist die Kunst in Software die 
Rechenaufgabe gut zu verteilen.

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Es kommt eben immer auf die Aufgabe an.

Eine Million Maurer können eine Million 1-Meter-Wände recht schnell 
mauern. Aber eine Million Maurer können eine einzige 10-Meter-Wand nicht 
schneller mauern als vielleicht 20..30. Danach stehen sie sich nur noch 
gegenseitig im Weg rum und der Mörtel wird nicht mehr trocken.

von Berufsrevolutionär (Gast)


Lesenswert?

Veit D. schrieb:
> Ich meine selbst Seti@home u.ä. Projekte zeigen doch auch das mit
> gezielter Aufgabenverteilung verteilte Rechenleistung gebündelt werden
> kann. Ob da 1000 Raspis mit machen oder 50 x86 Rechner ... vollkommen
> egal.

Aktuelle Top 10 :
https://www.ingenieur.de/technik/fachbereiche/rekorde/die-schnellsten-supercomputer-der-welt/

die Anzahl der core hat die 100k längst überschritten, erst bei den 
Chinesen, die ganz nach dem Vorbild ihres eigenen Ameisenstaates, 
Millionen Kerne Reiskörner zählen lassen.

Es ist nicht erkenntlich wie der TO auf das dünne Brett kommt Rechner 
wären begrenzt skalierbar. Wahrscheinlich hat er sich nicht ernsthaft 
mit dem Thema beschäftigt.

https://www.top500.org/lists/2019/11/
https://www.top500.org/hpcg/lists/2019/11/

von Rainer V. (a_zip)


Lesenswert?

ächzs...

von oszi40 (Gast)


Lesenswert?

Schnell die Liste der Top500 zeigen, ist noch keine Antwort, ob z.B. 
eine errechnete Zahl "42" stimmt. Da steckt bei Skalierung wohl "etwas" 
mehr dahinter, als nur CPUs zu zählen. Die SW muß in der Lage sein diese 
Systeme auch alle sinnvoll zu nutzen und Flaschenhälse zu vermeiden.

Besonders interessant wäre aus meiner Sicht die Backupstrategie! Es kann 
ja durchaus vorkommen, dass ein Teil des gigantischen Systems falsch 
rechnet oder ausfällt wenn Monate gerechnet werden muß.

von noreply@noreply.com (Gast)


Lesenswert?

A. K. schrieb:
> Ein schon recht altes "Gesetz" ist das von Amdahl:
> https://de.wikipedia.org/wiki/Amdahlsches_Gesetz

Ich möchte nochmal an altes Wissen aus den 60'er Jahren des letzten 
Jahrhunderts erinnern.

von Berufsrevolutionär (Gast)


Lesenswert?

oszi40 schrieb:
> Schnell die Liste der Top500 zeigen, ist noch keine Antwort, ob z.B.
> eine errechnete Zahl "42" stimmt.

Das war ja auch nicht gefragt.

> Da steckt bei Skalierung wohl "etwas"
> mehr dahinter, als nur CPUs zu zählen. Die SW muß in der Lage sein diese
> Systeme auch alle sinnvoll zu nutzen und Flaschenhälse zu vermeiden.

Nach Software war auch nicht gefragt, nur nach Hardwarearchitektur und 
ob man diese wie Lego zusammenstecken kann?! Antwort - man kann, siehe 
Top 500.

> Besonders interessant wäre aus meiner Sicht die Backupstrategie! Es kann
> ja durchaus vorkommen, dass ein Teil des gigantischen Systems falsch
> rechnet oder ausfällt wenn Monate gerechnet werden muß.

In der Grundschule gepennt? Das heisst nicht Backup-strategie, sondern 
'Kontrollrechnung' respektive 'Mathematische Beweisführung der Existenz 
einer Lösung'(ok, das wäre dann nicht mehr Grundschule). Bestandteil 
davon ist die Beweisführung, das der Algorithmus auch in endlicher 
Rechenzeit konvergiert. Erst dann mach es sinn den Datensatz nach einem 
Iterationsschritt non-volatil zwischenzuspeichern. Numerische Stabilität 
ist auch ein Thema, weil ja bei der Computer-representation einer reelen 
Zahl systembedingt Rundungswehler™ auftreten.

https://de.wikipedia.org/wiki/Stabilit%C3%A4t_(Numerik)
https://en.wikipedia.org/wiki/Numerical_analysis#Discretization

Für engagierte Studenten sei angeraten sich in  die Arbeiten von János 
Lajos von Margitta zu vertiefen: 
https://en.wikipedia.org/wiki/Von_Neumann_stability_analysis

von Rolf M. (rmagnus)


Lesenswert?

Stefan ⛄ F. schrieb:
> Veit D. schrieb:
>> Die einzigste Frage ist nur ob die CPU für die Anzahl Karten
>> genug Daten liefern kann.
>
> Ich würde auch hinterfragen, wie man die Ergebnisse der 20 Grafikkarten
> zu einem Monitor zusammen bringt und wie es sich auf die Effektivität
> auswirkt, dass sie keinen gemeinsamen RAM zur Verfügung haben.

Prinzipiell geht so was ja schon, wenn auch nicht mit 20, aber immerhin 
mit 4 Karten: 
https://de.wikipedia.org/wiki/Scalable_Link_Interface#4-way_SLI

Das mit dem fehlenden gemeinsamen RAM wird hier einfach so gehandhabt, 
dass alle Karten die selben Daten in ihrem jeweiligen RAM haben.

Die Begrenzung liegt dabei aber eher darin, dass man irgendwann 
Schwierigkeiten bekommt, ein Board zu finden, auf das die alle drauf 
passen und dass es so teuer wird, dass sich das keiner leisten kann bzw. 
will.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Berufsrevolutionär schrieb:
> In der Grundschule gepennt? Das heisst nicht Backup-strategie, sondern
> 'Kontrollrechnung'

In der IT bezeichnet das englische Wort "Backup" sowohl Sicherungskopien 
als auch Reserve-Systeme.

Kontroll-Systeme können helfen, falsche Berechnungen zu erkennen. 
Andererseits vertrauen die meisten darauf, dass Intel Prozessoren 
korrekt rechnen. Meistens kontrolliert man die Algorithmen vorher mit 
kleinen Datenmengen (Unit Tests) und wendet sie danach in großem Stil 
an. Kontrolliert wird dann nur noch, ob die Systeme laufen und 
Ergebnisse produzieren.

von Berufsrevolutionär (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Berufsrevolutionär schrieb:
>> In der Grundschule gepennt? Das heisst nicht Backup-strategie, sondern
>> 'Kontrollrechnung'
>
> In der IT bezeichnet das englische Wort "Backup" sowohl Sicherungskopien
> als auch Reserve-Systeme.

An der referenzierten Stelle wird aber kein Reserve system beschreiben, 
sondern schon eins was BackUp im Sinne von "Sicherungskopie" benutzt. 
Gemeint ist aber wohl eher etwas im Sinne von "Fail-Safe Point" im 
deutschen eher selten als "sichere Rückzugsposition" genannt -> ein 
konsistentes Zwischenergebniss das bei einer Unterbrechung 
(platzsparend) abgespeichert wird um später die Berechnung mit dem 
Zwischenergebniss als Startwert wieder aufzunehmen.

> Kontroll-Systeme können helfen, falsche Berechnungen zu erkennen.
> Andererseits vertrauen die meisten darauf, dass Intel Prozessoren
> korrekt rechnen. Meistens kontrolliert man die Algorithmen vorher mit
> kleinen Datenmengen (Unit Tests) und wendet sie danach in großem Stil
> an. Kontrolliert wird dann nur noch, ob die Systeme laufen und
> Ergebnisse produzieren.

Naja das ist aber sehr vereinfacht dargestellt, da sind noch 
Kontrollmechanismen eingebaut ob Verfälschung auftrete, beispielsweise 
CRC/ECC. Und Abbruchbedingungen (Schleifenzähler) falls sich eine 
Iteration 'festfährt'. Eine ähnliche Situation hat man beim Watchdog, da 
vertraut man auch nicht drauf, das alles im grünen Bereich ist, solange 
die CPU schwitzt. Gerade beim parallelen System ist es wichtig 
automatisch Systemverklemmungen (deadlock) aufzulösen respektive zu 
erkennen (Spaghetti-essende Philosophen: 
https://www.google.com/search?client=firefox-b-d&q=Spaghetti+essende+Philosophen 
)
Das die Mathematik hinter dem Algorithmus stimmt, sichert man in der 
Praxis bequemerweise damit ab, das man programmbibliotheken benutzt, die 
als überprüft gelten und schreibt möglichst keinen Algo selbst. 
'Gecheckt' wird dann an corner stones, 'Eckpunkttest').

von Stefan F. (Gast)


Lesenswert?

Berufsrevolutionär schrieb:
> da sind noch Kontrollmechanismen eingebaut ob Verfälschung auftrete

Wo ist "da"?

Wir diskutieren hier ganz allgemein von IT Systemen. Es gibt sehr viel 
mehr als eine Variante, diese zu realisieren. Ich kann genau so gut 
sagen, dass es "da" überhaupt keine Kontroll-Mechanismen gibt und das 
sogar mit einem konkreten Beispiel belegen.

Es scheint mit ziemlich sinnlos, hier einen allgemeinen Standard 
beschrieben zu wollen. Des gibt es nicht und wird es nie geben.

Berufsrevolutionär schrieb:
> Eine ähnliche Situation hat man beim Watchdog, da
> vertraut man auch nicht drauf, das alles im grünen Bereich ist, solange
> die CPU schwitzt.

Wenn ein Watchdog nicht auslöst, weiß man nur, dass das Programm noch 
läuft. Ob es auch tatsächlich noch tut, was es soll, muss man anders 
heraus finden.

Berufsrevolutionär schrieb:
> Das die Mathematik hinter dem Algorithmus stimmt, sichert man in der
> Praxis bequemerweise damit ab, das man programmbibliotheken benutzt, die
> als überprüft gelten und schreibt möglichst keinen Algo selbst.

Ich meine damit auch nicht fertige Algorithmen von der Stange, sondern 
individuelle Geschäftslogik - vom Kunden spezifizierte Algorithmen. Das 
ist der Part, mit dem ich meine Brötchen verdiene. Die muss ich selber 
testen, bzw. meine Kollegen aus der Testabteilung.

Es gibt keinen Standard Algorithmus, der vorgibt, was passieren soll, 
wenn eine SEPA Lastschrift vom Online Handel nachträglich widerrufen 
wird - nur um ein Beispiel zu nennen.

von Berufsrevolutionär (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Berufsrevolutionär schrieb:
>> da sind noch Kontrollmechanismen eingebaut ob Verfälschung auftrete
>
> Wo ist "da"?
>
> Wir diskutieren hier ganz allgemein von IT Systemen. Es gibt sehr viel
> mehr als eine Variante, diese zu realisieren. Ich kann genau so gut
> sagen, dass es "da" überhaupt keine Kontroll-Mechanismen gibt und das
> sogar mit einem konkreten Beispiel belegen.

Und ich kann das Gegenteil belegen:
https://www.heise.de/newsticker/meldung/Hauptspeicherfehler-sehr-viel-haeufiger-als-bisher-angenommen-828883.html

In Server Hardware ist es de-facto 'mandatory' das zumindest auf 
Speicher-/Übertragungs-fehler kontrolliert wird. Wenn wir dagegen von 
Rechen-fehler sprechen, also das die CPU sich verrechnet ist die 
Situation etwas anders. Da kontrolliert der CPU-Hersteller mit 
aufwendigen Tests, das sein Design und Fertigung passt und beim 
booten/powerOn-Diagnose sollte wenigstens ein Test auf korrekte Funktion 
gefahren werden. So wie jeder Physiker/Messtechniker sein Equipment 
regelmäßig checkt und kalibriert.

> Es scheint mit ziemlich sinnlos, hier einen allgemeinen Standard
> beschrieben zu wollen. Des gibt es nicht und wird es nie geben.

Es gibt soviele Standards da bin ich mir ziemlich sicher das in einem 
steht wie genau Mess- und rechenergebnisse zu kontrollieren sind.
Jedenfalls gibt es das für Medizintechnik, Fluggeräte etc. warum nicht 
auch für WaldUndWiesen- Rechenzentren?! Da wäre bspw die DIN EN 50600 
aka ISO/IEC TS 22237 (obwohl es sich bei denen eher um Absicherung der 
Verfügbarkeit statt um Exatheit geht), aber man denke auch an die 
Berechnungsvorschriften in den Grundlagen-normen oder die DIN ISO 5725 
(Genauigkeit Messverfahren). Und ganz sicher unterliegen auch 
Rechenzentren der Qualitätssicherung, auch wenn das nicht allen 
Mitarbeitern voll bewusst ist.

von oszi40 (Gast)


Lesenswert?

Berufsrevolutionär schrieb:
> Und ich kann das Gegenteil belegen:
> Link: dass DRAM-Fehler sehr viel häufiger auftreten als bisher erwartet

Das ist nicht neu. Das fiel mir schon im letzten Jahrtausend bei 
Lösungen mit 2 CPUs auf. Je mehr CPUs im Rennen sind, desto 
zeitkritischer wird der Zugriff oder die Fehlerhäufigkeit. Diese RAM 
liefen in 1-CPU-Maschinen noch fehlerfrei. Deswegen auch meine Zweifel, 
daß hoch skalierte Rechenleistung immer garantiert fehlerfrei ist.

von Roland E. (roland0815)


Lesenswert?

Eigentlich ist es ganz einfach: Multiprozessorsysteme müssen immer eine 
Kommunikation zwischen den Prozessoren(Prozesen) durchführen, um die 
verteilten Threads bzw die Ergebnisse wieder zusammenzuführen. Dieser 
Aufwand wächst exponentiell mit der Prozessorzahl. Damit ist für jede 
Bus- bzw Verknüpfunsarchitektur von Superrechnern bereits im Vorraus die 
maximal sinnvolle Anzahl von Prozessoren ermittelbar.
Man kann das Probem durch geeignete Programmierung minimieren, aber 
nicht beseitigen.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Roland, du bringst das auf den Punkt was wir hier mit heißen Brei 
bequatschen.  :-)

> Stefan F.
> In der IT bezeichnet das englische Wort "Backup" sowohl Sicherungskopien
> als auch Reserve-Systeme.

Nicht ganz, man muss unterscheiden zwischen Backup und Redundanz.
Wenn mir zu Hause der Rechner kaputt geht, dann wäre es gut ich habe ein 
Backup meiner wichtigsten Daten. Alles was fliegt ist mit Hardware 
Redundanz besser bedient.

Das Thema triftet jedoch ab ...

von Komiker (Gast)


Lesenswert?

der limitierende Faktor ist der Typ davor...

von Stefan F. (Gast)


Lesenswert?

Roland E. schrieb:
> Multiprozessorsysteme müssen immer eine
> Kommunikation zwischen den Prozessoren(Prozesen) durchführen, um die
> verteilten Threads bzw die Ergebnisse wieder zusammenzuführen. Dieser
> Aufwand wächst exponentiell mit der Prozessorzahl.

Dass der Aufwand exponentiell wächst, halte ich für übertrieben. Ein 
bisschen steiler als linear wird aber wohl sein.

Diese Kommunikation kann man unter Umständen verteilen, indem man sie in 
einer Baumstruktur organisiert. Beispiel: In einem Konzern, der Autos 
produziert, kommuniziert nicht jeder Facharbeiter direkt mit dem 
Geschäftsführer um die Arbeit zu koordinieren.

von Leadership vor die Säue (Gast)


Lesenswert?

Roland E. schrieb:
> Dieser
> Aufwand wächst exponentiell mit der Prozessorzahl.

Nein, Gegenbeispiel Topologie: daisy chain.
https://de.wikipedia.org/wiki/Daisy_Chain

Weiters gegenbeipiel Topologie: binary tree
https://www.researchgate.net/publication/303862548/figure/fig5/AS:668313789149207@1536349832676/Binary-tree-topology.png

Grad die Baumstruktur ist gut für fein granuläre Skalierung geeignet.

Andere herstellerspezifische Süppchen:
https://www.fujitsu.com/global/about/resources/news/press-releases/2014/0715-02.html
https://www.hpcwire.com/2018/07/09/dragonfly-delivers-performance-for-canadas-fastest-supercomputer/

von oszi40 (Gast)


Lesenswert?

Leadership vor die Säue schrieb:
> Gegenbeispiel Topologie: daisy chain.

Ganz so einfach wirds wohl nicht. Eine Kette ist nur so gut wie das 
schwächste Glied.

> gegenbeipiel Topologie: binary tree
Auch der schönste Baum hat eine Wurzel, die ihn versorgen muß.

von Stefan F. (Gast)


Lesenswert?

oszi40 schrieb:
> Auch der schönste Baum hat eine Wurzel, die ihn versorgen muß.

Ja, aber die Wurzel muss nicht die gesamte Last der Koordinierung aller 
Knoten tragen.

von S. R. (svenska)


Lesenswert?

Roland E. schrieb:
> Multiprozessorsysteme müssen immer eine Kommunikation
> zwischen den Prozessoren(Prozesen) durchführen, um die
> verteilten Threads bzw die Ergebnisse wieder zusammenzuführen.

Beim Lattice Boltzmann-Verfahren trägt jeder Prozessor mit genau seinem 
simulierten Areal (plus einer vorher bekannten Überlappungskonstante) 
zum Ergebnis bei...

> Dieser Aufwand wächst exponentiell mit der Prozessorzahl.

...daraus folgt, dass der für das Problem notwendige 
Kommunikationsaufwand linear (plus einer Konstante) ist. Also O(n).

Ich habe das auf einer Rechnerarchitektur mit verteiltem Speicher 
gemacht, da war nichts exponentiell. Im Gegenteil, das Verfahren 
skalierte (im Rahmen der Architektur) exakt linear-plus-Konstante - wie 
auch von der Theorie her zu erwarten.

Selbst das Auslesen der Ergebnisse skalierte linear mit der Anzahl der 
Prozessoren (wegen der linear zunehmenden Datenmenge).

Die Topologie war übrigens ein 2D-Mesh.

: Bearbeitet durch User
von oszi40 (Gast)


Lesenswert?

S. R. schrieb:
> Lattice Boltzmann-Verfahren

Das war eine schöne Aufgabe, die gut verteilt bearbeitet werden kann. 
Manche Prozesse sind jedoch etwas zeitkritischer. Dann wird 
Fehlerbearbeitung und Backup etwas interessanter.

von Joachim B. (jar)


Lesenswert?

Stefan ⛄ F. schrieb:
> Andererseits vertrauen die meisten darauf, dass Intel Prozessoren
> korrekt rechnen.

war ja auch NIE anders, oder gab es mal Intel Prozessoren die etwa 
falsch rechneten?

von Joachim B. (jar)


Lesenswert?

Stefan ⛄ F. schrieb:
> Beispiel: In einem Konzern, der Autos
> produziert, kommuniziert nicht jeder Facharbeiter direkt mit dem
> Geschäftsführer um die Arbeit zu koordinieren.

und das soll der Beweis sein das da nichts schiefläuft?
Gerade weil angeblich nicht alles kommuniziert wurde gab es angeblich 
Schummelsoftware.

Glauben muss man das nicht.

von Veit D. (devil-elec)


Lesenswert?

Joachim B. schrieb:
> Stefan ⛄ F. schrieb:
>> Andererseits vertrauen die meisten darauf, dass Intel Prozessoren
>> korrekt rechnen.
>
> war ja auch NIE anders, oder gab es mal Intel Prozessoren die etwa
> falsch rechneten?

Mir fehlt das Ironietag. Such mal nach Pentium Bug. Intel hat damals 
garantiert diese bis in alle Ewigkeit umzutauschen.

von Berufsrevolutionär (Gast)


Lesenswert?

Joachim B. schrieb:
> Stefan ⛄ F. schrieb:
>> Andererseits vertrauen die meisten darauf, dass Intel Prozessoren
>> korrekt rechnen.
>
> war ja auch NIE anders, oder gab es mal Intel Prozessoren die etwa
> falsch rechneten?

Genau genommen, rechneten die nicht falsch sondern ungenau, der FDIV-Bug 
führte bei einigen Operanden-kombinationen das mit einfacher statt mit 
doppelter Genauigkeit gerechnet wird. Ist jetzt also so das bei einer 
Spannungsteilerberechnung der Pentium 5,612340000 ausspuckt, wo 
5,612345678 korrekt wäre. Intel hatte den Fehler in der ROM-Maske auch 
selber und unabhängig vom Kunden entdeckt und korrigiert. insofern 
besser wals bei der Softwareentwicklung wo der Kunde die Fehler für den 
den Hersteller finden und reporten muss.

https://www.heise.de/ct/artikel/20-Jahre-FDIV-Bug-Die-Hintergruende-2438233.html

von (prx) A. K. (prx)


Lesenswert?

Berufsrevolutionär schrieb:
> Genau genommen, rechneten die nicht falsch sondern ungenau, der FDIV-Bug
> führte bei einigen Operanden-kombinationen das mit einfacher statt mit
> doppelter Genauigkeit gerechnet wird.

Es hing von den Operanden ab, wo im Ergebnis der Fehler auftrat, wie 
gross die Ungenauigkeit also war. Mit Berechnung in einfacher oder 
doppelter Genauigkeit hatte das nichts zu tun. Einfache 
Kehrwertberechnung reichte aus, um falsche Ergebnisse zu produzieren.

von oszi40 (Gast)


Lesenswert?

A. K. schrieb:
> Einfache Kehrwertberechnung reichte aus,
> um falsche Ergebnisse zu produzieren.

Wurde diese CPU zufällig für Superrechner eingesetzt?
"Eine ideale Möglichkeit Fehler zu vergrößern" 8-) Wer rechnet jetzt 
nach?

von Berufsrevolutionär (Gast)


Lesenswert?

A. K. schrieb:
> Mit Berechnung in einfacher oder
> doppelter Genauigkeit hatte das nichts zu tun.

Doch, es hat was mit Genauigkeit zu tun, weil die Tabelle zur 
nachfolgenden Genauigkeitsverbesserung fehlerhaft war.

Die ersten Stellen werden korrekt berechnet, die folgenden fehlerhaft. 
Das passt zwar nicht korrekt auf einfache und doppelte Genauigkeit wie 
im FPU-standard IEEE 754 definiert, aber man kann den FDIV Bug schon als 
Genauigkeitsverlust beschreiben. Jedenfalls interpretiere ich so den 
verlinkten Text:

"... lag der relative Fehler nur bei 10e-9, es gab aber noch schlimmere 
Zahlenpaare mit Divisionsfehler im Bereich von über 10e-5".

"liefert pro Rechenschritt jeweils zwei Bits des Quotienten. Bei jedem 
Rechenschritt verwendet der Prozessor die sogenannte PD-Lookup-Table und 
schaut anhand der oberen Mantissenbits des jeweils verbleibenden Restes 
(6 Bits) und des Divisors (5 Bits) nach, wie der Quotient weitergeht.

Nur wenn der Divisor eines der fünf betroffenen Muster aufweist, kann 
sich überhaupt ein Fehler ergeben, und auch nur dann, wenn *im Verlaufe 
der weiteren Rechenschritte* der verbleibende Rest auch auf die 
fehlerhaften Einträge verweist."


Was aber natürlich nich bedeutet, das der Genauigkeitsverlust irrelevant 
ist, insbesonders bei Weiterverarbeitung von Zwischenwerten.

von (prx) A. K. (prx)


Lesenswert?

Berufsrevolutionär schrieb:
> Doch, es hat was mit Genauigkeit zu tun, weil die Tabelle zur
> nachfolgenden Genauigkeitsverbesserung fehlerhaft war.

Natürlich hat das etwas mit Genauigkeit zu tun, aber nicht mit einfacher 
oder doppelter, zumal x87 weder single noch double precision rechnet, 
sondern extended, mit 80 Bits insgesamt, wenn man das nicht eigens 
drosselt.

> Jedenfalls interpretiere ich so den verlinkten Text:

So ganz präzise war Andreas Stillers Erinnerung offenbar nicht mehr, als 
er den Artikel schrieb. Ich hatte die 23 Kehrwerte, keine Zahlenpaare, 
nicht Tim Coe zugeschickt, sondern die landeten in einem Usenet-Forum, 
ein Wert davon war zur Kontrolle jener, der meinem P90 den Anlass gab, 
über Nacht ein paar Divisionen zu rechnen.

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

oszi40 schrieb:
>> Lattice Boltzmann-Verfahren
> Das war eine schöne Aufgabe, die gut verteilt
> bearbeitet werden kann.
> Manche Prozesse sind jedoch etwas zeitkritischer. Dann wird
> Fehlerbearbeitung und Backup etwas interessanter.

Sicherlich. Aber es ist ein gutes Beispiel für eine reale Aufgabe, die 
eben an jeder Stelle extrem gut skaliert und (passende Hardware 
vorausgesetzt) das auch real tut. Schlicht, weil kaum Kommunikation 
zwischen den Cores nötig ist.

von Axel S. (a-za-z0-9)


Lesenswert?

Stefan ⛄ F. schrieb:
> Roland E. schrieb:
>> Multiprozessorsysteme müssen immer eine
>> Kommunikation zwischen den Prozessoren(Prozesen) durchführen, um die
>> verteilten Threads bzw die Ergebnisse wieder zusammenzuführen. Dieser
>> Aufwand wächst exponentiell mit der Prozessorzahl.
>
> Dass der Aufwand exponentiell wächst, halte ich für übertrieben.

Das ist korrekt.

> Ein bisschen steiler als linear wird aber wohl sein.

Und das beschönigt.

Betrachten wir einfach mal zwei triviale Spezialfälle:

1. ein absolut universeller, absolut symmetrischer verteilter Cluster. 
Jeder Knoten muß mit jedem anderen Knoten direkt verbunden sein. Dann 
steigt der Aufwand für die Verbindungen quadratisch mit der Anzahl der 
Knoten. Mehr als quadratisch geht also nicht.

Offensichtlich skaliert die Hardware hier nicht. Dafür läuft jeder 
verteilte Algorithmus in maximal möglicher Geschwindigkeit.

2. ein quadratisches 2-D Gitter. Jeder Knoten hat Verbindungen zu seinen 
unmittelbaren Nachbarn (das sind 4). Jetzt steigt der Aufwand für die 
Verbindungen linear mit der Anzahl der Knoten.

Das kann man skalierbar bauen. Dafür laufen jetzt nur noch solche 
Algorithmen schnell, bei denen Kommunikation nur mit den unmittelbaren 
Nachbarn nötig ist. Kommunikation nach weiter weg geht zwar, braucht 
aber entsprechend länger. Computergrafik (2D) geht damit; Wetter 
(3D-Gitter) nur noch schlecht. Algorithmen, bei denen potentiell jeder 
Thread mit jedem anderen Thread kommunizieren können muß, nur noch sehr 
schlecht.

Schon vor 40 Jahren hat man Transputer gebaut. Nicht zufällig hatte da 
jeder Knoten 4 Links zur Kopplung mit anderen Knoten.

von Rolf M. (rmagnus)


Lesenswert?

S. R. schrieb:
> Beim Lattice Boltzmann-Verfahren trägt jeder Prozessor mit genau seinem
> simulierten Areal (plus einer vorher bekannten Überlappungskonstante)
> zum Ergebnis bei...

Mal angenommen, du hast mehr Prozessoren als simulierte Areale. Wie 
skaliert es dann?

von Rainer V. (a_zip)


Lesenswert?

Axel S. schrieb:
> Schon vor 40 Jahren hat man Transputer gebaut. Nicht zufällig hatte da
> jeder Knoten 4 Links zur Kopplung mit anderen Knoten.

...und die Transputer sind aber doch in der Versenkung verschwunden?! Es 
ist doch bekannt, dass sich bestimmt Algorithmen gut parallelisieren 
lassen...andere eben nicht...und die benötigen massiv Kommunikation 
zwischen den Kernen...selbst, wenn sie nur virtuell sind. Also 
wiederhole ich meine Frage: What solls...
Gruß Rainer

von S. R. (svenska)


Lesenswert?

Rolf M. schrieb:
>> Beim Lattice Boltzmann-Verfahren trägt jeder Prozessor mit
>> genau seinem simulierten Areal (plus einer vorher bekannten
>> Überlappungskonstante) zum Ergebnis bei...
>
> Mal angenommen, du hast mehr Prozessoren als simulierte Areale.
> Wie skaliert es dann?

Wenn ich mehr Prozessoren habe als zu simulierende Areale, dann habe ich 
die Aufteilung des Raumes versaut. Im Normfall kenne ich die Anzahl der 
Prozessoren ja vorher, kann also passend aufteilen.

Dynamisch neu aufteilen geht sicherlich auch, damit habe ich mich aber 
nicht näher befasst. Ist aber unüblich, weil der zu simulierende 
Zeitraum üblicherweise auch vorher bekannt ist, also werden die 
Ressourcen passend reserviert.

Allerdings kann es passieren, dass das Verhältnis von Rechenleistung zu 
Kommunikationsaufwand ungünstig ist (war es in meinem Fall, da mangels 
Speicher die Areale zu klein waren). Das macht das Verfahren zwar 
langsam, aber ändert grundsätzlich nichts an der Skalierbarkeit.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

S. R. schrieb:
> Im Normfall kenne ich die Anzahl der
> Prozessoren ja vorher, kann also passend aufteilen.

In meinem Umfeld startet man immer mit der kleinsten wirtschaftlich 
sinnvollen Einheit und rüstet bei Bedarf auf. Während der Entwicklung 
ist noch gänzlich unbekannt, wie viel Last und wie viel Hardware kommen 
wird.

Skalierbarkeit wird also von Anfang an ins Design eingeplant, aber nur 
so weit implementiert, wie es keine großartigen Mehraufwand bedeutet. 
Das kann man dann später immer noch erweitern. Das läuft dann natürlich 
mit gewissen Einschränkungen ab, die wir bisher aber noch nie bereut 
haben.

Dass wir Hardware plötzlich um Faktor 10 oder mehr vergrößern mussten, 
hatten wir noch nicht. So Weitsichtig sind unsere technischen 
Projektleiter schon.

Zudem folgen wir auch den Grundsätzen:

  * Keep it Simple
  * Keine voreiligen Optimierungen

Denn auf Performance optimierte Geschäftslogik ist in den allermeisten 
Fällen schwerer lesbar und wartbar, als schnurgerade gerade herunter 
programmierte Sachen. Außerdem bringen viele Optimierungen (z.B. Caches 
+ Multi-Threading) Seiteneffekte, die sporadisch auffallen und man nicht 
immer korrekt vorher gesehen hat.

Ein Punkt, den Berater bei uns immer wieder ansprechen sind unsere 
Datenbanken der Web-basierten Geschäftsanwendungen. Die von uns 
verwendeten Billiglösung sind nicht skalierbar und daher 
single-point-of-failure. Das war aber noch nie ein Problem. Bei 
Engpässen genügte es bislang immer, einzelne Tabellen auf separate 
Maschinen zu verschieben oder Report mit einer Kopie der 
Arbeits-Datenbank zu generieren. Das ist einfach, billig und jeder 
versteht es. Wenn wir doch mal etwas skalierbares brauchen, wissen wir, 
an wen wir uns wenden müssen (z.B. Oracle). Bis dahin sparen wir uns die 
Kosten und Fachleute.

von S. R. (svenska)


Lesenswert?

Stefan ⛄ F. schrieb:
>> Im Normfall kenne ich die Anzahl der
>> Prozessoren ja vorher, kann also passend aufteilen.
> In meinem Umfeld startet man immer mit der kleinsten
> wirtschaftlich sinnvollen Einheit und rüstet bei Bedarf auf.

Webdatenbanken sind eine andere Umgebung als physikalische Simulationen. 
Da sind sowohl das Problem als auch die Hardware vorher bekannt (bzw. 
werden so gewählt, dass sinnvoll simuliert werden kann). Man weiß auch 
relativ genau, wie lange eine gewisse Anzahl an Simulationsschritten 
dauert (Theorie sowie frühere Simulationen), und was man eigentlich 
simulieren will.

Stefan ⛄ F. schrieb:
> Dass wir Hardware plötzlich um Faktor 10 oder mehr
> vergrößern mussten, hatten wir noch nicht.

Zumindest in der Umgebung, in der ich damals aktiv war, war das 
eigentlich auch kein Thema. Entweder, es wurden vorhandene Cluster 
gemietet (und das Problem skaliert), oder dem Bedarf angepasste neue 
Cluster gebaut.

Stefan ⛄ F. schrieb:
> Wenn wir doch mal etwas skalierbares brauchen, wissen wir,
> an wen wir uns wenden müssen (z.B. Oracle).

...oder vielleicht auch nicht. ;-)

von oszi40 (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn wir doch mal etwas skalierbares brauchen

So ganz einfach wirds wohl nicht, sobald die größere Datenmenge auch 
gespeichert werden soll. Irgendwie muß sie ja auch flüssig transportiert 
werden...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.