Analysis of parallel iterative graph applications on shared memory systems
Please cite this item using this persistent URLhttp://hdl.handle.net/11693/35746
Graph analytics have come to prominence due to their wide applicability to many phenomena of real world such as social networks, protein-protein interactions, power grids, transportation networks, and other domains. Despite the increase in computational capability of current systems, developing an effective graph algorithm is challenging due to the complexity and diversity of graphs. In order to process large graphs, there exist many frameworks adopting different design decisions. Nonetheless, there is no clear consensus among the frameworks on optimum design selections. In this dissertation, we provide various parallel implementations of three representative iterative graph algorithms: Pagerank, Single-Source Shortest Path, and Breadth-First Search by considering different design decisions such as the order of computations, data access pattern, and work activation. We experimentally study the trade-offs between performance, scalability, work efficiency of each implementation on both real-world and synthetic graphs in order to guide developers in making effective choices while implementing graph applications. Since graphs with billions of edges can fit in memory capacities of modern shared-memory systems, the applications are implemented on a shared-memory parallel/multicore machine. We also investigate the bottlenecks of each algorithm that may limit the performance of shared-memory platforms by considering the micro-architectural parameters. Finally, we give a detailed road-map for choosing design points for efficient graph processing.