Increasingly, computing trends are leading to a new class of distributed and highly-dynamic applications in which spatial-awareness plays a central role. Spatially-aware applications rely on absolute or relative information about the geographic position of compute devices in order to support novel functionality. While many spatial application drivers already exist in mobile and distributed computing, very little support exists for programming these applications, expressing their spatial and temporal constraints, and supporting optimization layers for efficient implementation on real-world, highly-dynamic platforms. This research addresses these shortcomings by providing language- and system-layer support for expressing and optimizing spatial applications. Since spatial computing is inherently distributed, close attention is given to resource sharing and management within and across programs.
The project's SARANA system architecture includes (i) a programming language that allows users to express the spatial region of interest and the quality of result required, (ii) a compiler that can optimize the program so it uses resources more efficiently, and (iii) a runtime system that dynamically installs and migrates the program onto physical nodes whose resource availability match its resource needs. A resource cost model permeates all the system layers of SARANA, permitting users to express their resource needs and quality of result requirements in terms of cost-benefit tradeoffs. . The runtime system prices resources and services, in order to broker agreements regarding resource needs and availability. SARANA's driving applications include an early warning system to find abducted children (Amber Alert), an earthquake monitoring system, and multi-user gaming networks.