Professional AssociationsProfessional Associations: ACM
more informationMore information: curriculum vitae | medium articles
Visit my personal web page at http://rabbahs.com
Composer is a new model of programming applications that are both serverless by constructions, and which compose serverless, polyglot, functions. It offers a functional programming oriented library of combinators to describe control and data flow. It is available as an experimental offering for IBM Cloud Functions and Apache OpenWhisk. You can also get the code and run it yourself from our GitHub project.
For more information, visit the Composer GitHub project.
Functions Shell is a new programming experience geared for the cloud and IBM Cloud Functions. It helps with developing, deploying, running, and debugging serverless Functions and compositions. It is available as an experimental offering for IBM Cloud Functions and Apache OpenWhisk. You can also get the code and run it yourself from our GitHub project.
For more information, visit the Shell GitHub project.
OpenWhisk is a new serverless computing ability that fills an important gap in the IBM cloud portfolio. It offers a simple yet composable programming model for cloud, web and mobile development. Whisk frees developers from the burden of managing backend processing systems and affords them a greater opportunity to focus on delivering business value and exceptional user experiences. It powers the IBM Serverless offering called Cloud Functions. You can also get the code and run it yourself from our GitHub project.
For more information, visit the OpenWhisk developer webpage.
Liquid Metal aims to exploit the increasing availability of FPGAs to offer end-to-end high-performance and low-power solutions for a broad range of applications. The challenge is that FPGA programming remains a difficult, time-consuming task and resources are often left under-utilized. The project aims to create a single unified programming language and environment that allows (all) portions of a system to move fluidly between hardware and software, dynamically and adaptively.
For more information, visit the Liquid Metal webpage.
StreamIt involves the design and evaluation of a novel language for streaming and signal processing applications, and a powerful optimizing compiler for commercial off-the-shelf DSP architectures, conventional CPUs, server farms, and emerging tiled-processor architectures. The ultimate goal of the StreamIt project is to develop a practical, high-level stream language that is easy to use but achieves the performance of hand-coded C and assembly code for DSP applications.
For more information, visit the StreamIt webpage.
StreamBit is a compiler that aims to increase productivity in the development of applications that process streams at the bit level. Such bit-stream programs occur in several domains such as cryptography and coding, and they are characterized by strong performance requirements and huge performance differences between highly tuned implementations and more naively written ones. For this reason, widely used implementations often combine clever high-level optimizations with careful low-level coding. StreamBit combines StreamIt with optimization sketches to allow for separation of concerns between the algorithm specification and the implementation details, greatly simplifying the development process.
VersaBench has three goals. The first is to understand how program behavior varies with its input workload. The second is to deliver a set of robust algorithms for the discovery of program phases. The third goal is to use the program characteristics to drive the investigation of various high-impact and low-cost architecture and ISA modifications.
For more information, visit the VersaBench webpage.
Adaptive and Cooperative Execution (ACE) allows a program to adapt its behavior to runtime information communicated to it by the architecture. ACE relies on the compiler to orchestrate and embed within a program a set of precomputation chains that lead to runtime speculation geared toward faster (and more efficient) program execution. This project aims to extend the ACE prototype and build on its early success to tackle challenging problems in modern systems.
For more information, read our papers in ASPLOS 2004 and WBIA 2005.
Reptile is focused on innovating compilation techniques to effectively parallelize C programs for the emerging class of tiled-processor architectures. Our immediate emphasis is on the MIT Raw processor, an architecture designed to address the challenges that limit the scalability of current monolithic systems. Raw is a distributed and wired-exposed processors, with sixteen simple cores and compiled-controlled interconnect. Raw affords massive levels of parallelism and bandwidth, but as with any tiled-processor, it increases the burden on the compiler to effectively parallelize programs implemented in the traditional von Neumann model of computation (e.g., C programs).
Reptile culminated in a S.M. thesis authored by Ian Bratt.
Trimaran is a publicly available compilation and simulation framework for VLIW research. It is based on the HPL-PD parameterized processor architecture which supports novel features such as predication, control and data speculation, and compiler controlled management of the memory hierarchy. The HPL-PD is a precursor to the Intel Itanium Processor Family. Trimaran consists of a full suite of analysis and optimization modules, as well as a graph-based intermediate language. Optimizations and analysis modules can be easily added, deleted or bypassed, thus facilitating compiler optimization research. Similarly, computer architecture research can be conducted by varying the HPL-PD configuration via a machine description language, or through extension to the detailed simulation environment.
For more information, visit the Trimaran webpage.