Riposte
Authors:
Open Access
- 19 September 2012
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 43-52
Abstract
There is a growing utilization gap between modern hardware and modern programming languages for data analysis.Due to power and other constraints, recent processor design has sought improved performance through increased SIMD and multi-core parallelism. At the same time, high-level, dynamically-typed languages for data analysis have become popular. These languages emphasize ease of use and high productivity, but have, in general, low performance and limited support for exploiting hardware parallelism. In this paper, we describe Riposte, a new runtime for the R language, which bridges this gap. Riposte uses tracing, a technique commonly used to accelerate scalar code, to dynamically discover and extract sequences of vector operations from arbitrary R code. Once extracted, we can fuse traces to eliminate unnecessary memory traffic, compile them to use hardware SIMD units, and schedule them to run across multiple cores, allowing us to fully utilize the available parallelism on modern shared-memory machines. Our evaluation shows that Riposte can run vector R code near the speed of hand-optimized C, 5--50x faster than the open source implementation of R, and can also linearly scale to 32 cores for some tasks. Across 12 different workloads we achieve an overall average speed-up of over 150x without explicit programmer parallelization.Keywords
This publication has 23 references indexed in Scilit:
- Evaluating the Design of the R Language2012
- Optimizing Matlab through Just-In-Time Specialization2010
- Factored operating systems (fos)ACM SIGOPS Operating Systems Review, 2009
- Code analysis and parallelizing vector operations in RComputational Statistics, 2008
- Harnessing the Multicores: Nested Data Parallelism in Haskell2008
- Stream fusion2007
- Compiling for stream processing2006
- Interpreting the Data: Parallel Analysis with SawzallScientific Programming, 2005
- Linear scan register allocationACM Transactions on Programming Languages and Systems, 1999
- Tentative compilationACM SIGAPL APL Quote Quad, 1979