
A task parallel implementation of a scattered node stencil-based solver for the shallow water equations
Predicting the Cost of Lock Contention in Parallel Applications on Multicores using Analytic Modeling
Modern computer architectures, with multicore CPUs and GPUs or other accelerators, make stronger demands than ever on writers of scientific code. As a rule of thumb, the fastest, most efficient program consists of labor-intensive code written by expert programmers for a certain application on a particular computer. This thesis deals with several algorithmic and technical approaches towards effectively satisfying the demand for high-performance parallel programming without incurring such a high cost in expert programmer time. Effective programming is accomplished by writing performance-portable code where performance-critical functionality is provided either by external software or at least a balance between maintainability/generality and efficiency.
This paper addresses the problem of automatically verifying correctness of concurrent algorithms, e.g., as found inconcurrent implementations of common data structures, using model checking. In order to use a model checker to analyze programs in, e.g., C, one must first translate programs to the input language of the model checker. Since our aim is to use SPIN, we present an automated translation from a subset of C to Promela. This translation is able to handle features not covered by previous such translations, notable pointer structures and function calls. We illustrate the application of our translation to a concurrent queue algorithm by Michael and Scott.