Efficient Support of Fine-grained Futures in Java

Lingli Zhang, Chandra Krintz, and Sunil Soman

PDCS, November 2006, Dallas, TX

PDF

Abstract

We present and empirically evaluate a novel implementation of the futures for Java. A future is a parallel programming language construct that enables programmers to specify potential asynchronous computations. Our future implementation is a JVM extension that couples estimates of future computational granularity with underlying resource availability to enable the JVM to automatically and adaptively decide when to spawn futures in parallel or to execute them sequentially. Our system builds from, combines, and extends (i) lazy task creation and (ii) a JVM program sampling infrastructure (common to many state-of-the-art JVM implementations) previously used solely for dynamic and adaptive compilation. We empirically evaluate our system using different benchmarks, triggers for automatic spawning of futures, processor availability, and JVM configurations. We show that our future implementation for Java is efficient and scalable for fine-grained Java futures without requiring programmer intervention.