MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The C programming language
A production-quality C* compiler for Hypercube multicomputers
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
An exception handling model for parallel programming and its verification
SIGSOFT '91 Proceedings of the conference on Software for citical systems
Artificial intelligence (3rd ed.)
Artificial intelligence (3rd ed.)
What are race conditions?: Some issues and formalizations
ACM Letters on Programming Languages and Systems (LOPLAS)
Parallel programming in Split-C
Proceedings of the 1993 ACM/IEEE conference on Supercomputing
Declarative Ada: parallel dataflow programming in a familiar context
CSC '95 Proceedings of the 1995 ACM 23rd annual conference on Computer science
The implementation of the Cilk-5 multithreaded language
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
Proceedings of the ACM 2000 conference on Java Grande
Java consistency: nonoperational characterizations for Java memory behavior
ACM Transactions on Computer Systems (TOCS)
Java Virtual Machine Specification
Java Virtual Machine Specification
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Artificial Intelligence: A Modern Approach
Artificial Intelligence: A Modern Approach
ACM '78 Proceedings of the 1978 annual conference
The Sisal Model of Functional Programming and its Implementation
PAS '97 Proceedings of the 2nd AIZU International Symposium on Parallel Algorithms / Architecture Synthesis
Concurrent Exception Handling in a Distributed Object-Oriented Computing Environment
ICPADS '00 Proceedings of the Seventh International Conference on Parallel and Distributed Systems: Workshops
NESL: A Nested Data-Parallel Language (Version 2.6)
NESL: A Nested Data-Parallel Language (Version 2.6)
The Programming Language Declarative Ada Reference Manual
The Programming Language Declarative Ada Reference Manual
VAL- ORIENTED ALGORITHMIC LANGUAGE, PRELIMINARY REFERENCE MANUAL
VAL- ORIENTED ALGORITHMIC LANGUAGE, PRELIMINARY REFERENCE MANUAL
Java 1.5 Tiger: A Developer's Notebook
Java 1.5 Tiger: A Developer's Notebook
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
A scheduling framework for general-purpose parallel languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Kilim: Isolation-Typed Actors for Java
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Mixing source and bytecode: a case for compilation by normalization
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
The design of a task parallel library
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Computer Languages, Systems and Structures
Exceptions for algorithmic skeletons
Euro-Par'10 Proceedings of the 16th international Euro-Par conference on Parallel processing: Part II
A proposal for OpenMP for Java
IWOMP'05/IWOMP'06 Proceedings of the 2005 and 2006 international conference on OpenMP shared memory parallel programming
Implicitly threaded parallelism in manticore
Journal of Functional Programming
On probabilistic parallel programs with process creation and synchronisation
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
LCPC'09 Proceedings of the 22nd international conference on Languages and Compilers for Parallel Computing
Towards an error model for OpenMP
IWOMP'10 Proceedings of the 6th international conference on Beyond Loop Level Parallelism in OpenMP: accelerators, Tasking and more
Dependence analysis for safe futures
Science of Computer Programming
Hi-index | 0.00 |
JCilk extends the serial subset of the Java language by importing the fork-join primitives spawn and sync from the Cilk multithreaded language, thereby providing call-return semantics for multithreaded subcomputations. In addition, JCilk transparently integrates Java's exception handling with multithreading by extending the semantics of Java's try and catch constructs, but without adding new keywords. This extension is "faithful" in that it obeys Java's ordinary serial semantics when executed on a single processor. When executed in parallel, however, an exception thrown by a JCilk computation causes its sibling computations to abort, which yields a clean semantics in which the enclosing cilk try block need only handle a single exception.The exception semantics of JCilk allows programs with speculative computations to be programmed easily. Speculation is essential in order to parallelize programs such as branch-and-bound or heuristic search. We show how JCilk's linguistic mechanisms can be used to program the "queens" puzzle and a parallel alpha-beta search. We have implemented JCilk's semantic model in a prototype compiler and runtime system, called JCilk-I. The compiler implements continuations in a novel fashion by introducing goto statements into Java. The JCilk-I runtime system shadows the dynamic hierarchy of cilk try blocks using a "try tree", allowing the system to chase down side computations that must be aborted. Performance studies indicate that JCilk's exception mechanism incurs minimal overhead, contributing at most a few percent on top of the cost for a spawn/return.