Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Michal Kapalka is active.

Publication


Featured researches published by Michal Kapalka.


acm sigplan symposium on principles and practice of parallel programming | 2008

On the correctness of transactional memory

Rachid Guerraoui; Michal Kapalka

Transactional memory (TM) is perceived as an appealing alternative to critical sections for general purpose concurrent programming. Despite the large amount of recent work on TM implementations, however, very little effort has been devoted to precisely defining what guarantees these implementations should provide. A formal description of such guarantees is necessary in order to check the correctness of TM systems, as well as to establish TM optimality results and inherent trade-offs. This paper presents opacity, a candidate correctness criterion for TM implementations. We define opacity as a property of concurrent transaction histories and give its graph theoretical interpretation. Opacity captures precisely the correctness requirements that have been intuitively described by many TM designers. Most TM systems we know of do ensure opacity. At a very first approximation, opacity can be viewed as an extension of the classical database serializability property with the additional requirement that even non-committed transactions are prevented from accessing inconsistent states. Capturing this requirement precisely, in the context of general objects, and without precluding pragmatic strategies that are often used by modern TM implementations, such as versioning, invisible reads, lazy updates, and open nesting, is not trivial. As a use case of opacity, we prove the first lower bound on the complexity of TM implementations. Basically, we show that every single-version TM system that uses invisible reads and does not abort non-conflicting transactions requires, in the worst case, ?(k) steps for an operation to terminate, where k is the total number of objects shared by transactions. This (tight) bound precisely captures an inherent trade-off in the design of TM systems. The bound also highlights a fundamental gap between systems in which transactions can be fully isolated from the outside environment, e.g., databases or certain specialized transactional languages, and systems that lack such isolation capabilities, e.g., general TM frameworks.


european conference on computer systems | 2007

STMBench7: a benchmark for software transactional memory

Rachid Guerraoui; Michal Kapalka; Jan Vitek

Software transactional memory (STM) is a promising technique for controlling concurrency in modern multi-processor architectures. STM aims to be more scalable than explicit coarse-grained locking and easier to use than fine-grained locking. However, STM implementations have yet to demonstrate that their runtime overheads are acceptable. To date, empiric evaluations of these implementations have suffered from the lack of realistic benchmarks. Measuring performance of an STM in an overly simplified setting can be at best uninformative and at worst misleading as it may steer researchers to try to optimize irrelevant aspects of their implementations. This paper presents STMBench7: a candidate benchmark for evaluating STM implementations. The underlying data structure consists of a set of graphs and indexes intended to be suggestive of many complex applications, e.g., CAD/CAM. A collection of operations is supported to model a wide range of workloads and concurrency patterns. Companion locking strategies serve as a baseline for STM performance comparisons. STMBench7 strives for simplicity. Users may choose a workload, number of threads, benchmark length, as well as the possibility of structure modification and the nature of traversals of shared data structures. We illustrate the use of STMBench7 with an evaluation of a well-known software transactional memory implementation.


programming language design and implementation | 2009

Stretching transactional memory

Aleksandar Dragojevic; Rachid Guerraoui; Michal Kapalka

Transactional memory (TM) is an appealing abstraction for programming multi-core systems. Potential target applications for TM, such as business software and video games, are likely to involve complex data structures and large transactions, requiring specific software solutions (STM). So far, however, STMs have been mainly evaluated and optimized for smaller scale benchmarks. We revisit the main STM design choices from the perspective of complex workloads and propose a new STM, which we call SwissTM. In short, SwissTM is lock- and word-based and uses (1) optimistic (commit-time) conflict detection for read/write conflicts and pessimistic (encounter-time) conflict detection for write/write conflicts, as well as (2) a new two-phase contention manager that ensures the progress of long transactions while inducing no overhead on short ones. SwissTM outperforms state-of-the-art STM implementations, namely RSTM, TL2, and TinySTM, in our experiments on STMBench7, STAMP, Lee-TM and red-black tree benchmarks. Beyond SwissTM, we present the most complete evaluation to date of the individual impact of various STM design choices on the ability to support the mixed workloads of large applications.


symposium on principles of programming languages | 2009

The semantics of progress in lock-based transactional memory

Rachid Guerraoui; Michal Kapalka

Transactional memory (TM) is a promising paradigm for concurrent programming. Whereas the number of TM implementations is growing, however, little research has been conducted to precisely define TM semantics, especially their progress guarantees. This paper is the first to formally define the progress semantics of lockbased TMs, which are considered the most effective in practice. We use our semantics to reduce the problems of reasoning about the correctness and computability power of lock-based TMs to those of simple try-lock objects. More specifically, we prove that checking the progress of any set of transactions accessing an arbitrarily large set of shared variables can be reduced to verifying a simple property of each individual (logical) try-lock used by those transactions. We use this theorem to determine the correctness of state-of-the-art lock-based TMs and highlight various configuration ambiguities. We also prove that lock-based TMs have consensus number 2. This means that, on the one hand, a lock-based TM cannot be implemented using only read-write memory, but, on the other hand, it does not need very powerful instructions such as the commonly used compare-and-swap. We finally use our semantics to formally capture an inherent trade-off in the performance of lock-based TM implementations. Namely, we show that the space complexity of every lock-based software TM implementation that uses invisible reads is at least exponential in the number of objects accessible to transactions.


Distributed Computing | 2008

The weakest failure detectors to boost obstruction-freedom

Rachid Guerraoui; Michal Kapalka; Petr Kouznetsov

It is considered good practice in concurrent computing to devise shared object implementations that ensure a minimal obstruction-free progress property and delegate the task of boosting liveness to independent generic oracles called contention managers. This paper determines necessary and sufficient conditions to implement wait-free and non-blocking contention managers, i.e., contention managers that ensure wait-freedom (resp. non-blockingness) of any associated obstruction-free object implementation. The necessary conditions hold even when universal objects (like compare-and-swap) or random oracles are available in the implementation of the contention manager. On the other hand, the sufficient conditions assume only basic read/write objects, i.e., registers. We show that failure detector


principles of distributed computing | 2012

On the liveness of transactional memory

Victor Bushkov; Rachid Guerraoui; Michal Kapalka


acm sigplan symposium on principles and practice of parallel programming | 2010

Leveraging parallel nesting in transactional memory

João Pedro Barreto; Aleksandar Dragojevic; Paulo Ferreira; Rachid Guerraoui; Michal Kapalka

\lozenge{\fancyscript{P}}


acm symposium on parallel algorithms and architectures | 2010

Transactions in the jungle

Rachid Guerraoui; Thomas A. Henzinger; Michal Kapalka; Vasu Singh


computer aided verification | 2009

Transactional Memory: Glimmer of a Theory

Rachid Guerraoui; Michal Kapalka

is the weakest to convert any obstruction-free algorithm into a wait-free one, and Ω*, a new failure detector which we introduce in this paper, and which is strictly weaker than


conference on object oriented programming systems languages and applications | 2005

Robust Contention Management in Software Transactional Memory

Rachid Guerraoui; Maurice Herlihy; Michal Kapalka; Bastian Pochon

Collaboration


Dive into the Michal Kapalka's collaboration.

Top Co-Authors

Avatar

Rachid Guerraoui

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Aleksandar Dragojevic

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Petr Kouznetsov

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Bastian Pochon

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Vasu Singh

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Victor Bushkov

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Thomas A. Henzinger

Institute of Science and Technology Austria

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Paulo Ferreira

Instituto Superior Técnico

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge