Verteilt rechnende Compiler?

Grid-Computing, technische Entwicklung von Distributed Computing...
Nachricht
Autor
Sascha_Luehrs

Verteilt rechnende Compiler?

#1 Ungelesener Beitrag von Sascha_Luehrs » 08.10.2003 11:41

Ein Bekannter von mir hat Corel Bryce, daß ist ein Rendering-Programm, mit dem man beispielsweise ein einzelnes Bild auf mehreren Rechnern gleichzeitig/parallel rendern kann. So ist ein Bild, das auf einem Einzelrechner über eine halbe Stunde zum Rendern braucht, meist schon nach 2 oder 3 Minuten fertig, vorausgesetzt man hat dafür ausreichend Rechner im Netzwerk zur Verfügung. Daher wollte ich mal fragen, ob es so etwas auch bei Compilern gibt und ob jemand C++ -Compiler kennt, die verteilt kompilieren können?

Sascha

Benutzeravatar
SpeedKing
TuX-omane
TuX-omane
Beiträge: 2943
Registriert: 12.09.2003 17:14

#2 Ungelesener Beitrag von SpeedKing » 08.10.2003 11:53

Das kannst du im Prinzip mit jedem Compiler machen. Da dein Projekt ja immer aus mehreren SourceCode-Dateien besteht, die alle unabhängig voneinander compiliert werden können, kannst du auf so vielen Rechnern, wie du SourceDateien hast, compilieren. Linken kannst du dann aber nur auf einem Rechner.

In der Praxis könnte das so aussehen:
Du gibst im makefile zu jeder SourceDatei an, daß eine rsh auf einem anderen Rechner aufgemacht werden und in dieser compiliert werden soll.
Alle obj-Dateien werden in ein Netzlaufwerk geschrieben. Wenn alles compiliert ist, kann dein Rechner (oder der schnellste Rechner) das ganze linken.

Benutzeravatar
LinuxFan
Vereinsmitglied
Vereinsmitglied
Beiträge: 1200
Registriert: 17.07.2001 01:00
Wohnort: Berlin

#3 Ungelesener Beitrag von LinuxFan » 08.10.2003 14:47

Schau Dir mal distcc an: http://distcc.samba.org/

Ist leicht zu installieren und sieht sehr vielversprechend aus.

Benutzeravatar
yoyo
Vereinsvorstand
Vereinsvorstand
Beiträge: 8129
Registriert: 17.12.2002 14:09
Wohnort: Berlin

#4 Ungelesener Beitrag von yoyo » 08.10.2003 19:30

Einige Makesysteme unterstützen das. Da im Makefile die Abhängigkeiten der Sourcen, libs, binaries stehen, kann Make entscheiden welche Sachen parallel baubar sind und dieses dann auch auf verschiedene Rechner schieben. Die Abhängigkeiten im MAkefile müssen natürlich richtig sein. Clearmake kann das z.B. und AFAIK kann gnumake das wohl auch.

yoyo
HILF mit im Rechenkraft-WiKi, dies gibts zu tun.
Wiki - FAQ - Verein - Chat

Bild Bild

Benutzeravatar
Bananeweizen
Urvater
Urvater
Beiträge: 2867
Registriert: 14.06.2001 01:00
Wohnort: Kornwestheim

#5 Ungelesener Beitrag von Bananeweizen » 08.10.2003 21:02

Es gibt auch einen Pseudo-Compiler für Visual C++, der das ermöglicht. Dabei wird der normale Compiler gegen ein Programm ausgetauscht, welches die Sache im Netz verteilt und koordiniert.
Ist aber ziemlich teuer und lohnt sich meiner Meinung nach nicht. Namen weiß ich nicht mehr.

Einfacher ist übrigens der Umstieg auf Delphi. Dort sind etliche Tausend compilierte Zeilen pro Sekunde auf einem Standard-PC normal. :)

Ciao, Michael.

Sascha_Luehrs

#6 Ungelesener Beitrag von Sascha_Luehrs » 10.10.2003 13:09

Vielen Dank für die zahlreichen Antworten. Das mit den Makefiles war schon mal ne gute Idee, letztlich habe ich mich dann aber für distcc, den Compiler, den LinuxFan empfohlen hatte, entschieden. Installation und Handhabung sind sehr leicht, und das tollste ist, ich habe eben das erste Mal ein grösseres Programm (Das executable ist nach dem Kompilieren 20 MB gross) mit distcc auf mehreren Rechnern kompiliert, und das ging wie der Blitz. Vorher: 'ne Dreiviertelstunde. Mit distcc: ca. 5 Minuten. Echt prima! :D

Zurück zu „Hintergrundinfos zu Verteiltem Rechnen“