For my PhD dissertation, I have been working on automatic DOALL and wavefront parallelization of sparse computations based on simplifying data dependence relations used in inspector/executor strategy. Sparse data structures are commonly used in real world application to save on memory and storage, and improve sequential execution performance. Nonetheless, compilers have difficulty analyzing and optimizing sparse codes due to indirect memory accesses, such as Val[index[i]]. I work on extending data dependence analysis of sparse computation with domain knowledge about the computation, to enable automatic full and wavefront parallelization in these type of codes.


Past Projects:

1. Implementing SIFT on GPU (siftCU)

siftCU is a GPU-based implementation of SIFT algorithm using Compute Unified Device Architecture (CUDA) programming framework. You can freely download it here.

2. Developing a Specialized Distributed System for SIFT (siftD)

SiftD is a hybrid distributed system that uses both CPUs and GPUs to distribute and parallelize SIFT algorithm. It is freely available through this link. We have implemented SiftD entirely in C++. To make implementation as portable as possible, only POSIX and ANSI C++ standard libraries have been used. This makes siftD portable across most of Linux and UNIX platforms. SiftD uses two separate implementations of SIFT, one for utilizing CPUs and another one for utilizing GPUs. SiftD uses siftCU for running the algorithm on GPUs. SiftD includes three major components: Masters, Workers and Distributed File Systems (DFSs).


Last updated: October 30, 2018