Netzwerkrendering mit Bryce4 (Die Bryceforum Renderfram)

Bryce ist ja grundsätzlich nicht multiprozessorfähig, d.h. es kann immer nur singulär auf einem PC laufen und nutzt weitere Prozessoren nicht aus. Allerdings sind die üblichen Prozesse, die Bryce vollziehen soll beinahe beliebig parallelisierbar. Ein komplexes Bild z.B. mit 1024×768 Pixeln kann entweder als einzelner Prozeß laufen, der insgesamt 786432 Bildpunkte berechnet, oder aber beispielsweise als vier Subprozesse, die je 196608 Bildpunke berechnen. Auch wenn nicht jeder Prozeß in derselben Zeit beendet wird (manche Ausschnitte benötigen mehr Rechenzeit, obwohl sie von der Zahl der Bildpunkte gleich groß sind) ist es doch möglich, mit der Unterteilung viel Zeit zu sparen. Dabei dauert das Gesamtprozedere dann so lange, wie der langsamste der vier Einzelprozesse. Ähnlich gut lassen sich dann natürlich auch Filmsequenzen unterteilen.

Bilder vom “Bryceforum-Rechenzentrum”

Mein System besitzt eine Backplane mit 12 virtuellen PC, denen je ein Intel Pentium II-450 Prozessor zur Verfügung steht und welche sich 2048MB Hauptspeicher teilen. Damit habe ich rechnerisch etwa 5,4 Gigahertz P-II-Rechenleistung zur Verfügung, die natürlich nur ein theoretischer Wert sind. Im Schnitt kommen davon je nach Art des Renderns zwischen 4 und 5 Gigahertz zur Geltung – also im Schnitt etwa das acht- bis zehnfache eines normalen PC. Der Performancevorteil existiert natürlich nur beim reinen Rendern – während der Konstruktionsphase nutze ich einen normalen 750Mhz AMD-Athlon-Prozessor und 512 MB Hauptspeicher. Das genügt aber vollauf. Wenn es dann ans Rendern geht, muß ich erst mal entscheiden, ob des Rendern über den Cluster notwendig ist, oder nicht. Ich habe mich entschieden, alle Prozesse, die <1h benötigen nicht auf das MP-System auszulagern, sondern sie über den Standard PC laufen zu lassen. Liegt die “etimated calculation time” von Bryce aber weitaus höher (z.B. 38 Stunden), dann lohnt die Auslagerung natürlich sehr. Ein von mir selbst geschriebenes NT-Programm (ich nenne es “BryceMaster 14*”) übernimmt dann die Steuerung der Rechenanlage über das Interne Netzwerk und beginnt mit der Verteilung der Prozesse. Bei einem Film werden die Brycedateien so umgeschrieben, daß jeder Rechner im Cluster genau 1 Bild des Films berechnet – in der Primärphase also genau 12 Bilder los geschickt werden. Dazu bedarf es wie gesagt einer Änderung in den Quelldateien des Brycemodells. Die Parameter der Animation (welche Bilder berechnet werden sollen (Range)) müssen bei jedem der Prozesse angepaßt werden – das macht meine Software automatisch und beauftragt Bryce dann über eine Windows Call-Funktion genau dieses Bild zu berechnen und das Bild anschließend unter einem vorgegebenen Namen (z.B. PROJ1-001.BMP) zu Speichern und dann das Programm Bryce zu beenden. Sobald der Prozess vollkommen abgeschlossen ist ergeht eine Meldung an das Verteilerprogramm (TSR-Überwachung im Hintergrund), welches dann Bild Nr.13 an den Ersten Cluster PC schickt, welcher mit seinem Bild fertig wurde. Bei einer längeren Filmsequenz kann also jeder Cluster auch mehrere Bilder hintereinander berechnen. Die auf dem Netz abgelegten Ergebnisse müssen dann nur noch über einen weiteren Programmteil zur AVI-Sequenz zusammengefügt werden – fertig.
Reine Einzelbilder werden bei mir grundsätzlich automatisch in 12 Ausschnitte zerlegt und dann berechnet – hier wird jeder IPC-Rechner nur einmal genutzt. Mehr Aufwand lohnt dabei auch nicht. Die Zeitverluste für das jeweilige Aktivieren und Deaktivieren von Bryce sind im Vergleich zum Gewinn undramatisch. Man mag mir vorwerfen, daß das ein wenig “EDV-zu Fuss” ist, aber da Bryce leider keine Kommandozeilenbefehle entgegennimmt, scheint mir dieser (umständliche) Weg der einzig gangbare zu sein. Jedenfalls muss ich mich dabei um nichts kümmern und meine 38h Rendersequenz ist meist nach drei bis vier Stunden schon fertig. Das genügt mir! Ich hoffe, damit konnte ich einen kleinen Einblick in die Vorgehensweise verschaffen.