Following are some potential student projects, and their simple descriptions. All the following projects require some knowledge of MPI (message passing interface).
Highly parallel I/O: I/O subsystems of supercomputers are quite complex and somewhat different from sequential I/O. The read and write times from shared disks on supercomputing systems are often affected by network congestion and inefficient routing for I/O. We work on developing novel routing algorithms to improve the I/O times.
Performance analysis of parallel programs: Our lab works on analyzing parallel programs to understand the source of poor performance (e.g. high execution times). This includes profiling parallel codes to analyze inefficient memory accesses and time-consuming communications. We also work on visual profiling to better understand the performance bugs.
Job scheduling on supercomputers: Several jobs are submitted to a supercomputer. Jobs vary in size and time. In recent years, they also vary in the communication characteristics and there may be other dependent jobs. Therefore, a job scheduler needs to not only consider the size and time of a job, but also several other job-specific features to obtain the best system throughput.
Machine learning for big data: Machine learning algorithms for big data often deal with remote data accesses, which hinder the performance of these algorithms due to inefficient mapping of processes to processors. We will use message passing interface (MPI) to develop some of these algorithms for better performance.