The objective of this work is to investigate the algorithm design and the
programming model of multi-threaded computing. Designing multi-threaded
algorithms is very challenging - when multiple threads need to communicate or
coordinate with each other, efficient synchronization support is needed.
However, synchronizations are known to be expensive on the emerging
multi-/many-core processors, especially when the number of threads increases. To
fully unleash the power of such processors, carefully investigations are needed
in both algorithm design and programming models for multi-threaded systems.
In this dissertation, we first present an asynchronous multi-threaded algorithm
for the maximum network flow problem. This algorithm is based on the classical
push-relabel algorithm and completely removes the use of locks and barriers from
its original parallel version. While this algorithmic method shows
effectiveness, it is challenging to generalize the success to other
multi-threaded problem. We next focus on improving the transactional memory, a
promising mechanism to construct multi-threaded programs. A queuing-theory-based
model is developed to analyze the performance of different transactional memory
systems. Based on the results of the model, we emphasize on the contention
management mechanism of transactional memory systems. A profiling-based
adaptive contention management scheme is finally proposed to cope with the
problem that none of the static contention management schemes can keep good
performance on all platforms for all types of workload. From this research, we
show that it is necessary and worthwhile to explore both the algorithm design
aspect and the programming model aspect for multi-thread computing.
Identifer | oai:union.ndltd.org:GATECH/oai:smartech.gatech.edu:1853/43635 |
Date | 27 March 2012 |
Creators | He, Zhengyu |
Publisher | Georgia Institute of Technology |
Source Sets | Georgia Tech Electronic Thesis and Dissertation Archive |
Detected Language | English |
Type | Dissertation |
Page generated in 0.0026 seconds