LUSTRE: a declarative language for real-time programming
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Automatic derivation and implementation of signal processing algorithms
ACM SIGSAM Bulletin
STREAM: the stanford stream data manager (demonstration description)
Proceedings of the 2003 ACM SIGMOD international conference on Management of data
Brook for GPUs: stream computing on graphics hardware
ACM SIGGRAPH 2004 Papers
The development of Chez Scheme
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Whole-program compilation in MLton
Proceedings of the 2006 workshop on ML
Exploiting coarse-grained task, data, and pipeline parallelism in stream programs
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
The design and implementation of a self-calibrating distributed acoustic sensing platform
Proceedings of the 4th international conference on Embedded networked sensor systems
An empirical study of collaborative acoustic source localization
Proceedings of the 6th international conference on Information processing in sensor networks
Monitoring streams: a new class of data management applications
VLDB '02 Proceedings of the 28th international conference on Very Large Data Bases
Acute: High-level programming language design for distributed computation
Journal of Functional Programming
XStream: a Signal-Oriented Data Stream Management System
ICDE '08 Proceedings of the 2008 IEEE 24th International Conference on Data Engineering
Resource aware programming in the Pixie OS
Proceedings of the 6th ACM conference on Embedded network sensor systems
Wishbone: profile-based partitioning for sensornet applications
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
Adaptive spatiotemporal node selection in dynamic networks
Proceedings of the 19th international conference on Parallel architectures and compilation techniques
Proceedings of the ACM SIGSPATIAL International Workshop on GeoStreaming
Tables: a spreadsheet-inspired programming model for sensor networks
DCOSS'10 Proceedings of the 6th IEEE international conference on Distributed Computing in Sensor Systems
Avalanche: a fine-grained flow graph model for irregular applications on distributed-memory systems
Proceedings of the 1st ACM SIGPLAN workshop on Functional high-performance computing
Intel "big data" science and technology center vision and execution plan
ACM SIGMOD Record
Embrace, defend, extend: a methodology for embedding preexisting DSLs
Proceedings of the 1st annual workshop on Functional programming concepts in domain-specific languages
Hi-index | 0.00 |
Applications that combine live data streams with embedded, parallel, and distributed processing are becoming more commonplace. WaveScript is a domain-specific language that brings high-level, type-safe, garbage-collected programming to these domains. This is made possible by three primary implementation techniques, each of which leverages characteristics of the streaming domain. First, we employ a novel evaluation strategy that uses a combination of interpretation and reification to partially evaluate programs into stream dataflow graphs. Second, we use profile-driven compilation to enable many optimizations that are normally only available in the synchronous (rather than asynchronous) dataflow domain. Finally, we incorporate an extensible system for rewrite rules to capture algebraic properties in specific domains (such as signal processing). We have used our language to build and deploy a sensornetwork for the acoustic localization of wild animals, in particular, the Yellow-Bellied marmot. We evaluate WaveScript's performance on this application, showing that it yields good performance on both embedded and desktop-class machines, including distributed execution and substantial parallel speedups. Our language allowed us to implement the application rapidly, while outperforming a previous C implementation by over 35%, using fewer than half the lines of code. We evaluate the contribution of our optimizations to this success.