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.

Christoph von Praun

dblp:27/3880 · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Parallel and multicore computing
speculative parallelization
0.222008
Modeling optimistic concurrency using quantitative dependence analysis · PPoPP 2008
Implicit parallelism with ordered transactions · PPoPP 2007
Parallel and multicore computing
parallel programming models
0.232008
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.122007
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.112008
Modeling optimistic concurrency using quantitative dependence analysis · PPoPP 2008
Programming languages and type systems › language design
concurrent language design
0.112007
X10: concurrent programming for modern architectures · PPoPP 2007
Programming languages and type systems › concurrent programming languages
concurrent object-oriented programming
0.112007
X10: concurrent programming for modern architectures · PPoPP 2007
Concurrent programming › synchronization
data-centric synchronization
0.112007
Colorama: Architectural Support for Data-Centric Synchronization · HPCA 2007
Programming languages and type systems
language design
0.112007
X10: concurrent programming for modern architectures · PPoPP 2007
Programming languages and type systems
language semantics
0.112007
A theory of memory models · PPoPP 2007
Concurrent programming
memory models
0.112007
A theory of memory models · PPoPP 2007
Concurrent programming
transactional memory
0.112007
Potential show-stoppers for transactional synchronization · PPoPP 2007
Concurrent programming › memory models
weak memory models
0.112007
A theory of memory models · PPoPP 2007
Parallel and multicore computing › parallelization strategies
implicit parallelism
0.112007
Implicit parallelism with ordered transactions · PPoPP 2007
Parallel and multicore computing
transactional memory
0.112007
Colorama: Architectural Support for Data-Centric Synchronization · HPCA 2007
Compilers and program optimization › memory optimization
data locality optimization
0.112006
Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006
Compilers and program optimization › loop transformation
tiling
0.112006
Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006
Parallel and multicore computing
data-parallel programming
0.112006
Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006
Memory systems
memory consistency
0.112006
Conditional Memory Ordering · ISCA 2006
Parallel and multicore computing › parallel computing
parallel programming languages
0.112005
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.112005
X10: an object-oriented approach to non-uniform cluster computing · OOPSLA 2005
Program analysis
static analysis
0.122003
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.012003
Scientific Data Repositories: Designing for a Moving Target · SIGMOD Conference 2003
Concurrent programming
concurrency bugs
0.012001
Object Race Detection · OOPSLA 2001
Concurrent programming › concurrency bug detection
data race detection
0.012001
Object Race Detection · OOPSLA 2001
Program analysis
dynamic analysis
0.012001
Object Race Detection · OOPSLA 2001
Concurrent programming › concurrency bug detection › data race detection
on-the-fly race detection
0.012001
Object Race Detection · OOPSLA 2001
Memory systems › memory access patterns
irregular memory access
0.012008
Modeling optimistic concurrency using quantitative dependence analysis · PPoPP 2008
Concurrent programming
parallel programming models
0.012007
Colorama: Architectural Support for Data-Centric Synchronization · HPCA 2007
Parallel and multicore computing › deterministic execution
deterministic parallelism
0.012007
Implicit parallelism with ordered transactions · PPoPP 2007
Parallel and multicore computing
synchronization
0.012006
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
YearPublicationVenuePosition
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 optimization
abstract
Abstract 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 analysis
abstract
This 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
PPoPP1
2008 RingSTM: scalable transactions with a single atomic instruction
abstract
Existing 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
SPAA3
2007 Colorama: Architectural Support for Data-Centric Synchronization
abstract
With 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
HPCA3
2007 Potential show-stoppers for transactional synchronization
abstract
No abstract available.
Ali-Reza Adl-Tabatabai, David Dice, Maurice Herlihy, Nir Shavit, Christoforos E. Kozyrakis, Christoph von Praun, Michael L. Scott
PPoPP6
2007 Implicit parallelism with ordered transactions
abstract
Implicit 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
PPoPP1
2007 A theory of memory models
abstract
A 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
PPoPP4
2007 X10: concurrent programming for modern architectures
abstract
Two 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
PPoPP3
2006 Hierarchically tiled arrays for parallelism and locality
abstract
Parallel 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
IPDPS8
2006 On the effectiveness of speculative and selective memory fences
abstract
Memory 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
IPDPS2
2006 Conditional Memory Ordering
abstract
Conventional 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
ISCA1
2006 Programming for parallelism and locality with hierarchically tiled arrays
abstract
Tiling 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
PPoPP8
2005 X10: an object-oriented approach to non-uniform cluster computing
abstract
It 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
OOPSLA7
2003 Static conflict analysis for multi-threaded object-oriented programs
abstract
A 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
PLDI1
2003 Scientific Data Repositories: Designing for a Moving Target
abstract
Managing 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 Conference2
2001 Object Race Detection
abstract
We 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
OOPSLA1