|
[ Publications ]
[ Research Opportunities ]
[ Partners & Supporters ]
[ Earlier Work ]
|
|
Exploiting Task Order Information for Optimizing Sequentially Consistent Java Programs
|
| Christoph M. Angerer,
Thomas R. Gross,
Exploiting Task Order Information for Optimizing Sequentially Consistent Java Programs, Proceedings of the International Conference on Parallel Architectures and Compilation Techniques (PACT 2011), October 2011.
[PACT_2011.pdf]
|
|
Java was designed as a secure language that supports
running untrusted code as part of trusted applications.
For safety reasons, Java therefore defines a memory model that
prevents undefined behavior in multi-threaded
programs even if the programs are not correctly synchronized.
Because of the potential negative performance impact the Java designers
did not choose a simple and natural memory model, such as sequential consistency,
but instead developed a relaxed memory model that gives the compiler more optimization
opportunities.
As it is today, however, the relaxed Java Memory Model is not only hard to understand
but it unnecessarily complicates reasoning about parallel programs and it
turned out to be difficult to implement correctly.
This paper presents an optimizing compiler for a Java version that has sequential consistency
as its memory model.
Based on a programming model with explicit happens-before constraints between tasks,
we describe a static schedule analysis that computes whether two tasks may be
executed in parallel or if they are ordered.
During optimization, the task-ordering information is exploited to
reduce the number of volatile memory accesses the compiler must insert to guarantee
sequential consistency.
The evaluation shows that scheduling information significantly improves
the effectiveness of the optimizations.
For our set of multi-threaded benchmarks the fully optimizing compiler removes
between 70\% and 100\% of the volatile memory accesses inserted by the non-optimizing compiler.
As a result, the overhead of sequentially consistent Java compared to standard Java
is reduced from 136\% on average for the unoptimized version to 11\% on average for the optimized version.
The results indicate that with appropriate optimizations, sequential consistency can be a
feasible alternative to the Java Memory Model.
|
|
[ Publications ]
[ Research Opportunities ]
[ Partners & Supporters ]
[ Earlier Work ]
|
|