Big data and intelligent analysis drive the emergence of many interesting workloads such as machine learning and graph analytics. Those workloads are often challenging to be executed in data centers, because of large data sets, irregular memory access patterns, or high computation intensity. We introduce new hardware architectures (such as accelerators), scheduling mechanisms, and distributed systems to enable efficient executions of those new workloads.
Memory and storage are becoming increasingly heterogeneous because of the concerns on capacity, total cost of ownership (TOC), and performance. Memory and storage heterogeneity brings challenges on data management (including allocation, migration and co-location). We study how OS, programming models, runtime systems and applications can effectively manage data to maximize performance benefits on heterogeneous memory and storage system.
Growing software complexity and birth of emerging computing devices, computing systems incorporate parallelism in every level. We are confronting systems that connect hundreds of compute nodes where each compute node is equipped with heterogeneous processors, memories, and storages. Under such an extreme level of parallelism, we study how runtime systems, computer architecture, and programming language can enforce correct and reliable computation.
Emerging computing subsystems and big data workloads introduce challenges to programmers in correct and efficient program implementation. Understanding the runtime behavior of programs in the perspective of program correctness, power efficiency, and performance is critical. We research better ways to support program execution by exploiting new patterns in the interactions between workloads and emerging computing sub systems.