Guy Steele's presentation expresses his idea that it is not the programmer's job to think about parallelism; instead, a new approach is required to build programming languages that would provide ways to run tasks in parallel and support algorithms built on independence and build-and-conquer principles rather than on linear decomposition of problems.
This paper discusses two technologies of thread programming in relation to multi-core technology – MPI and OpenMP. The author explains the differences between them, the underlying principle of each technology and compares performance results obtained in programs written with MPI and OpenMP. He also touches upon a hybrid approach to multi-core programming when both MPI and OpenMP are used. The paper is written very clearly and is supplied with illustrative schemes, screenshots and tables.
Irregular algorithms require using task pools but there is an issue of busy waiting that occurs at this point that wastes the computing resources and has no solution in OpenMP. Michael Suess and Claudia Leopold consider the task pool variants that can be implemented in OpenMP and compare their performance results. They also propose possible ways of enhancing the OpenMP specification to solve the problem of busy waiting.
Written in a very clear and lively language, this paper touches upon the concepts of multithreaded programming and includes several sections describing various approaches and aspects related to this technology: multitasking, multithreaded programming basics, thread management, synchronization, strategies, as well as task parallelism, data parallelism, pipelining, tools and libraries for multithreading, graphical programming and debugging tools. In other words, the paper covers the most important points of multithreaded programming and will be helpful for any developer in mastering it.
OpenMP is very convenient when working with multithreading but it has its own weak points. The authors of the article describe some of them sharing their experience of using OpenMP in a program performing a standard sorting algorithm. There are two problems they have encountered: recursion and busy waiting. To solve each of them, the authors suggest several solutions whose performance is analyzed and compared then. Some suggestions on improving OpenMP specification are also made.
This Wiki-based resource is a database presenting a collection of various defects and errors in the sphere of high performance computing gathered by developers through practice. All the defects are arranged in several groups (for example, related to synchronization, memory management, etc). Programmers and developers are encouraged to provide feedback and enlarge the base with their knowledge about such defects.
Creating irregular parallel algorithms with OpenMP is challenging yet possible task and this paper demonstrates this by an example of an algorithm implementing a breadth-first search. The major problem that occurs here is the problem of lacking of thread cancellation support. The authors describe the mechanism of thread cancellation and offer a way to work around the stated problem and propose some changes to the OpenMP specification as well.
In this paper, the authors continue to investigate OpenMP drawbacks regarding C++ and offer nice solutions to improve it. This time it is the singleton pattern that serves as an example demonstrating OpenMP capabilities and weak points. The authors consider several methods of implementing a thread-safe singleton, analyze the problems encountered and offer possible workarounds and solutions. Performance tests are also provided for each method and then the best solution is given.
What parallel programming model will be 10 years from now? The author of article tries to find an answer and gives an overview of tendencies in the modern computer world quoting Microsoft chief researchers Burton Smith and Craig Mundie. Such topics are covered as development of parallel programming languages and improvement of processor chips.
This FAQ serves as a brief introduction to OpenMP technology and its usage on HPCVL Sunfire SMP computers. It provides detailed answers to the ten most frequently asked questions about the technology covering its working and implementation principles, examples of usage, etc. The answers give some useful links and references for more details.