Schnabl, T. (2013). Critical links detection using CUDA [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/159715
E186 - Institut für Computergraphik und Algorithmen
-
Date (published):
2013
-
Number of Pages:
53
-
Keywords:
Diameter; APSP; CUDA; GPGPU; Kritische Kanten
de
diameter; APSP; CUDA; GPGPU; Critical Links
en
Abstract:
In dieser Diplomarbeit wird ein Algorithmus entworfen, der das Critical Links Detection (CLD) Problem mit mehreren simultan entfernten Kanten löst. Dieses Problem ist für mehr als 2 gleichzeitig entfernten Kanten NP-vollständig. Im CLD Problem wird der Diameter eines Graphen untersucht, wenn eine oder mehrere Kanten entfernt werden. Gesucht wird hierbei die kleinste Menge von Kanten, die geschützt werden muss, damit der Diameter des Graphs einen bestimmten Maximaldiameter nicht überschreitet. Der Diameter eines Graphen ist definiert als die Länge des All-Pair-Shortest-Path (APSP). Der präsentierte Algorithmus berechnet die CLD durch Aufbau und Lösens eines Integer Linear Programming (ILP) Modells. Bei k gleichzeitig möglichen Kantenausfällen werden alle Untermengen von k Kanten überprüft und all jene Gruppen von Kanten hinzugefügt, deren Entfernung aus dem Graph dessen Diameter die erlaubte Grenze überschreiten lassen. Die Lösung dieses Problems entspricht der Auswahl einer Menge Kanten aus diesen Gruppen, die möglichst klein ist. Die Diplomarbeit präsentiert außerdem zusätzliche Verbesserungen am Algorithmus um die Laufzeit zu reduzieren. Da die Berechnung der Diameter einen großen Anteil der Prozesszeit verbraucht, wird diese mithilfe von CUDA, einem Programmier-Framework, auf der Graphikkarte berechnet. Im gewählten APSP Algorithmus werden hierzu auf jedem der GPU Prozessoren ein Single-Start-Shortest-Path (SSSP) Algorithmus durchgeführt, der intern genau einen Thread pro Knoten des Graphen behandelt. Je nach Instanzgroße rechnen so tausende oder Millionen Threads gleichzeitig auf der Graphikkarte. So konnte die Laufzeit des Algorithmusses bei kleinen Testinstanzen um 30%, bei großen Testinstanzen mit etwa 1000 Kanten um 70% reduziert werden.
The Critical Links Detection (CLD) Problem consists of finding for the smallest set of edges in a graph to be protected so that if a given number of unprotected edges are removed the diameter does not exceed a given value. The diameter of a graph is defined as the length of the All-Pair-Shortest-Path (APSP). This thesis presents an algorithm that takes an instance of a graph and calculates the minimal set of protected edges. For k simultaneously failing edges it checks all possible tuples of k edges if after temporarily removing them the diameter of the graph exceeds the limit. Afterwards a Integer Linear Programming (ILP) model is built up and solved, which is equivalent to choosing the minimal amount of edges from these sets to get a feasible solution. Since the calculation of diameters takes most of the process time, the thesis presents an improvement on the performance of the algorithm. A massive parallel approach is implemented using CUDA, a framework to run calculations on graphic cards, also called GPGPU. The chosen algorithm solves one Single Start Shortest Paths (SSSP) algorithm on one GPU processor, running one thread per vertex of the graph. The performance of the algorithm shows a speedup of 30% using this approach on small instances and 70% improvement on large instances with over 1000 edges.
en
Additional information:
Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers Zsfassung in dt. Sprache