What's Reflex
Reflex is a suite of compiler and runtime support for applications to leverage low-power processors on mobile systems.
Low-power processors that are encompassed in an extremely asymmetric architecture promise very high energy-efficiency to frequent, simple computational tasks, most notably sensing. However, programming such an architecture is difficult, especially to numerous third-party developers.
Reflex reliefs developers from dealing with the extremely asymmetric architecture. It not only manages deployment and execution of an application that is distributed over the main and the low-power processors, but also creates a software Distributed Shared Memory (DSM) across the distributed code. Essentially, Reflex provides a certain degree of programming transparency.
News
Oct-2011: Our paper has been accepted by ASPLOS '12.
- Mar-2011: We have published a technical report (0310-2011) to describe our progress with Reflex.
- Oct-2010: We have presented our Dandelion paper on the 1st ACM Wireless Health Conference.
- Mar-2010: We have published a technical report (0315-2010) to describe our progress with Reflex.
- Mar-2010: We have demonstrated Reflex at HotMobile 2010.
- Feb-2010: We have submitted Reflex to Nokia's PUSH N900 competition.
Publications
- "Reflex: Using Low-Power Processors in Smartphones without Knowing Them", Felix Xiaozhu Lin, Zhen Wang, Robert LiKamWa, and Lin Zhong, to appear at ASPLOS 2012.
- "Transparently Programming of Heterogeneous Smartphone for Sensing," Technical Report 0310-2011, Felix Xiaozhu Lin, Zhen Wang, Robert LiKamWa, and Lin Zhong, Rice University, Mar 2011. [pdf]
- "Dandelion: A Framework for Transparently Programming Phone-Centered Wireless Body Sensor Applications for Health," Felix Xiaozhu Lin, Ahmad Rahmati, and Lin Zhong, in Proceedings of the 1st ACM Wireless Health, 2010. [pdf]
- "Reflex: managing sensor data processing in mobile systems," Technical Report 0315-2010, Felix Xiaozhu Lin and Lin Zhong, Rice University, March 2010. [pdf]
- "Reflex: System and Programming Support for Efficient Sensor Use in Mobile Systems", Demo Abstract, Felix Xiaozhu Lin and Lin Zhong, HotMobile 2010). [pdf]
The Evolving Path
Reflex has been evolving. It is increasingly focused on facilitating third-party application development.
The first generation of Reflex (2009) defined a preliminary abstraction, called channel, for code to be executed on heterogeneous resources. The developer must explicitly construct and pass messages for channel-application communication.
Dandelion (1st half of 2010) is a branch off Reflex that eases smartphone application development with wireless body-area sensors. The previous channel abstraction is replaced by senselet, a platform-agnostic C++ class. Dandelion is able to conceal the heterogeneity but not the distributed nature.
The current Reflex (2nd half of 2010 to now) targets hiding both the distributed and the asymmetric nature. A software Distributed Shared Memory (DSM) frees the developers from dealing with communication among loosely-coupled processors.The introduction of DSM not only led the existing system to a different overall design but also called for new components.
As of Mar. 2011, the Reflex codebase contains more than 10K lines of code, of which only less than 10% is reused/modified from the Dandelion codebase. The codebase is still growing.
Prototypes
We have just ported Reflex to TI pandaboard (based on TI OMAP4430 SoC). Picture source: TI.
The most recent Reflex hardware prototype built with Nokia N900 (based on TI OMAP3630 SoC), NXP LPC1768, and TI MSP430F1611.
The first geneartion Reflex prototype built with Nokia N810 and Rice Orbit Sensor.
An even earlier Reflex prototype built with Nokia N810, Rice Orbit Sensor, and CMUCAM3 camera.
People
Source Code
We are working hard towards publishing the Reflex Code.
Made by Rice Efficient Computing Group, 2011.



