<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "xhtml-math11-f.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <title>
			Uni Paderborn, SFB 376, A3, Tools
		</title>
  </head>

	<body style="color: rgb(0,0,0); background-color: rgb(255,255,255);" link="#000099" vlink="#000066" alink="#3366FF">
		<font size="+1">
			<table cellpadding="0" cellspacing="32" border="0" style="text-align: left; margin-left: auto; margin-right: auto; width: 100%; font-family: times new roman,times,serif;">
				<tbody>
					<tr>
						<td valign="top">
							<table cellpadding="0" cellspacing="0" border="0" style="text-align: left; width: 100%;">
								<tbody>
									<tr>
										<td valign="middle">
											<img src="http://www.uni-paderborn.de/sfb376/pictures/sfblogo.gif" alt="SFB 376" width="119" height="75" />
										</td>
										<td width="32"> </td>
										<td valign="middle" style="text-align: left;">
											<h2>
												Sonderforschungsbereich 376, Teilprojekt A3 <br />
												Balancierung dynamischer Netzwerke: Grundlagen und Anwendung
											</h2>
										</td>
									</tr>
								</tbody>
							</table>
							<table cellpadding="0" cellspacing="0" border="0" style="text-align: left; width: 100%; background-image: url(http://www.uni-paderborn.de/sfb376/pictures/sfblogo.bg.gif);">
								<tbody>
									<tr>
										<td valign="top" style="line-height: 175%;">
											<!-- Ab hier Inhalt -->
											<h3>Heuristiken und Tools</h3>
											
											<div style="text-align: justify;"> 

                        <h4>PARTY</h4>
												<p>
                          Aktuelle Verfahren zur heuristischen Graphpartitionierung basieren auf
                          der in den vergangenen Jahren etablierten Multilevel-Methode. Sowohl
                          die Qualit&auml;t als auch die Laufzeit des Verfahren h&auml;ngen von den zwei
                          zentralen Phasen ab, dem Schrumpfen des Graphen und der sich
                          anschlie&szlig;enden lokalen Verfeinerung.
                        </p>
                        <p>
                          Zum Vergleich der verschiedenen Umsetzungen dieser zwei Phasen wurden
                          bisher auf einzelnen Testinstanzen, meist Graphen aus FEM Anwendungen
                          oder gro&szlig;e Matrizen, erzielte Ergebnisse herangezogen. Angeregt durch
                          die Dissertationsarbeit von Ulrich Elsner [<a href="A3_Literatur.php">Elsner</a>] an der TU Chemnitz 
                          haben wir in [<a href="A3_Literatur.php">S03</a>] jedoch zeigen k&ouml;nnen, da&szlig; die Qualit&auml;t 
                          der von allen getesteten
                          heuristischen Graphpartitionierungswerkzeugen berechneten L&ouml;sungen je
                          nach Wahl der Knotenreihenfolge eines Graphen bei sonst identischer
                          Struktur stark variieren k&ouml;nnen. Aufgrund dieser Erkenntniss haben wir
                          ein neues Evaluierungsschema vorgeschlagen, mit welchem anhand von
                          Knotenpermutationen verl&auml;sslichere Aussagen &uuml;ber die Qualit&auml;t der
                          einzelnen Implementierungen gemacht werden k&ouml;nnen.  Es hat sich
                          gezeigt, dass diese Information auch w&auml;hrend der Entwicklung sehr
                          hilfreich sein kann, und mit Hilfe dieses Verfahrens ist es uns
                          gelungen, den von PARTY berechneten Kantenschnitt f&uuml;r
                          2-Partitionierungen im Mittel um bis zu 20\% zu verringern, ohne die
                          Laufzeit oder die Speicheranforderungen stark zu beeintr&auml;chtigen.
                        </p>
                        <p>
                          Weiterhin haben wir den Helpful-Set Algorithmus um die M&ouml;glichkeit der
                          Berechnung von sehr unbalancierten 2-Partitionierungen erweitert.
                          Dieses entspricht einer Anforderung aus dem TP A2.  Im geringen Ma&szlig;e
                          wurden unbalancierte Partitionen auch in anderen Bibliotheken
                          eingesetzt, um mehr Spielraum f&uuml;r die lokale Verfeinerung zu schaffen.
                          Im Gegensatz zu den dortigen Werten von \% erlauben die in A2
                          entwickelten Verfahren jedoch eine m&ouml;gliche Unbalanciertheit von 66%,
                          also einen deutlich h&ouml;heren Wert.  Die erzielten Ergebnisse werden in
                          [<a href="A3_Literatur.php">S03a</a>] vorgestellt und zeigen, da&szlig; PARTY vor allem bei gro&szlig;en
                          erlaubten Unbalancen deutlich bessere 2-Partitionierungen berechnet als die
                          beiden anderen state-of-the-art Implementierungen Jostle und Metis.
                        </p>
                        <p>
                          Um einen Graphen in mehr als zwei Partitionen zu teilen, bieten
                          aktuelle Blibliotheken zwei verschiedene Verfahren an: Entweder wird
                          der Graph zun&auml;chst in 2 Teile geteilt, welche dann rekursiv weiter
                          bisektioniert werden bis die gew&uuml;nschte Zahl an Partitionen erreicht
                          ist, oder der Graph wird direkt in <i>k</i> Teile zerlegt. Vom theoretischen
                          Standpunk aus bieten direkte Verfahren mehrere Vorteile. So gibt es
                          Beispielgraphen, auf denen selbst ein optimales rekursives Verfahren
                          viel schlechter abscheidet als ein direktes. Die direkte Variante ist
                          dazu meist schneller, da der Graph nur einmal geschrumpft werden muss.
                          Weiterhin ist nicht klar, wie ein rekursives Verfahren effizient auf
                          verteilten Daten arbeiten kann. Im Gegensatz zu den theoretischen
                          &uuml;berlegungen liefern derzeit allerdings rekursive Verfahren bessere
                          Ergebnisse als die direkten, wie in [<a href="A3_Literatur.php">S03b</a>] gezeigt wurde.
                          PARTY erzielt bei diesem Vergleich der rekursiven Verfahren zudem eine deutlich
                          bessere Schnittqualit"at als JOSTLE und METIS, ben"otigt zur Berechnung aber
                          etwas mehr Zeit als METIS.
                        </p>
                        <p>
                          Im Rahmen der momentan stattfindenen Projektgruppe werden die
                          Grundlagen f&uuml;r eine parallele Version von PARTY geschaffen.  Dabei
                          geht es zun&auml;chst darum, die f&uuml;r das Helpful-Set Verfahren (und auch
                          die Lastbalancierung) ben&ouml;tigten Operationen auf einer geeigneten,
                          effizienten Datenstruktur zur Verf&uuml;gung zu stellen.  Sobald diese
                          Aufgabe erf&uuml;llt worden ist, kann damit begonnen werden, die in PARTY
                          vorhandenen sequentiellen Algorithmen zu parallelisieren.
                        </p>

                        <h4>Partitionierungsverfahren</h4>
                        <p>
                          Neben den auf der Multilevel-Methode basierenden Verfahren haben sich
                          raumf&uuml;llende Kurven als alternative, koordinaten-basierte Methode
                          etabliert. Dabei werden alle Knoten eines Graphen anhand einer
                          fraktalen, den ganzen Raum abdeckenden Kurve angeordnet, wobei durch
                          die fraktale Eigenschaft der Kurve sichergestellt wird, da&szlig;
                          benachbarte Knoten nicht "allzuweit" voneinander entfernte
                          Nummerierungen erhalten. Die so erhaltene Knotenliste muss nun nur
                          noch an den entsprechenden Stellen aufgeteilt werden, um eine
                          Partitionierung zu erhalten. Gerhard Zumbusch [<a href="A3_Literatur.php">Z01</a>,<a href="A3_Literatur.php">Z01a</a>]
                          hat in seinen Arbeiten das
                          Partitionierungsverhalten der Kurven in mehrdimensionalen Gittern
                          untersucht. Er hat gezeigt, dass die erzielte
                          Qualit&auml;t in regul&auml;ren und in nach bestimmten Regeln verfeinerten
                          Gittern "quasi-optimal" ist. D.h. der Kantenschnitt ist
                          unabh&auml;ngig von der Netzgr&ouml;&szlig;e h&ouml;chstens um einen konstanten Faktor
                          von einer optimalen L&ouml;sung entfernt.
                          Die Qualit&auml;t der von raumf&uuml;llenden Kurven induzierten
                          Partitionierungen irregul&auml;rer Finite-Elemente-Netze haben wir in
                          [<a href="A3_Literatur.php">SW03</a>] mit den Ergebnissen von Multilevel-Heuristiken verglichen.
                          Erwartungsgem&auml;&szlig; lassen sich Partitionierungen mit raumf&uuml;llenden
                          Kurven sehr schnell und mit wenig Speicherverbrauch berechnen. Die
                          erzielte Qualit&auml;t ist bei mehr als 16 Partitionen f&uuml;r die meisten
                          untersuchten Netze lediglich um den Faktor 2 schlechter, wobei bei
                          zweidimensionalen Netzen generell bessere Partitionierungen erzielt
                          werden als bei den dreidimensionalen. Bei geringerer Partitionsanzahl
                          liegt der Qualit&auml;tsverlust meist zwischen dem Faktor 2 und 4. Der
                          Vergleich unterschiedlicher raumf&uuml;llender Kurven hat gezeigt, da&szlig;
                          die rekursiven Kurven Hilbert, Lebesgue und &beta;&Omega; die besseren
                          Ergebnisse in Gittern und verfeinerten Gittern liefern, w&auml;hrend die
                          Sierpinski-Kurve f&uuml;r stark irregul&auml;re Netze geeigneter ist.
                        </p>

                        <h4>PadFEM</h4>
                        <p>
                          Das objektorientierte Framework PadFEM, welches zur
                          Implementierung datenparalleler, numerischer Algorithmen auf
                          dynamischen Graphen beziehungsweise Finite-Element-Netzen dient,
                          wurde durch ein komplettes Redesign in verschiedene Richtungen
                          weiterentwickelt und erweitert. Weiterhin wurde die Portierbarkeit
                          der gesamten Bibliothek auf unterschiedliche parallele Systeme
                          durch Unterst&uuml;tzung verschiedener Programmierparadigmen
                          erleichtert. Dazu geh&ouml;ren MPI und Posix-Threads, d.h. es wird 
                          nun sowohl Distributed als auch Shared Memory
                          Kommunikation unterst&uuml;tzt, um neue Cluster-Systeme, die meist auf 
                          Mehrprozessorsystemen basieren,
                          effizient nutzen zu k&ouml;nnen. Die Kurven in Abbildung 1 zeigen die
                          Effizienz der neuen Datenstruktur von PadFEM unter Ausnutzung von beiden
                          Speichermodellen.
                          <table cellpadding="0" cellspacing="0" border="0" style="text-align: center; width: 100%;">
													  <tbody>
														  <tr>
															  <td valign="middle">
                                  <img src="efficiency.png" width="400" height="300" />
                                </td>
														  </tr>
                              <tr>
                                Abbildung 1
                              </tr>
                            </tbody>
                          </table>
                        </p>
                        <p>
                          Als Anwendungsbeispiel wurde hier das Standard Poissonproblem in 3D
                          auf zwei Gittern (Einheitsw&uuml;rfel) mit 150000 und 300000 Elementen
                          untersucht. Dabei konnten wir unter Verwendung von 32 Prozessoren
                          eine Effizienz von ca. 75 Prozent feststellen. Die Abbildung
                          daneben zeigt die  zugeh&ouml;rige Partitionierung des W&uuml;rfels in 8
                          Partitionen. Die Tests wurden auf dem im Paderborn Center for
                          Parallel Computing (PC<sup>2</sup>) installierten HPCLine 192 Cluster
                          durchgef&uuml;hrt. Weitere Tests und Messungen werden zur Zeit auf dem
                          im PC<sup>2</sup> neu installierten HP Itanium2 Cluster durchgef&uuml;hrt.
                        </p>
                        <p>
                          Um die Benutzbarkeit von PadFEM im industriellen Umfeld zu
                          erleichtern, wurden Schnittstellen zu bekannten Werkzeugen
                          entwickelt. Hier sind IDEAS, eine Software f&uuml;r Geometrie-Design
                          und Netzgenerierung, verschiedene numerische Simulationsumgebungen
                          wie CFX oder FLUENT und die Visualisierungssoftware AMIRA zu
                          nennen.
                        </p>
                        <p>
                          Da PadFEM als eine offene Plattform zur Simulation von
                          Str&ouml;mungsproblemen zu sehen ist und kommerzielle Programme in der
                          Regel lizenzrechtlich gesch&uuml;tzt sind, ist eine Weitergabe der
                          Software nur eingeschr&auml;nkt beziehungsweise gar nicht
                          m&ouml;glich. Daher werden derzeit zwei weitere Werkzeuge als Plugin -
                          Module f&uuml;r PadFEM entwickelt:
                        <ul>
                          <li>
                            PadMESH, eine graphische Benutzeroberfl&auml;che zur
                            Generierung und Vernetzung dreidimensionaler Geometrien. Die
                            Vernetzung beschr&auml;nkt sich derzeit auf Tetraedierungen. PadMESH
                            basiert auf der freien C++ Bibliothek Open-Cascade. Die
                            dreidimensionale Adaption und Netzgenerierung mit Hilfe dieses
                            Werkzeugs, ist derzeit in der Entwicklung.
                          </li>
                          <li>
                            PadVIZ, ein Werkzeug zur graphischen Darstellung der berechneten
                            (Str&ouml;mungs-)Daten. Dieses Tool bietet ebenfalls eine graphische
                            Benutzeroberfl&auml;che, die es dem Anwender erm&ouml;glicht, 3D
                            Datens&auml;tze mit verschiedensten Visualisierungsmethoden, z.B.
                            Volume-Rendering, Streamlines oder Glyphen, darzustellen und zu
                            animieren. PadVIZ bietet zudem verschiedene Funktionalit&auml;ten
                            w&auml;hrend der Betrachtung von 3D Objekten beziehungsweise
                            Str&ouml;mungsdaten. Hierzu geh&ouml;rt das Hinein- b.z.w.
                            Hinauszoomen, Einf&auml;rben von verschiedenen Objekten, Rotationen,
                            und das Speichern von Animations-Sequenzen. 
                            PadVIZ basiert auf der freien Software Bibliothek VTK.
                          </li>
                        </ul>
                          Beide Programme befinden sich derzeit in der Weiterentwicklung und
                          Erweiterung bez&uuml;glich paralleler Techniken in den jeweiligen
                          Bereichen.
                          Weiterhin werden im Rahmen einer Projektgruppe algebraische
                          Multigrid-Methoden als Alternative zu den geometrisch
                          basierten Multigrid - Verfahren und deren Implementierung
                          unter der parallelen Datenstruktur PadFEM untersucht.
                        </p>

											</div>
											
											<!-- Bis hier Inhalt -->		
										</td>
									</tr>
								</tbody>
							</table>
						</td>
					</tr>
				</tbody>
			</table>
		</font>
  </body>
</html>

