User loginNavigation |
archivesDistributed Transactional MemoryHi, I am new to this Forum. I hope this will be of interest to this community. I am working on a project that tries to combine some of the strengths of shared state and of the Actor model. How to allow developers to model the world using object orientation, while offering safety and composability when writing parallel and distributed applications? The option I am exploring is an innovative STM implementation, with very simple transactions semantics and an extension mechanism to allow custom processing of transactions' write sets. Transactions are View Isolated, i.e. take a full and stable snapshot of memory, without significantly compromising performance thanks to a new lock free algorithm. Transactions never read inconsistent data, do not abort while partially executed, and global progress is guaranteed. The extension mechanism allows processing like logging every changes occurring on transactional objects. Our most sophisticated extension sends transactions’ data over a network, and commits them identically on two machines. This enables a high-performance form of object replication. Our implementations can replicate data between Java, .NET and GWT. If you are at JavaOne next week, I am going to present the project on Monday: Session ID: S312949 A paper is available here and an open-source implementation here. Comments suggestions welcome. OoO JavaWe typically hear about optimistic transactional memory, so it's refreshing to see analysis-driven work on the pessimistic side in OoOJava: Software Out-of-Order Execution. Of note, they guarantee determinism:
(James C. Jenista, Yong hun Eom, and Brian Demsky) In discussions with the authors, it seems that the evaluation benchmarks were on embarrassingly parallel programs with no library dependencies, so there are many questions left to answer about the pragmatics involved. Perhaps another interesting paper in this vein is Deterministic Parallel Java which takes a type specification based approach. A question arises of software engineering: when writing a maintainable parallel programs with potential algorithmic interference, which invariants should we specify? If just basic task boundaries, OoOJ is almost like program analysis (instead of type inference) for DPJ; if non-interference guarantees, we start to get a very different picture. |
Browse archivesActive forum topics |
Recent comments
22 weeks 4 days ago
22 weeks 4 days ago
22 weeks 4 days ago
44 weeks 5 days ago
49 weeks 18 hours ago
50 weeks 4 days ago
50 weeks 4 days ago
1 year 1 week ago
1 year 5 weeks ago
1 year 5 weeks ago