Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Lun Liu 0002

dblp:36/3052-2 · DBLP profile ↗
← Back
3ranked-venue papers
3as first author
1since 2021 · last 2021
0000-0001-6550-8129ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 3 first-author · 1 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Concurrent programming · 72% Runtime systems and virtual machines · 25% Compilers and program optimization · 4%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Memory systems · 100%

Topics — the 8 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
memory models
0.822021
Safe-by-default Concurrency for Modern Programming Languages · ACM Trans. Program. Lang. Syst. 2021
A volatile-by-default JVM for server applications · Proc. ACM Program. Lang. 2017
Concurrent programming › memory models
sequential consistency
0.622021
Safe-by-default Concurrency for Modern Programming Languages · ACM Trans. Program. Lang. Syst. 2021
A volatile-by-default JVM for server applications · Proc. ACM Program. Lang. 2017
Concurrent programming
concurrency semantics
0.512021
Safe-by-default Concurrency for Modern Programming Languages · ACM Trans. Program. Lang. Syst. 2021
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.512021
Safe-by-default Concurrency for Modern Programming Languages · ACM Trans. Program. Lang. Syst. 2021
Concurrent programming › memory models
java memory model
0.422019
A volatile-by-default JVM for server applications · Proc. ACM Program. Lang. 2017
Accelerating sequential consistency for Java with speculative compilation · PLDI 2019
Memory systems › memory consistency
memory consistency model
0.412019
Accelerating sequential consistency for Java with speculative compilation · PLDI 2019
Memory systems › memory consistency › memory consistency model
sequential consistency
0.412019
Accelerating sequential consistency for Java with speculative compilation · PLDI 2019
Runtime systems and virtual machines › virtual machine implementation
java virtual machine
0.312017
A volatile-by-default JVM for server applications · Proc. ACM Program. Lang. 2017

Methods — techniques the papers use, named apart from their topics

speculative compilation · 0.8speculative enforcement · 0.5compiler optimization · 0.5volatile-by-default semantics · 0.3
YearPublicationVenuePosition
2021 Safe-by-default Concurrency for Modern Programming Languages
abstract
Modern “safe” programming languages follow a design principle that we call safety by default and performance by choice . By default, these languages enforce important programming abstractions, such as memory and type safety, but they also provide mechanisms that allow expert programmers to explicitly trade some safety guarantees for increased performance. However, these same languages have adopted the inverse design principle in their support for multithreading. By default, multithreaded programs violate important abstractions, such as program order and atomic access to individual memory locations to admit compiler and hardware optimizations that would otherwise need to be restricted. Not only does this approach conflict with the design philosophy of safe languages, but very little is known about the practical performance cost of providing a stronger default semantics. In this article, we propose a safe-by-default and performance-by-choice multithreading semantics for safe languages, which we call volatile -by-default . Under this semantics, programs have sequential consistency (SC) by default, which is the natural “interleaving” semantics of threads. However, the volatile -by-default design also includes annotations that allow expert programmers to avoid the associated overheads in performance-critical code. We describe the design, implementation, optimization, and evaluation of the volatile -by-default semantics for two different safe languages: Java and Julia. First, we present V BD-HotSpot and V BDA-HotSpot, modifications of Oracle’s HotSpot JVM that enforce the volatile -by-default semantics on Intel x86-64 hardware and ARM-v8 hardware. Second, we present S C-Julia, a modification to the just-in-time compiler within the standard Julia implementation that provides best-effort enforcement of the volatile -by-default semantics on x86-64 hardware for the purpose of performance evaluation. We also detail two different implementation techniques: a baseline approach that simply reuses existing mechanisms in the compilers for handling atomic accesses, and a speculative approach that avoids the overhead of enforcing the volatile -by-default semantics until there is the possibility of an SC violation. Our results show that the cost of enforcing SC is significant but arguably still acceptable for some use cases today. Further, we demonstrate that compiler optimizations as well as programmer annotations can reduce the overhead considerably.
Lun Liu 0002, Todd D. Millstein, Madan Musuvathi
ACM Trans. Program. Lang. Syst.1
2019 Accelerating sequential consistency for Java with speculative compilation
abstract
A memory consistency model (or simply a memory model) specifies the granularity and the order in which memory accesses by one thread become visible to other threads in the program. We previously proposed the volatile-by-default (VBD) memory model as a natural form of sequential consistency (SC) for Java. VBD is significantly stronger than the Java memory model (JMM) and incurs relatively modest overheads in a modified HotSpot JVM running on Intel x86 hardware. However, the x86 memory model is already quite close to SC. It is expected that the cost of VBD will be much higher on the other widely used hardware platform today, namely ARM, whose memory model is very weak.
Lun Liu 0002, Todd D. Millstein, Madan Musuvathi
PLDI1
2017 A volatile-by-default JVM for server applications
abstract
A *memory consistency model* (or simply *memory model*) defines the possible values that a shared-memory read may return in a multithreaded programming language. Choosing a memory model involves an inherent performance-programmability tradeoff. The Java language has adopted a *relaxed* (or *weak*) memory model that is designed to admit most traditional compiler optimizations and obviate the need for hardware fences on most shared-memory accesses. The downside, however, is that programmers are exposed to a complex and unintuitive semantics and must carefully declare certain variables as `volatile` in order to enforce program orderings that are necessary for proper behavior. This paper proposes a simpler and stronger memory model for Java through a conceptually small change: *every* variable has `volatile` semantics by default, but the language allows a programmer to tag certain variables, methods, or classes as `relaxed` and provides the current Java semantics for these portions of code. This *volatile-by-default* semantics provides *sequential consistency* (SC) for all programs by default. At the same time, expert programmers retain the freedom to build performance-critical libraries that violate the SC semantics. At the outset, it is unclear if the `volatile`-by-default semantics is practical for Java, given the cost of memory fences on today's hardware platforms. The core contribution of this paper is to demonstrate, through comprehensive empirical evaluation, that the `volatile`-by-default semantics is arguably acceptable for a predominant use case for Java today -- server-side applications running on Intel x86 architectures. We present VBD-HotSpot, a modification to Oracle's widely used HotSpot JVM that implements the `volatile`-by-default semantics for x86. To our knowledge VBD-HotSpot is the first implementation of SC for Java in the context of a modern JVM. VBD-HotSpot incurs an average overhead versus the baseline HotSpot JVM of 28% for the Da Capo benchmarks, which is significant though perhaps less than commonly assumed. Further, VBD-HotSpot incurs average overheads of 12% and 19% respectively on standard benchmark suites for big-data analytics and machine learning in the widely used Spark framework.
Lun Liu 0002, Todd D. Millstein, Madan Musuvathi
Proc. ACM Program. Lang.1