14,274 research outputs found
Lock-free Concurrent Data Structures
Concurrent data structures are the data sharing side of parallel programming.
Data structures give the means to the program to store data, but also provide
operations to the program to access and manipulate these data. These operations
are implemented through algorithms that have to be efficient. In the sequential
setting, data structures are crucially important for the performance of the
respective computation. In the parallel programming setting, their importance
becomes more crucial because of the increased use of data and resource sharing
for utilizing parallelism.
The first and main goal of this chapter is to provide a sufficient background
and intuition to help the interested reader to navigate in the complex research
area of lock-free data structures. The second goal is to offer the programmer
familiarity to the subject that will allow her to use truly concurrent methods.Comment: To appear in "Programming Multi-core and Many-core Computing
Systems", eds. S. Pllana and F. Xhafa, Wiley Series on Parallel and
Distributed Computin
Exploring Subexponential Parameterized Complexity of Completion Problems
Let be a family of graphs. In the -Completion problem,
we are given a graph and an integer as input, and asked whether at most
edges can be added to so that the resulting graph does not contain a
graph from as an induced subgraph. It appeared recently that special
cases of -Completion, the problem of completing into a chordal graph
known as Minimum Fill-in, corresponding to the case of , and the problem of completing into a split graph,
i.e., the case of , are solvable in parameterized
subexponential time . The exploration of this
phenomenon is the main motivation for our research on -Completion.
In this paper we prove that completions into several well studied classes of
graphs without long induced cycles also admit parameterized subexponential time
algorithms by showing that:
- The problem Trivially Perfect Completion is solvable in parameterized
subexponential time , that is -Completion for , a cycle and a path on four
vertices.
- The problems known in the literature as Pseudosplit Completion, the case
where , and Threshold Completion, where , are also solvable in time .
We complement our algorithms for -Completion with the following
lower bounds:
- For , , , and
, -Completion cannot be solved in time
unless the Exponential Time Hypothesis (ETH) fails.
Our upper and lower bounds provide a complete picture of the subexponential
parameterized complexity of -Completion problems for .Comment: 32 pages, 16 figures, A preliminary version of this paper appeared in
the proceedings of STACS'1
A formally verified compiler back-end
This article describes the development and formal verification (proof of
semantic preservation) of a compiler back-end from Cminor (a simple imperative
intermediate language) to PowerPC assembly code, using the Coq proof assistant
both for programming the compiler and for proving its correctness. Such a
verified compiler is useful in the context of formal methods applied to the
certification of critical software: the verification of the compiler guarantees
that the safety properties proved on the source code hold for the executable
compiled code as well
An Algebraic Framework for Compositional Program Analysis
The purpose of a program analysis is to compute an abstract meaning for a
program which approximates its dynamic behaviour. A compositional program
analysis accomplishes this task with a divide-and-conquer strategy: the meaning
of a program is computed by dividing it into sub-programs, computing their
meaning, and then combining the results. Compositional program analyses are
desirable because they can yield scalable (and easily parallelizable) program
analyses.
This paper presents algebraic framework for designing, implementing, and
proving the correctness of compositional program analyses. A program analysis
in our framework defined by an algebraic structure equipped with sequencing,
choice, and iteration operations. From the analysis design perspective, a
particularly interesting consequence of this is that the meaning of a loop is
computed by applying the iteration operator to the loop body. This style of
compositional loop analysis can yield interesting ways of computing loop
invariants that cannot be defined iteratively. We identify a class of
algorithms, the so-called path-expression algorithms [Tarjan1981,Scholz2007],
which can be used to efficiently implement analyses in our framework. Lastly,
we develop a theory for proving the correctness of an analysis by establishing
an approximation relationship between an algebra defining a concrete semantics
and an algebra defining an analysis.Comment: 15 page
- …