Computing has become the backbone of modern society. Computing systems are becoming ever more complex — with multiple compute-engines, novel memory hierarchies with unique characteristics, complex communication networks on- and off-chip, and generally distributed nature of computing platform. But the real increase in complexity is in the functionalities that we want to develop, e.g., smart transportation (managing all the vehicle movement across the city so that that all of them can move smoothly and efficiently), smart-city, smart-grid, etc. These applications incorporate intelligence, are distributed, and have high computation, power, performance, reliability, and resilience requirements. Many of them are time-sensitive and even mission or safety-critical in nature.
The mission of Make Programming Simple Lab is to investigate novel architectural, compiler, runtime, and system operation mechanisms to make the task of programming these ambitious applications easier on complex, distributed, and heterogeneous computing platforms.