Date Added: Jan 2012
One way to relieve resources when executing a program on constrained devices is to migrate parts of it to other machines in a distributed system. Ideally, a system can automatically decide where to place parts of a program to satisfy resource constrains (CPU, memory bandwidth, battery power, etc.). The authors describe a compiler and virtual machine infrastructure as the context for research in automatic program partitioning and optimization for distributed execution. They define program partitioning as the process of decomposing a program into multiple tasks. The main motivation for their design is to enable experimenting with optimizing program execution on resource-constrained devices with respect to memory consumption, CPU time, battery lifetime and communication.