Marek Olszewski

dblp:84/5149 · DBLP profile ↗
← Back
9ranked-venue papers
4as 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 · 8 · 4 first-authorSoftware engineering, systems software and programming languages · 4 · 2 first-author

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
4 papers
Concurrent programming · 37% Program analysis · 24% Programming languages and type systems · 10%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Parallel and multicore computing · 63% Processor architecture and microarchitecture · 22% High-performance computing · 15%

Topics — the 13 heaviest of 14, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming › concurrency bug detection
data race detection
0.112012
Aikido: accelerating shared data dynamic analyses · ASPLOS 2012
Program analysis
dynamic analysis
0.112012
Aikido: accelerating shared data dynamic analyses · ASPLOS 2012
Compilers and program optimization
autotuning
0.112009
PetaBricks: a language and compiler for algorithmic choice · PLDI 2009
Concurrent programming
determinism
0.112009
Kendo: efficient deterministic multithreading in software · ASPLOS 2009
Concurrent programming › deterministic execution
deterministic multithreading
0.112009
Kendo: efficient deterministic multithreading in software · ASPLOS 2009
Programming languages and type systems
language design
0.112009
PetaBricks: a language and compiler for algorithmic choice · PLDI 2009
Parallel and multicore computing › deterministic execution
deterministic multithreading
0.112009
Kendo: efficient deterministic multithreading in software · ASPLOS 2009
Program analysis › dynamic analysis
dynamic instrumentation
0.112007
JIT instrumentation: a novel approach to dynamically instrument operating systems · EuroSys 2007
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.112007
JIT instrumentation: a novel approach to dynamically instrument operating systems · EuroSys 2007
Operating systems
kernel instrumentation
0.112007
JIT instrumentation: a novel approach to dynamically instrument operating systems · EuroSys 2007
Processor architecture and microarchitecture › chip multiprocessor
shared-memory multicore
0.012012
Aikido: accelerating shared data dynamic analyses · ASPLOS 2012
Parallel and multicore computing
parallel programming models
0.012009
Kendo: efficient deterministic multithreading in software · ASPLOS 2009
High-performance computing › performance engineering
performance portability
0.012009
PetaBricks: a language and compiler for algorithmic choice · PLDI 2009

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

vector clocks · 0.3hardware protection mechanisms · 0.3dynamic binary rewriting · 0.3probe-based instrumentation · 0.1just-in-time compilation · 0.1
YearPublicationVenuePosition
2012 Aikido: accelerating shared data dynamic analyses
abstract
Despite a burgeoning demand for parallel programs, the tools available to developers working on shared-memory multicore processors have lagged behind. One reason for this is the lack of hardware support for inspecting the complex behavior of these parallel programs. Inter-thread communication, which must be instrumented for many types of analyses, may occur with any memory operation. To detect such thread communication in software, many existing tools require the instrumentation of all memory operations, which leads to significant performance overheads. To reduce this overhead, some existing tools resort to random sampling of memory operations, which introduces false negatives. Unfortunately, neither of these approaches provide the speed and accuracy programmers have traditionally expected from their tools. In this work, we present Aikido, a new system and framework that enables the development of efficient and transparent analyses that operate on shared data. Aikido uses a hybrid of existing hardware features and dynamic binary rewriting to detect thread communication with low overhead. Aikido runs a custom hypervisor below the operating system, which exposes per-thread hardware protection mechanisms not available in any widely used operating system. This hybrid approach allows us to benefit from the low cost of detecting memory accesses with hardware, while maintaining the word-level accuracy of a software-only approach. To evaluate our framework, we have implemented an Aikido-enabled vector clock race detector. Our results show that the Aikido enabled race-detector outperforms existing techniques that provide similar accuracy by up to 6.0x, and 76% on average, on the PARSEC benchmark suite.
Marek Olszewski, David Koh, Jason Ansel, Saman P. Amarasinghe
ASPLOS1
2012 Siblingrivalry: online autotuning through local competitions
abstract
Modern high performance libraries, such as ATLAS and FFTW, and programming languages, such as PetaBricks, have shown that autotuning computer programs can lead to significant speedups. However, autotuning can be burdensome to the deployment of a program, since the tuning process can take a long time and should be re-run whenever the program, microarchitecture, execution environment, or tool chain changes. Failure to re-autotune programs often leads to widespread use of sub-optimal algorithms. With the growth of cloud computing, where computations can run in environments with unknown load and migrate between different (possibly unknown) microarchitectures, the need for online autotuning has become increasingly important.
Jason Ansel, Maciej Pacula, Yee Lok Wong, Cy P. Chan, Marek Olszewski, Una-May O'Reilly, Saman P. Amarasinghe
CASES5
2011 Language and compiler support for auto-tuning variable-accuracy algorithms
abstract
Approximating ideal program outputs is a common technique for solving computationally difficult problems, for adhering to processing or timing constraints, and for performance optimization in situations where perfect precision is not necessary. To this end, programmers often use approximation algorithms, iterative methods, data resampling, and other heuristics. However, programming such variable accuracy algorithms presents difficult challenges since the optimal algorithms and parameters may change with different accuracy requirements and usage environments. This problem is further compounded when multiple variable accuracy algorithms are nested together due to the complex way that accuracy requirements can propagate across algorithms and because of the size of the set of allowable compositions. As a result, programmers often deal with this issue in an ad-hoc manner that can sometimes violate sound programming practices such as maintaining library abstractions. In this paper, we propose language extensions that expose trade-offs between time and accuracy to the compiler. The compiler performs fully automatic compile-time and installtime autotuning and analyses in order to construct optimized algorithms to achieve any given target accuracy. We present novel compiler techniques and a structured genetic tuning algorithm to search the space of candidate algorithms and accuracies in the presence of recursion and sub-calls to other variable accuracy code. These techniques benefit both the library writer, by providing an easy way to describe and search the parameter and algorithmic choice space, and the library user, by allowing high level specification of accuracy requirements which are then met automatically without the need for the user to understand any algorithm-specific parameters. Additionally, we present a new suite of benchmarks, written in our language, to examine the efficacy of our techniques. Our experimental results show that by relaxing accuracy requirements, we can easily obtain performance improvements ranging from 1.1× to orders of magnitude of speedup.
Jason Ansel, Yee Lok Wong, Cy P. Chan, Marek Olszewski, Alan Edelman, Saman P. Amarasinghe
CGO4
2010 Simplifying concurrent algorithms by exploiting hardware transactional memory
abstract
We explore the potential of hardware transactional memory (HTM) to improve concurrent algorithms. We illustrate a number of use cases in which HTM enables significantly simpler code to achieve similar or better performance than existing algorithms for conventional architectures. We use Sun's prototype multicore chip, code-named Rock, to experiment with these algorithms, and discuss ways in which its limitations prevent better results, or would prevent production use of algorithms even if they are successful. Our use cases include concurrent data structures such as double ended queues, work stealing queues and scalable non-zero indicators, as well as a scalable malloc implementation and a simulated annealing application. We believe that our paper makes a compelling case that HTM has substantial potential to make effective concurrent programming easier, and that we have made valuable contributions in guiding designers of future HTM features to exploit this potential.
David Dice, Yossi Lev, Virendra J. Marathe, Mark Moir, Daniel Nussbaum, Marek Olszewski
SPAA6
2009 Kendo: efficient deterministic multithreading in software
abstract
Although chip-multiprocessors have become the industry standard, developing parallel applications that target them remains a daunting task. Non-determinism, inherent in threaded applications, causes significant challenges for parallel programmers by hindering their ability to create parallel applications with repeatable results. As a consequence, parallel applications are significantly harder to debug, test, and maintain than sequential programs.
Marek Olszewski, Jason Ansel, Saman P. Amarasinghe
ASPLOS1
2009 PetaBricks: a language and compiler for algorithmic choice
abstract
It is often impossible to obtain a one-size-fits-all solution for high performance algorithms when considering different choices for data distributions, parallelism, transformations, and blocking. The best solution to these choices is often tightly coupled to different architectures, problem sizes, data, and available system resources. In some cases, completely different algorithms may provide the best performance. Current compiler and programming language techniques are able to change some of these parameters, but today there is no simple way for the programmer to express or the compiler to choose different algorithms to handle different parts of the data. Existing solutions normally can handle only coarse-grained, library level selections or hand coded cutoffs between base cases and recursive cases.
Jason Ansel, Cy P. Chan, Yee Lok Wong, Marek Olszewski, Alan Edelman, Saman P. Amarasinghe
PLDI4
2009 Scalable reader-writer locks
abstract
We present three new reader-writer lock algorithms that scale under high read-only contention. Many previous reader-writer locks suffer significant degradation when many readers attempt to acquire the lock concurrently, even though they are all allowed to hold the lock at the same time. In contrast, our locks scale almost perfectly when there is only read contention on a 4-chip system with a total of 256 hardware threads.
Yossi Lev, Victor Luchangco, Marek Olszewski
SPAA3
2007 JudoSTM: A Dynamic Binary-Rewriting Approach to Software Transactional Memory
Marek Olszewski, Jeremy Cutler, J. Gregory Steffan
PACT1
2007 JIT instrumentation: a novel approach to dynamically instrument operating systems
abstract
As modern operating systems become more complex, understanding their inner workings is increasingly difficult. Dynamic kernel instrumentation is a well established method of obtaining insight into the workings of an OS, with applications including debugging, profiling and monitoring, and security auditing. To date, all dynamic instrumentation systems for operating systems follow the probe-based instrumentation paradigm. While efficient on fixed-length instruction set architectures, probes are extremely expensive on variable-length ISAs such as the popular Intel x86 and AMD x86-64. We propose using just-in-time (JIT) instrumentation to overcome this problem. While common in user space, JIT instrumentation has not until now been attempted in kernel space. In this work, we show the feasibility and desirability of kernel-based JIT instrumentation for operating systems with our novel prototype, implemented as a Linux kernel module. The prototype is fully SMP capable. We evaluate our prototype against the popular Kprobes Linux instrumentation tool. Our prototype outperforms Kprobes, at both micro and macro levels, by orders of magnitude when applying medium- and fine-grained instrumentation.
Marek Olszewski, Keir Mierle, Adam Czajkowski, Angela Demke Brown
EuroSys1