AbstractResearchGroup
From Abstract wiki
(→Abstract Research Group @ CMU) |
(→Abstract Research Group @ CMU) |
||
Line 22: | Line 22: | ||
The Abstract research group at CMU does research at the intersection of computer architecture, computer systems, and programming languages. Our research focuses on improving the programmability, reliability, and efficiency of computing devices and systems. Our work cuts across the layers of the system stack, from the microarchitecture to the application, often touching on everything in between. | The Abstract research group at CMU does research at the intersection of computer architecture, computer systems, and programming languages. Our research focuses on improving the programmability, reliability, and efficiency of computing devices and systems. Our work cuts across the layers of the system stack, from the microarchitecture to the application, often touching on everything in between. | ||
+ | |||
+ | |||
+ | ==Research== | ||
+ | |||
+ | ===Defining Intermittent Computing=== | ||
+ | We are working to define the system stack for intermittent computing devices, like ones that harvest energy from their environment. Our goal is to make these devices programmable, reliable, and robust to common-case power failures. Making these devices useful requires us to rethink the whole system stack to deal with complexity and reliability, from programming abstractions tolerant of interruptions, down to super-energy-efficient circuits we use to implement microarchitectural features tolerant of byzantine failures. Tolerating failures and imprecision are the key to making these devices work. | ||
+ | |||
+ | ===Concurrency and Parallelism=== | ||
+ | We are working to develop software techniques and hardware architectural features to make concurrent and parallel computer systems and software correct, reliable, and efficient. I am especially interested in architectural features that make programming easier, hardware software solutions to making debugging automatic, and architecture, compiler, and runtime gadgets that automatically avoid failures in broken programs. I think approaches based on statistical inference, symbolic execution, and super-lightweight dynamic analysis are particularly promising. | ||
+ | |||
+ | ===Taming Heterogeneous Computing=== | ||
+ | We are working to map the design space of programmability, performance and generality on the increasingly important heterogeneous computing systems, like ones with a mixture of CPUs, GPUs FPGA, CGRAs, and ASICs. One of our goals is to define an efficient, implementable, comprehensible memory model and programming abstraction for such systems. To solve this problem, we need reconcile the differences of these devices with unifying architectural abstractions, hardware/software compilation and synthesis, and programming techniques that accommodate the breadth of features, precision levels, and efficiencies available. | ||
Revision as of 16:00, 5 May 2015
Abstract Research Group @ CMU
The Abstract research group at CMU does research at the intersection of computer architecture, computer systems, and programming languages. Our research focuses on improving the programmability, reliability, and efficiency of computing devices and systems. Our work cuts across the layers of the system stack, from the microarchitecture to the application, often touching on everything in between.
Research
Defining Intermittent Computing
We are working to define the system stack for intermittent computing devices, like ones that harvest energy from their environment. Our goal is to make these devices programmable, reliable, and robust to common-case power failures. Making these devices useful requires us to rethink the whole system stack to deal with complexity and reliability, from programming abstractions tolerant of interruptions, down to super-energy-efficient circuits we use to implement microarchitectural features tolerant of byzantine failures. Tolerating failures and imprecision are the key to making these devices work.
Concurrency and Parallelism
We are working to develop software techniques and hardware architectural features to make concurrent and parallel computer systems and software correct, reliable, and efficient. I am especially interested in architectural features that make programming easier, hardware software solutions to making debugging automatic, and architecture, compiler, and runtime gadgets that automatically avoid failures in broken programs. I think approaches based on statistical inference, symbolic execution, and super-lightweight dynamic analysis are particularly promising.
Taming Heterogeneous Computing
We are working to map the design space of programmability, performance and generality on the increasingly important heterogeneous computing systems, like ones with a mixture of CPUs, GPUs FPGA, CGRAs, and ASICs. One of our goals is to define an efficient, implementable, comprehensible memory model and programming abstraction for such systems. To solve this problem, we need reconcile the differences of these devices with unifying architectural abstractions, hardware/software compilation and synthesis, and programming techniques that accommodate the breadth of features, precision levels, and efficiencies available.
People
Faculty
PhD Students
Nuno Machado (summer 2015 Visiting Scholar, from IST Lisboa)
Masters Students
Dhruva Tirumala
Undergraduates
Graham Harvey
Mark McElwaine