Zum Inhalt springen

1 Programm - 2 Computer rechnen?


Empfohlene Beiträge

Hallo, mich beschäftigt folgende Frage:

Nehmen wir an wir haben ein Programm, das irgendeine komplizierte Berechnung durchführt, wofür unser Computer, auf dem das Programm die Berechnung durchführt, genau 24 Stunden braucht. Zusätzlich nehmen wir an, wir haben noch einen zweiten Computer mit ähnlicher Rechenleistung.

Meine Frage:

Kann man die beiden Computer miteinander "verbinden", sodass die Berechnungen auf beide Computer aufgeteilt werden und somit die Rechenzeit von 24 Stunden verkürzt werden kann? Das Programm sollte also "gleichzeitig auf beiden Rechnern laufen". Ich hoffe ich habe mich verständlich ausgedrückt, bin kein Informatiker.

.) Funktioniert sowas überhaupt in der allgemeinen Situation die ich oben beschrieben habe? Oder funktioniert das nur bei speziellen Programmen, oder müssen die Computer gleich bzw. gewisse Gemeinsamkeiten haben?

.) Falls ja, was bräuchte man dazu?

.) Könnt ihr mir irgendwelche Literatur zu dem Thema geben? Ich habe schon versucht zu suchen, aber ich weiß nicht einmal nach was ich suchen soll, da ich diesen Sachverhalt nicht fachgerecht ausdrücken kann, weil mir die ganzen Begriffe nicht bekannt sind. Oder: Könnt ihr mir sagen, nach was ihr suchen würdet (also Stichwörter, unter die das Thema fällt)?

Bin für jede Rückmeldung dankbar!,

Mit freundlichen Grüßen,

Bernhard Primas

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Begriff, den du vermutlich suchst, heißt Parallelisierung.

Ob das möglich ist, hängt allerdings nicht nur vom Programm ab. Hardware und Software müssen entsprechende Schnittstellen bereitstellen, um Teilaufgaben zu verteilen und Teilergebnisse abzurufen.

Aber es kommt auch darauf an, was getan werden muss. Einfach Beispiele außerhalb der Informatik:

Kartoffeln schälen geht zu zweit doppelt so schnell, weil sich das Problem in kleinere Teilprobleme zerlegen lässt, die alle unabhängig voneinander bearbeitet werden können. Aber schon hier sieht man, dass das nicht beliebig weit getrieben werden kann: Weiterer Zeitgewinn ist nicht mehr möglich, sobald man mehr Schäler als Kartoffeln hat.

Anderes Beispiel: Eine Bahnfahrt von Hamburg nach München geht nicht schneller, wenn du sie in zwei Teilstrecken (sagen wir in Köln) zerlegst. Denn du musst die erste Teilaufgabe abschließen (in Köln ankommen), bevor du die zweite anfangen kannst.

Manche Probleme sind gut parallelisierbar, manche nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nehmen wir an wir haben ein Programm, das irgendeine komplizierte Berechnung durchführt, wofür unser Computer, auf dem das Programm die Berechnung durchführt, genau 24 Stunden braucht. Zusätzlich nehmen wir an, wir haben noch einen zweiten Computer mit ähnlicher Rechenleistung.

Ich nehme an, dass Du hier denkst, dass Du dann "nur" 12 Stunden rechnen musst. Das wird aber nicht so sein, siehe dazu

Amdahlsches Gesetz

Gustafsons Gesetz

Kann man die beiden Computer miteinander "verbinden", sodass die Berechnungen auf beide Computer aufgeteilt werden und somit die Rechenzeit von 24 Stunden verkürzt werden kann? Das Programm sollte also "gleichzeitig auf beiden Rechnern laufen".

Ja man baut einen Rechnerverbund z.B. mit InfiniBand

Die Bewertung der Systeme erfolgt meist via Flynnsche Klassifikation

Damit Programme auf einem Clustersystem funktionieren, benötigt man entsprechende APIs ( Programmierschnittstelle ), bei der Ansteuerung verwendet man oft Message Passing Interface

Generell gilt aber, dass eine Parallelisierung auf mehreren Ebenen entworfen werden muss, denn es ergeben sich durch verteiltes Rechnen durchaus auch Problematiken. Um verteilt rechnen zu können, muss das Programm dieses unterstützen, d.h. der Entwickler muss die Programmlogik passend implementiert haben.

@Klotzkopp: Du warst schneller, aber die Erklärungen sind gut. Ich ergänze noch dazu: Parallelisierung ist kein triviales Gebiet und "mal eben so etwas zu programmieren ist auch nicht möglich". Man muss das Problem genau formulieren und sich anhand des Problems einen Parallelisierungsansatz überlegen, denn es gibt mehrere Ebenen um zu Parallelisieren (Daten-, Algorithmus-, Befehlsebene). Meist liegt die Lösung letztendlich in einer Mischung aus allen Ebenen.

Bearbeitet von flashpixx
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...