EDBT 2026 Demo / reviewers in the wild / expert
Christoph von Praun
dblp:27/3880
· DBLP profile ↗
17ranked-venue papers
5as first author
0since 2021 · last 2012
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 13 · 3 first-authorSoftware engineering, systems software and programming languages · 4 · 3 first-authorDatabases, data management, data science and information retrieval · 1
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
7 papers |
Concurrent programming · 50% Programming languages and type systems · 29% Compilers and program optimization · 13% | |
| Computer architecture, parallel and distributed computing, and storage systems
7 papers |
Parallel and multicore computing · 77% Distributed systems · 11% Memory systems · 10% |
Topics — the 30 heaviest of 40, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Parallel and multicore computing
speculative parallelization |
0.2 | 2 | 2008 | Modeling optimistic concurrency using quantitative dependence analysis · PPoPP 2008 Implicit parallelism with ordered transactions · PPoPP 2007 |
Parallel and multicore computing
parallel programming models |
0.2 | 3 | 2008 | Implicit parallelism with ordered transactions · PPoPP 2007 X10: an object-oriented approach to non-uniform cluster computing · OOPSLA 2005 Modeling optimistic concurrency using quantitative dependence analysis · PPoPP 2008 |
Concurrent programming
synchronization |
0.1 | 2 | 2007 | Colorama: Architectural Support for Data-Centric Synchronization · HPCA 2007 Potential show-stoppers for transactional synchronization · PPoPP 2007 |
Distributed systems › concurrency control
optimistic concurrency control |
0.1 | 1 | 2008 | Modeling optimistic concurrency using quantitative dependence analysis · PPoPP 2008 |
Programming languages and type systems › language design
concurrent language design |
0.1 | 1 | 2007 | X10: concurrent programming for modern architectures · PPoPP 2007 |
Programming languages and type systems › concurrent programming languages
concurrent object-oriented programming |
0.1 | 1 | 2007 | X10: concurrent programming for modern architectures · PPoPP 2007 |
Concurrent programming › synchronization
data-centric synchronization |
0.1 | 1 | 2007 | Colorama: Architectural Support for Data-Centric Synchronization · HPCA 2007 |
Programming languages and type systems
language design |
0.1 | 1 | 2007 | X10: concurrent programming for modern architectures · PPoPP 2007 |
Programming languages and type systems
language semantics |
0.1 | 1 | 2007 | A theory of memory models · PPoPP 2007 |
Concurrent programming
memory models |
0.1 | 1 | 2007 | A theory of memory models · PPoPP 2007 |
Concurrent programming
transactional memory |
0.1 | 1 | 2007 | Potential show-stoppers for transactional synchronization · PPoPP 2007 |
Concurrent programming › memory models
weak memory models |
0.1 | 1 | 2007 | A theory of memory models · PPoPP 2007 |
Parallel and multicore computing › parallelization strategies
implicit parallelism |
0.1 | 1 | 2007 | Implicit parallelism with ordered transactions · PPoPP 2007 |
Parallel and multicore computing
transactional memory |
0.1 | 1 | 2007 | Colorama: Architectural Support for Data-Centric Synchronization · HPCA 2007 |
Compilers and program optimization › memory optimization
data locality optimization |
0.1 | 1 | 2006 | Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006 |
Compilers and program optimization › loop transformation
tiling |
0.1 | 1 | 2006 | Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006 |
Parallel and multicore computing
data-parallel programming |
0.1 | 1 | 2006 | Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006 |
Memory systems
memory consistency |
0.1 | 1 | 2006 | Conditional Memory Ordering · ISCA 2006 |
Parallel and multicore computing › parallel computing
parallel programming languages |
0.1 | 1 | 2005 | X10: an object-oriented approach to non-uniform cluster computing · OOPSLA 2005 |
Parallel and multicore computing › parallel programming models › distributed memory programming models
partitioned global address space |
0.1 | 1 | 2005 | X10: an object-oriented approach to non-uniform cluster computing · OOPSLA 2005 |
Program analysis
static analysis |
0.1 | 2 | 2003 | Static conflict analysis for multi-threaded object-oriented programs · PLDI 2003 Object Race Detection · OOPSLA 2001 |
Database system architecture and tuning
scientific data management |
0.0 | 1 | 2003 | Scientific Data Repositories: Designing for a Moving Target · SIGMOD Conference 2003 |
Concurrent programming
concurrency bugs |
0.0 | 1 | 2001 | Object Race Detection · OOPSLA 2001 |
Concurrent programming › concurrency bug detection
data race detection |
0.0 | 1 | 2001 | Object Race Detection · OOPSLA 2001 |
Program analysis
dynamic analysis |
0.0 | 1 | 2001 | Object Race Detection · OOPSLA 2001 |
Concurrent programming › concurrency bug detection › data race detection
on-the-fly race detection |
0.0 | 1 | 2001 | Object Race Detection · OOPSLA 2001 |
Memory systems › memory access patterns
irregular memory access |
0.0 | 1 | 2008 | Modeling optimistic concurrency using quantitative dependence analysis · PPoPP 2008 |
Concurrent programming
parallel programming models |
0.0 | 1 | 2007 | Colorama: Architectural Support for Data-Centric Synchronization · HPCA 2007 |
Parallel and multicore computing › deterministic execution
deterministic parallelism |
0.0 | 1 | 2007 | Implicit parallelism with ordered transactions · PPoPP 2007 |
Parallel and multicore computing
synchronization |
0.0 | 1 | 2006 | Conditional Memory Ordering · ISCA 2006 |
Methods — techniques the papers use, named apart from their topics
hardware extension · 0.1critical section inference · 0.1array operation overloading · 0.1quantitative modeling · 0.1dependence analysis · 0.1transactional memory · 0.1mathematical framework · 0.1decomposition rule · 0.1annotation · 0.1atomic blocks · 0.1async/future/foreach constructs · 0.1tiered architecture · 0.0object use graph · 0.0metadata management · 0.0heap shape graph · 0.0object-level access tracking · 0.0inline instrumentation · 0.0escape analysis · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2012 | Optimization techniques for efficient HTA programs
Basilio B. Fraguela, Ganesh Bikshandi, María Jesús Garzarán, David A. Padua, Christoph von Praun |
Parallel Comput. | 6 |
| 2009 | Compiler and runtime techniques for software transactional memory optimizationabstractAbstract Software transactional memory (STM) systems are an attractive environment to evaluate optimistic concurrency. We describe our experience of supporting and optimizing an STM system at both the managed runtime and compiler levels. We describe the design policies of our STM system and the statistics collected by the runtime to identify performance bottlenecks and guide tuning decisions. We present an initial work on supporting automatic instrumentation of the STM primitives for C/C++ and Java programs in the IBM XL compiler and J9 Java virtual machine. We evaluate and discuss the performance of several transactional programs running on our system. Copyright © 2008 John Wiley & Sons, Ltd. Peng Wu 0001, Maged M. Michael, Christoph von Praun, Takuya Nakaike, Rajesh Bordawekar, Harold W. Cain, Calin Cascaval, Siddhartha Chatterjee, Stefanie Chiras, Mark F. Mergen, Michael F. Spear, Huayong Wang |
Concurr. Comput. Pract. Exp. | 3 |
| 2008 | Modeling optimistic concurrency using quantitative dependence analysisabstractThis work presents a quantitative approach to analyze parallelization opportunities in programs with irregular memory access where potential data dependencies mask available parallelism. The model captures data and causal dependencies among critical sections as algorithmic properties and quantifies them as a density computed over the number of executed instructions. The model abstracts from runtime aspects such as scheduling, the number of threads, and concurrency control used in a particular parallelization. Christoph von Praun, Rajesh Bordawekar, Calin Cascaval |
PPoPP | 1 |
| 2008 | RingSTM: scalable transactions with a single atomic instructionabstractExisting Software Transactional Memory (STM) designs attach metadata to ranges of shared memory; subsequent runtime instructions read and update this metadata in order to ensure that an in-flight transaction's reads and writes remain correct. The overhead of metadata manipulation and inspection is linear in the number of reads and writes performed by a transaction, and involves expensive read-modify-write instructions, resulting in substantial overheads. Michael F. Spear, Maged M. Michael, Christoph von Praun |
SPAA | 3 |
| 2007 | Colorama: Architectural Support for Data-Centric SynchronizationabstractWith the advent of ubiquitous multi-core architectures, a major challenge is to simplify parallel programming. One way to tame one of the main sources of programming complexity, namely synchronization, is transactional memory (TM). However, we argue that TM does not go far enough, since the programmer still needs nonlocal reasoning to decide where to place transactions in the code. A significant improvement to the art is data-centric synchronization (DCS), where the programmer uses local reasoning to assign synchronization constraints to data. Based on these, the system automatically infers critical sections and inserts synchronization operations. This paper proposes novel architectural support to make DCS feasible, and describes its programming model and interface. The proposal, called Colorama, needs only modest hardware extensions, supports general-purpose, pointer-based languages such as C/C++ and, in our opinion, can substantially simplify the task of writing new parallel programs Luis Ceze, Pablo Montesinos, Christoph von Praun, Josep Torrellas |
HPCA | 3 |
| 2007 | Potential show-stoppers for transactional synchronizationabstractNo abstract available. Ali-Reza Adl-Tabatabai, David Dice, Maurice Herlihy, Nir Shavit, Christoforos E. Kozyrakis, Christoph von Praun, Michael L. Scott |
PPoPP | 6 |
| 2007 | Implicit parallelism with ordered transactionsabstractImplicit Parallelism with Ordered Transactions (IPOT) is an extension of sequential or explicitly parallel programming models to support speculative parallelization. The key idea is to specify opportunities for parallelization in a sequential program using annotations similar to transactions. Unlike explicit parallelism, IPOT annotations do not require the absence of data dependence, since the parallelization relies on runtime support for speculative execution. IPOT as a parallel programming model is determinate, i.e., program semantics are independent of the thread scheduling. For optimization, non-determinism can be introduced selectively. Christoph von Praun, Luis Ceze, Calin Cascaval |
PPoPP | 1 |
| 2007 | A theory of memory modelsabstractA memory model for a concurrent imperative programming language specifies which writes to shared variables may be seen by reads performed by other threads. We present a simple mathematical framework for relaxed memory models for programming languages. To instantiate this framework for a specific language, the designer must choose the notion of atomic steps supported by the language (e.g. 32-bit reads and writes) and specify how a composite step may be broken into a sequence of atomic steps (the decomposition rule). This rule determines which sequence of intermediate writes (if any) are visible to concurrent reads by other threads. Different choices of the rule lead to models which permit a read to return any value if there is a concurrent write (race), or models which satisfy a "No Thin Air Read"property. The former is suitable for languages such as C++(programs with races have undefined behavior), and the latter for Java. Other intermediate models are possible, useful and interesting. Vijay A. Saraswat, Radha Jagadeesan, Maged M. Michael, Christoph von Praun |
PPoPP | 4 |
| 2007 | X10: concurrent programming for modern architecturesabstractTwo major trends are converging to reshape the landscape of concurrent object-oriented programming languages. First, trends in modern architectures (multi-core, accelerators, high performance clusters such as Blue Gene) are making concurrency and distribution inescapable for large classes of OO programmers. Second, experience with first-generation concurrent OO languages (e.g. Java threads and synchronization) have revealed several drawbacks of unstructured threads with lock-based synchronization. Vijay A. Saraswat, Vivek Sarkar, Christoph von Praun |
PPoPP | 3 |
| 2006 | Hierarchically tiled arrays for parallelism and localityabstractParallel programming is facilitated by constructs which, unlike the widely used SPMD paradigm, provide programmers with a global view of the code and data structures. These constructs could be compiler directives containing information about data and task distribution, language extensions specifically designed for parallel computation, or classes that encapsulate parallelism. In this paper, we describe a class developed at Illinois and its Matlab implementation. This class can be used to conveniently express both parallelism and locality. A C++ implementation is now underway. Its characteristics will be reported in a future paper. We have implemented most of the NAS benchmarks using our HTA Matlab extensions and found during that HTAs enable the fast prototyping of parallel algorithms and produce programs that are easy to understand and maintain. Ganesh Bikshandi, Daniel Hoeflinger, Gheorghe Almási 0001, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua, Christoph von Praun |
IPDPS | 8 |
| 2006 | On the effectiveness of speculative and selective memory fencesabstractMemory fences inhibit the reordering of memory accesses in modern microprocessors; fences are useful to implement synchronization and strong shared memory semantics in multi-threaded programs. A naive implementation of memory fences can result in a significant performance penalty for processors with deep pipelines supporting multiple concurrent memory accesses. The paper compares three techniques to reduce the impact of memory fences: (1) Read-speculation allows reads that follow a fence to be issued while the fence is being processed; (2) Write-ahead additionally allows writes following a fence to proceed early; (3) Selective fences distinguish between memory accesses to thread-local and shared memory and enforce ordering only among accesses to shared memory. We evaluate and compare the effectiveness of these techniques with a simulator derived from the Pentium 4 architecture. We report data for a storage model that uses memory fences to enforce the memory semantics at monitor boundaries. Oliver Trachsel, Christoph von Praun, Thomas R. Gross |
IPDPS | 2 |
| 2006 | Conditional Memory OrderingabstractConventional relaxed memory ordering techniques follow a proactive model: at a synchronization point, a processor makes its own updates to memory available to other processors by executing a memory barrier instruction, ensuring that recent writes have been ordered with respect to other processors in the system. We show that this model leads to superfluous memory barriers in programs with acquire-release style synchronization, and present a combined hardware/software synchronization mechanism called conditional memory ordering (CMO) that reduces memory ordering overhead. CMO is demonstrated on a lock algorithm that identifies those dynamic lock/unlock operations for which memory ordering is unnecessary, and speculatively omits the associated memory ordering instructions. When ordering is required, this algorithm relies on a hardware mechanism for initiating a memory ordering operation on another processor. Based on evaluation using a software-only CMO prototype, we show that CMO avoids memory ordering operations for the vast majority of dynamic acquire and release operations across a set of multithreaded Java workloads, leading to significant speedups for many. However, performance improvements in the software prototype are hindered by the high cost of remote memory ordering. Using empirical data, we construct an analytical model demonstrating the benefits of a combined hardware-software implementation Christoph von Praun, Harold W. Cain, Jong-Deok Choi, Kyung Dong Ryu |
ISCA | 1 |
| 2006 | Programming for parallelism and locality with hierarchically tiled arraysabstractTiling has proven to be an effective mechanism to develop high performance implementations of algorithms. Tiling can be used to organize computations so that communication costs in parallel programs are reduced and locality in sequential codes or sequential components of parallel programs is enhanced.In this paper, a data type - Hierarchically Tiled Arrays or HTAs - that facilitates the direct manipulation of tiles is introduced. HTA operations are overloaded array operations. We argue that the implementation of HTAs in sequential OO languages transforms these languages into powerful tools for the development of high-performance parallel codes and codes with high degree of locality. To support this claim, we discuss our experiences with the implementation of HTAs for MATLAB and C++ and the rewriting of the NAS benchmarks and a few other programs into HTA-based parallel form. Ganesh Bikshandi, Daniel Hoeflinger, Gheorghe Almási 0001, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua, Christoph von Praun |
PPoPP | 8 |
| 2005 | X10: an object-oriented approach to non-uniform cluster computingabstractIt is now well established that the device scaling predicted by Moore's Law is no longer a viable option for increasing the clock frequency of future uniprocessor systems at the rate that had been sustained during the last two decades. As a result, future systems are rapidly moving from uniprocessor to multiprocessor configurations, so as to use parallelism instead of frequency scaling as the foundation for increased compute capacity. The dominant emerging multiprocessor structure for the future is a Non-Uniform Cluster Computing (NUCC) system with nodes that are built out of multi-core SMP chips with non-uniform memory hierarchies, and interconnected in horizontally scalable cluster configurations such as blade servers. Unlike previous generations of hardware evolution, this shift will have a major impact on existing software. Current OO language facilities for concurrent and distributed programming are inadequate for addressing the needs of NUCC systems because they do not support the notions of non-uniform data access within a node, or of tight coupling of distributed nodes.We have designed a modern object-oriented programming language, X10, for high performance, high productivity programming of NUCC systems. A member of the partitioned global address space family of languages, X10 highlights the explicit reification of locality in the form of places}; lightweight activities embodied in async, future, foreach, and ateach constructs; a construct for termination detection (finish); the use of lock-free synchronization (atomic blocks); and the manipulation of cluster-wide global data structures. We present an overview of the X10 programming model and language, experience with our reference implementation, and results from some initial productivity comparisons between the X10 and Java™ languages. Philippe Charles, Christian Grothoff, Vijay A. Saraswat, Christopher Donawa, Allan Kielstra, Kemal Ebcioglu, Christoph von Praun, Vivek Sarkar |
OOPSLA | 7 |
| 2003 | Static conflict analysis for multi-threaded object-oriented programsabstractA compiler for multi-threaded object-oriented programs needs information about the sharing of objects for a variety of reasons: to implement optimizations, to issue warnings, to add instrumentation to detect access violations that occur at runtime. An Object Use Graph (OUG) statically captures accesses from different threads to objects. An OUG extends the Heap Shape Graph (HSG), which is a compile-time abstraction for runtime objects (nodes) and their reference relations (edges). An OUG specifies for a specific node in the HSG a partial order of events relevant to the corresponding runtime object(s). Relevant events include read and write access, object escape, thread start and join.OUGs have been implemented in a Java compiler. Initial experience shows that OUGs are effective to identify object accesses that potentially conflict at runtime and isolate accesses that never cause a problem at runtime. The capabilities of OUGs are compared with an advanced program analysis that has been used for lock elimination. For the set of benchmarks investigated here, OUGs report only a fraction of shared objects as conflicting and reduce the number of compile-time reports in terms of allocation sites of conflicting objects by 28--92% (average 64%). For benchmarks of up to 30 KLOC, the time taken to construct OUGs is, with one exception, in the order of seconds.The information collected in the OUG has been used to instrument Java programs with checks for object races. OUGs provide precise information about object sharing and static protection, so runtime instrumentation that checks those cases that cannot be disambiguated at compile-time is sparse, and the total runtime overhead of checking for object races is only 3--86% (average 47%). Christoph von Praun, Thomas R. Gross |
PLDI | 1 |
| 2003 | Scientific Data Repositories: Designing for a Moving TargetabstractManaging scientific data warehouses requires constant adaptations to cope with changes in processing algorithms, computing environments, database schemas, and usage patterns. We have faced this challenge in the RHESSI Experimental Data Center (HEDC), a datacenter for the RHESSI NASA spacecraft. In this paper we describe our experience in developing HEDC and discuss in detail the design choices made. To successfully accommodate typical adaptations encountered in scientific data management systems, HEDC (i) clearly separates generic from domain specific code in all tiers, (ii) uses a file system for the actual data in combination with a DBMS to manage the corresponding meta data, and (iii) revolves around a middle tier designed to scale if more browsing or processing power is required. These design choices are valuable contributions as they address common concerns in a wide range of scientific data management systems. Etzard Stolte, Christoph von Praun, Gustavo Alonso, Thomas R. Gross |
SIGMOD Conference | 2 |
| 2001 | Object Race DetectionabstractWe present an on-the-fly mechanism that detects access conflicts in executions of multi-threaded Java programs. Access conflicts are a conservative approximation of data races. The checker tracks access information at the level of objects (object races) rather than at the level of individual variables. This viewpoint allows the checker to exploit specific properties of object-oriented programs for optimization by restricting dynamic checks to those objects that are identified by escape analysis as potentially shared. The checker has been implemented in collaboration with an "ahead-of-time"Java compiler. The combination fo static program analysis (escape-analysis) and inline instrumentation during code generation allows us to reduce the runtime overhead of detecting access conflicts. This overhead amounts to about 16-129% in time and less than 25% in space for typical benchmark applications and compares favorably to previously published on-the-fly mechanism that incurred an overhead of about a factor of 2-80 in time and up to a factor of 2 in space. Christoph von Praun, Thomas R. Gross |
OOPSLA | 1 |