-
14.01.2011
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.
-
28.01.2010
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.
-
11.11.2009
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.
-
30.09.2009
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.
-
18.09.2009
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.
-
15.09.2009
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.
-
26.07.2009
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.
-
12.07.2009
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.
-
23.06.2009
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.
-
05.05.2009
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.
-
29.03.2009
In his article, Herb Sutter discusses the problem of concurrency becoming the next approaching revolution for software development, its causes, consequences and costs. A major part of the paper is devoted to analyzing the current state in the computer industry and explaining why sequential applications cannot benefit from the throughput gains any more and must yield to concurrent (mainly multithreaded) software; and how to deal with this problem as well. The paper is written in a lively and ironical manner but provides a truly serious and thorough review of the coming changes. Sure, it will be interesting and helpful for every developer.
-
24.03.2009
In this paper, the authors give an overview of the most common mistakes made by novice programmers when using OpenMP. All the mistakes are arranged into two groups: correctness mistakes and performance mistakes. They are all explained and illustrated in detail and ways to avoid them are given. The authors also provide information on which compilers can and which cannot spot these mistakes.
-
16.03.2009
Using threads efficiently is a key to high performance and Herb Sutter dwells upon the problem of "up-leveling" this low-level tool of concurrency through isolation data and work of each thread. The paper discusses the techniques of improving the code with threads on the examples of three standard cases: GUI programs, sockets and pipelining. For each case there is a code sample and thorough explanation and guidelines on how to improve this code using special techniques.
-
07.03.2009
Kerry D. Wong demonstrates differences in C++ code performance when performing the operation of matrix multiplication using OpenMP and the libraries uBLAS, cBLAS and MATLAB. He gives the code samples showing changes introduced in the code and comments them making conclusions about the performance change. At the end of the article, there is a table comparing the obtained results.
-
17.02.2009
The so called N-Queens problem is a good and interesting example to demonstrate using various new and already existing parallelizing techniques provided by Intel Parallel Composer. The paper consists of three sections. The first one introduces the problem and the algorithm of solving it. The second section offers a number of ways to parallelize this solution and tells about advantages and disadvantages of each method. The third section provides their comparison. The paper includes a lot of code samples and illustrative screenshots and will be interesting to everyone involved in parallel programming.
-
30.01.2009
In his note, the author touches upon the problem of multithreaded applications designed for working on a single processor being subject to a misbehavior on multiple processors, and recommends two tools to manage parallel execution: Erlang and Intel's compiler suite.
-
21.01.2009
In this article, the author refers to the issue of the so called opportunistic thread scheduling and describes this technique's principle. He also touches upon QuickThread programming and explains how to employ opportunistic scheduling with the best result.
-
16.01.2009
In this whitepaper, the author discusses the use of OpenMP and in particular its library functions, environment variables and also gives some tips on increasing performance and debugging OpenMP applications. All these aspects are arranged in separate sections supplied with code samples or illustrative tables. There are also some notes about the Intel Thread Checker and the Thread Profiler tools which help work with OpenMP-applications. The paper would be interesting for every programmer dealing with OpenMP.
-
28.12.2008
The paper touches upon the issues related to OpenMP programs. By a code example, the author explains what problems the programmer may encounter and how to use Intel Threading Tools (Intel Thread Checker and Intel Thread Profiler) to simplify threading of a project. You will also find some tips on how to handle load imbalance and synchronization impact. The article contains thorough code samples and screenshots and will be interesting to every developer working with OpenMP technology and multithreaded applications.
-
21.12.2008
This paper with such a provocative title is discussing if there is sense in refusing OpenMP technology and if there is, how to 'kill' it by 2011. Written in a humorous way, the paper reveals the author's view upon the problem: OpenMP is still very popular and works quite well; so the only way to get rid of it is to let it vanish by itself when it stops meeting the growing complexity of computer technologies.
-
30.06.2008
The author of this brief post explains how concurrency helps unleash the power of multi-core systems and why OpenMP fits this task best. He lists the main benefits of threading and OpenMP advantages and also provides some background references on this technology.
-
11.06.2008
Parallel programming involves many difficulties and issues, especially concerning detecting specific bugs and bottlenecks in concurrent applications. The authors of this article tell you about the most frequent troubles such as race conditions, deadlocks and memory ordering issues, and then review some testing strategies and give recommendations on how to use them most effectively. They also advise some tools to aid you with concurrency testing (CHESS, The Intel Thread Checker, Chord, KISS, Zing) and give a list of characteristics to be considered in performance testing. In other words, the article includes all the necessary information on testing the concurrency bugs and improving performance of parallel applications.
-
21.03.2008
John E. West gives a brief overview of the teleconference devoted to the announcement made by Intel and Microsoft about creating two research-centers that would focus on the ways of improving the technology of parallel programming and the very way of how programmers "think" and employ parallel programming techniques. The author clarifies some points in this issue and cites some of the participants of the event. In particular, the main goal of the research-centers is to improve mainstream programming. The author also makes some conclusions about the good consequences of the step made by Intel and Microsoft.
-
20.09.2007
This brief note describes a common mistake of assuming that there is synchronization between the threads entering a worksharing construct when a FIRSTPRIVATE variable is used.
-
11.09.2007
In the era of multithreading programming coming closer and closer, it is important that developers be acquainted with technologies intended to simplify it. This paper is meant as a brief introduction into OpenMP technology but it is rather vast and includes several sections covering various important aspects. First of all, the paper explains OpenMP's pragma-based implementation and covers the following issues: the syntax, thread-safety, data sharing, execution synchronization and loop nesting. Each section contains a lot of illustrative code samples and descriptions of directives and clauses used for a particular purpose. Also, some tips on how to deal with the shortcomings are given. The paper will serve as a good source of basic information about OpenMP.
-
06.08.2007
In the article "What makes parallel programming hard", the author refers to the article by Anwar Ghuloum with the same title and adds some more points to the list of the factors that make parallel programming more difficult in comparison with sequential programming. Besides such factors as finding the parallelism, avoiding the bugs, tuning performance, future proofing and using modern programming methods, mentioned by Anwar Ghuloum, Michael Suess names added complexity, proneness of parallel programming to errors, little knowledge of innovative parallel programming systems and some more.
-
03.08.2007
What makes parallel programming hard? The author of the article with the same title answers this question proceeding from his programming experience and enumerates several factors in increasing order of difficulty. These are Finding the Parallelism, Avoiding the Bugs, Tuning Performance, Future Proofing and Using Modern Programming Methods. Resorting to logic explanations and lively examples the author gives a convincing proof of his viewpoint.
-
02.05.2007
The article is devoted to the problem of loop carried dependency when parallelizing or optimizing a for loop. The author describes various solutions to work it around and arising issues and demonstrates them by code samples.
-
11.01.2007
The purpose of this paper is to introduce the user into the basics of OpenMP. The author gives an overview of OpenMP pragmas, runtime routines and environment variables and illustrates using them by examples. She also gives some tips on what tools and methods to use to work around some errors and issues and increase code performance and safety.
-
17.10.2006
With threading technology rapidly developing, it is necessary that C++ standard provide adequate support for it too. The paper describes a meeting of C++ specialists devoted to discussing the issues of creating threading standards for the next version of C++. Such issues were covered as memory model to choose, thread synchronization, thread launching and joining and exception handling. The article touches upon the most important reports and proposals by some of the meeting's members.
-
20.09.2006
In his brief note, Michael Suess considers the ability of calling once-function in OpenMP which still lacks the mechanism of implementing this function. He gives some code samples explaining how to carry it out best of all.
-
11.09.2006
The paper presented in two parts introduces the readers into the basics of OpenMP technology and describes its various #pragma directives and principles of working with variables, threads and parallel sections. The author gives a good deal of code examples and thorough explanations and tips on how to deal with the issues presented in them. The paper will be surely helpful for all developers making the first steps in OpenMP.
-
21.08.2006
This article compares scoped locking and critical directive in OpenMP that both serve for handling mutual exclusions. The comparison is carried out by several points that are illustrated by code samples. After that the conclusion is made what technique is better.
-
12.08.2006
If you doubt that OpenMP is the best system to use when dealing with parallel programming in C/C++ and Fortran, read this article by Michael Suess where he explains the three reasons for choosing this technology: high level of abstraction, performance, maturity. Written in a natural manner, the article may serve a good brief overview of the main OpenMP's advantages.
-
13.12.2005
The article touches upon the topic of OpenMP support in Sun Studio software. The first section describes the working principle of OpenMP technology, its execution model and directives. The second section explains how OpenMP support is implemented in Sun Studio compiler and some most important tools. The article also discusses the issues of OpenMP applications performance. The text is supplied with illustrating graphs and schemes.
-
10.12.2005
In this weblog-post, the author touches upon the topic of OpenMP technology from the viewpoint of Chip Multi-Threading technology (CMT) that is to be become rather popular in the nearest future. The post gives an overview of OpenMP, enumerates its main advantages over other parallelization techniques and gives some tips on learning and using it.
-
11.10.2005
OpenMP technology helps developers create multithreaded applications more quickly and with less effort. The authors of this article are going to tell about the main features of this technology acquainting the user with the OpenMP constructs (in particular, synchronization pragmas and execution environment routines) and referring to some issues related to shared and private data, scheduling algorithms and non-loop parallelism. The article is supplied with many code samples and instructions on using particular constructs.
-
28.02.2005
As the authors put it, "the world of parallel programming today is diverse and complex", so they decided to make an overview of the current state of this sphere. For that purpose they proposed three subprojects that consist in surveying programmers and scientists concerning various aspects of parallel programming, comparing parallel programming systems with a standard set of tests and working out a wiki resource that would serve the best source of information on all the questions that may arise about the technology.