Darryl Gove's blog
OpenMP 3.0 specification released
The specification for OpenMP 3.0 has been put up on the OpenMP.org website. Using the previous OpenMP 2.5 standard, there's basically two supported modes of parallelisation:
- Splitting a loop over multiple threads - each thread is responsible for a range of the iterations.
- Splitting a serial code into sections - each thread executes a section of code.
The large change with OpenMP 3.0 is the introduction of tasks, where a thread can spawn a task to be completed by another thread at an unspecified point in the future. This should make OpenMP amenable to many more situations. An example of using tasks looks like:
node * p = head;
while (p)
{
#pragma omp task
{
process(p);
}
p = p->next;
}
The master thread iterates the linked list generating tasks for processing each element in the list. The brackets around the call to process(p) are unnecessary, but hopefully clarify what's happening.
Posted at 11:10AM May 13, 2008 by Darryl Gove in Sun |
Slides for CommunityOne
All the slides for last week's CommunityOne conference are available for download. I was presenting in the CMT stream, you can find my slides here. Note that to download the slides, you'll need to use the username and password shown on the page.
My talk was on parallelisation. What's supported by the compiler, the steps to do it, and the tools that support that. I ended with an overview of microparallelisation.
Posted at 09:56PM May 12, 2008 by Darryl Gove in Sun | Comments[2]
Official reschedule notice for CommunityOne
Session ID: S297077 Session Title: Techniques for Utilizing CMT Track: Chip Multithreading (CMT): OpenSPARCâ„¢ Room: Esplanade 302 Date: 2008-05-05 Start Time: 13:30
The official timetable has also been updated
Posted at 12:13AM May 03, 2008 by Darryl Gove in Sun |
Embedded Systems Conference Presentation
I got the opportunity to present at the embedded systems conference in San Jose a couple of weeks back. My presentation covered parallelising a serial application, a quick tour of what to do, together with an overview of the tools that Sun Studio provides to help out. The presentation is now available on the OpenSPARC website.
Posted at 08:18AM May 02, 2008 by Darryl Gove in Sun |
Multicore expo available - Microparallelisation
My presentation "Strategies for improving the performance of single threaded codes on a CMT system" has been made available on the OpenSPARC site.
The presentation discusses "microparallelisation", in the the context of parallelising an example loop. Microparallelisation is the aim of obtaining parallelism through assigning small chunks of work to discrete processors. Taking a step back...
With traditional parallelisation the idea is to identify large chunks of work that can be split between multiple processors. The chunks of work need to be large to amortise the synchronisation costs. This usually means that the loops have a huge trip count.
The synchronisation costs are derived from the time it takes to signal that a core has completed its work. The lower the synchronisation costs, the smaller amount of work is needed to make parallelisation profitable.
Now, a CMT processor has two big advantages here. First of all it has many threads. Secondly these threads have low latency access to a shared level of cache. The result of this is that the cost of synchronisation between threads is greatly reduced, and therefore each thread is free to do a smaller chunk of work in a parallel region.
All that's great in theory, the presentation uses some example code to try this out, and discovers, rather fortunately, that the idea also works in practice!
The presentation also covers using atomic operations rather that microparallelisation.
In summary the presentation is more research than solid science, but I hoped that presenting it would get some people thinking about non-traditional ways to extract parallelism from applications. I'm not alone in this area of work, Lawrence Spracklen is also working on it. We're both at presenting CommunityOne next week.
Posted at 09:00PM Apr 29, 2008 by Darryl Gove in Sun |
Win $20,000!
Sun has announced a Community Innovation Awards Programme - basically a $1M of prize money available for various Sun-sponsored open source projects. There is an OpenSPARC programme, and the one that catches my eye is $20k for:
vi. Best Adaptation of a single-thread application to a multi-thread CMT (Chip Multi Threaded) environment
My guess is that they will expect more than the use of -xautopar -xreduction or a few OpenMP directives
If I were allowed to enter (unfortunately Sun Employees are not) I'd be looking to exploit the features of the T1 or T2:
- The threads can synchronise at the L2 cache level - so synchronisation costs are low
- Memory latency is low
The upshot of this should be that it is possible to parallelise applications which traditionally have not been parallelisable because of synchronisation costs.
Funnily enough this is an area that I'm currently working in, and I do hope to have a paper accepted for the MultiExpo.
Posted at 12:17PM Jan 31, 2008 by Darryl Gove in Sun |
Multi-threading resources on the developer portal
Found a page of links to useful resources about multi-threading on the developer portal.
Posted at 11:14AM Sep 28, 2007 by Darryl Gove in Sun |
