Concurrent Data Structures

Supervisor: Eric Ruppert
Session: Winter 2015/Summer 2015
Required Background: EECS2031 and general EECS4080 prerequisites
Desirable Background: EECS3221

A traditional data structure is designed so that one operation can be performed on it at a time. This is no longer sufficient for the multicore architectures that have become prevalent in the past few years. A concurrent data structure is designed so that many threads can access it simultaneously. This requires some care in ensuring that concurrent operations do not interfere with one another.

The goal of this project is to implement concurrent data structures in C so that performance testing can be carried out on them. In particular, we would like to make use of Intel’s Manycore Testing Lab (see https://software.intel.com/en-us/articles/intel-mtl-faq-1) to look at throughput and scalability of the data structures when large numbers of threads access them concurrently. Ultimately, we would also like to examine the possibility of designing special-purpose hardware to make concurrent data structures run faster.