Register allocation via graph coloring
Register allocation via graph coloring
Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Transaction Processing: Concepts and Techniques
Transaction Processing: Concepts and Techniques
Lock Coarsening: Eliminating Lock Overhead in Automatically Parallelized Object-Based Programs
LCPC '96 Proceedings of the 9th International Workshop on Languages and Compilers for Parallel Computing
Comprehensive synchronization elimination for Java
Science of Computer Programming - Special issue on static analysis (SAS'99)
Stack allocation and synchronization optimizations for Java using escape analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Associating synchronization constraints with data in an object-oriented language
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Autolocker: synchronization inference for atomic sections
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 34th annual international symposium on Computer architecture
Automatic atomic region identification in shared memory SPMD programs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Concurrent data representation synthesis
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Reasoning about lock placements
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Lock inference in the presence of large libraries
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Hi-index | 0.00 |
In this paper we propose a lock assignment technique to simplify the mutual exclusion enforcement in multithreaded programs. Programmers are allowed to annotate the regions of code that are expected to be mutually exclusive as critical sections, without using explicit locks. The compiler then automatically infers an assignment of the minimum number of locks to critical sections by solving the Minimum Lock Assignment (MLA) problem so as to enforce mutual exclusion without any loss of concurrency. We show that the MLA problem is NP-hard. We have proposed a heuristic to solve the MLA problem, and tested the optimality of the heuristic with the Integer Linear Programming (ILP) solver. We have also tested the efficiency of the heuristic using scientific applications, from which we obtain up to 30% performance gain with respect to the programs in which all critical sections are controlled by a single lock.