Software Tools (Silicon Valley)

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.

Current Projects
  • Artemis
    Artemis 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.
  • Coconut
    Coconut 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.
  • Dandelion
    The 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.
  • Naiad
    The Naiad project is an investigation of data-parallel dataflow computation, like Dryad and DryadLINQ, but with a focus on low-latency streaming and cyclic computations. Naiad introduces a new computational model, timely dataflow, which combines low-latency asynchronous message flow with lightweight coordination when required. These primitives allow the efficient implementation of many dataflow patterns, from bulk and streaming computation to iterative graph processing and machine learning.
  • PTask: Dataflow Programming for GPUs
    Supporting 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 Tools
    Tools for TLA+ specifications.