Efficient multicore programming for industrial applications
Abstract
Software and hardware developers of today are leaning more and more towards the use of multicore environments. For well over 30 years, since the early 1970 s, the evolution of processor performance has been centered around increasing the number of transistors on a single chip, and increasing the clock frequency, to be able to process a larger number of instructions per second. However, a major change in this evolution has come about in the last years, where increased clock frequency has been substituted by an increase in the number of processing units per chip. The evolution of software development is also changing, as a consequence of the last years change in hardware evolution. Traditionally increased performance in software has come as a free lunch due to faster hardware, without any major change in the source code. However, due to the transition to multicore hardware, software developers need to explore new techniques in order to keep increasing the performance. Companies like Powel AS, that develop high performance commercial software, are therefore forced to seek knowledge about these new techniques. This thesis presents some of the available techniques for parallel programming, and explores ways to use them. We have used these techniques in programming experiments with industrial software developed by Powel AS. The reason for this is to show that it is possible for all software developers to overcome the transition to multicore environments, without thorough knowledge about advanced methods, even though parallel programming and high performance computing is an advanced field.