frkazid schrieb:
Wie schafft man eigentl. die Parallelisierung von so unglaublich vielen Rechenkernen?
Das wird dir keiner hier so allgemein in einem Forenbeitrag umfassend erklären können, da das komplett vom zu berechnenden Problem abhängt.
Ein paar Anhaltspunkte:
-Man kann nicht jedes Problem sinnvoll parallelisieren. z.B.: Fibonacci-Folge
-Wenn es aber zu parallelisieren geht, dann zumindest theoretisch meist für unendlich viele Prozessoren. D.h. ein Problem, das du nach einem bestimmten Schema auf z.B. 4 Kerne aufteilen kannst, kannst du meist auch problemlos auf 260 oder 2 Millionen Kerne aufteilen. Ob das dann noch performant läuft, kann eine ganz andere Frage sein und auch vom Zielsystem abhängen. Die Grenze setzt dann meistens die Problemgröße. Irgendwann verteilt man das Problem, wenn es zu klein ist, auf so viele Prozessoren, dass der Overhead fürs Verteilen und wieder zusammen sammeln viel größer ist als das, was die Prozessoren letztlich rechnen. Oder man kann das Problem bei der aktuellen größe nicht in so viele Teilprobleme zerlegen, wie man Prozessoren hat.
-Der erste Schritt ist immer das Zerlegen des Problems. Dein "Rechnen alle an einer Formel oder jeder eine Variable einer Formel?" legt nahe, dass du dich mit Mathetik und Algorithmen nicht so gut auskennst. Daher sei nur gesagt: Nicht jedes Problem besteht einfach nur aus "einer Formel", die es zu lösen gilt. Deshalb spreche ich auch von "Problemen" und nicht von Formeln o.Ä.. Zum Lösen des Problems gibt es einen Algorithmus (wenn es keinen gibt, kannst du es mit einem Computer nicht berechnen). Ob und wie sich ein Problem parallelisieren lässt, ist eine Frage des verwendeten Algorithmus. Beispiel aus der Welt der Formeln und Variablen: Man kann z.B. ein zweidimensionales Feld berechnen wollen, für das eine Formel für jeden Punkt vorliegt, sodass für jeden Punkt ein Wert aus bestimmten Variablen berechnet wird. Da liegt dann nahe, dass einfach je ein Prozessor oder Kern einen Anteil der Punkte bekommt und für diese Punkte die Ergebnisse berechnet. Schwieriger wird es, wenn man dann noch die Ergebnisse der Berechnungen der benachbarten Punkte miteinbeziehen muss. Insbesondere, wenn diese ein anderer Kern/Prozessor berechnet hat. Aber das geht auch noch (sorry, zu komplex um es hier zu erklären).
Auch kann man durchaus Teile von Variablen berechnen. Ein Variable, die z.B. eine Summe von Produkten sei, kann auch aufgeteilt werden.
-Wenn das Problem dann zerlegt und die Teilergebnisse berechnet wurden, dann geht es an das Zusammenfügen der Teilergebnisse. Mal ist das simpel, mal sehr komplex. Je nach Problem kann es auch durchaus mit einmal "zerlegen, rechnen, zusammenführen" noch lange nicht getan sein. Das kann sich auch beinahe beliebig oft widerholen.
Jetzt hab ich dir einiges erzählt und du weißt immer noch nicht viel mehr. Wie gesagt, es ist extrem vom Problem abhängig und wenn man die mathematischen Grundlagen der Probleme, die auf hochparallelen Systemen berechnet werden nicht kennt, kann man es sich auch sehr schwer vorstellen.