We are currently investigating various topics related to the correctness and performance of software systems, especially in the area of concurrent systems. We place a high value on producing tools and methodologies that can be used by software developers and researchers.
- ArtemisArtemis is a modular application designed for analyzing and troubleshooting the performance of large clusters running datacenter services. Artemis is composed of four modules: (1) distributed log collection and extraction, (2) a database storing the extracted data, (3) an interactive visualization tool for exploring the data, and (4) a plug-in interface (and a set of sample plug-ins) allowing users to implement data analysis tools.
- CoconutCoconut is a library for .net for working with matrix mathematics. Coconut is simple to use and presents a familiar interface to uses. However, all expressions are stored symbolically, which enables Coconut to provide a very powerful computation engine which exploits the symbolic nature of the expressions to agressively optimize and distribute the computation.
- DandelionThe goal of the Dandelion project is to provide simple programming abstractions and runtime supports for programming heterogeneous systems. Dandelion supports a uniform sequential programming model across a diverse array of execution contexts, including CPU, GPU, FPGA, and the cloud.
- NaiadNaiad is an investigation of data-parallel dataflow computation in the spirit of Dryad and DryadLINQ, but with a focus on incremental computation. Naiad introduces a new computational model, differential dataflow, operating over collections of differences rather than collections of records, and resulting in very efficient implementations of programming patterns that are expensive in existing systems.
- PTask: Dataflow Programming for GPUsSupporting future applications like gestural interfaces on low-power platforms such as cell phones and tablets forces developers to provide high compute bandwidth with low latency. To this end, PTask is a dataflow programming framework for GPUs that insulates the programmer from low-level details such as device-management, data transfer, and asynchrony. PTask is supported at the system call interface, so the OS can provide isolation and fairness guarantees for GPU computations.
- TLA ToolsTools for TLA+ specifications.