Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

1 Programm - 2 Computer rechnen?

Empfohlene Antworten

Veröffentlicht

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

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.