Last week I participated in the Multicore Day in Kista, Sweden. The multicore day is a yearly event (I think this is the 5th in the series), that focus on the new challenges that have been exposed with the proliferation of multicore chips. The event is quite big, there were almost 200 registered participants, although maybe only half of them showed up. Still a much bigger audience that in the event I helped organize in May (Tackling the Multicore Challenge).
So why this interest in multicores? Most of us have at least a dual-core chip in the laptop or desktop computer, and many computers have even more (I have an 8-core iMac at home). There are also commercial chips like the Tilera64PRO that has 64 cores on a chip. One of the main challenges posed by these chips is how to parallelize applications so that they make effective use of the computing resources, and this was the theme for this years event, that had 3 keynote speakers and focusing on programing approaches.
According to Karl-Filip Faxén, there are 3 criteria that a programming approach should satisfy:
- It should support scalability. This means that programs should now be writen for a predefined number of cores, instead the program should adapt to the number of available cores, and thus its performance will scale when new cores become available.
- It should not be more difficult to use than sequential programming approaches.
- It should be useful for a wide range of problems.
One such approach is task based parallelism. In task based parallelism the program is split into tasks, which are smaller and more dynamic that threads. Threads are instead seen as implementation level mechanisms, that are used by the run-time system to execute the tasks.
The 2 morning keynote speakers presented Cilk, a task based programmin approach originally developed by the Supertech group under the leadership of Prof. Charles E. Leiserson, starting in 1994. The approach was later commercialised and is now offered by Intel as Cilk Plus. The presentations were very good, and gave good insights into how task-based parallelism works and where it gives good results. I was quite impressed by some of the results, i.e. how quickly a program had been parallelised using Cilk, and what performance gains had been achieved.
After lunch there were 3 parallel sessions with talks from Academics. I found these less interesting, as they were mainly project presentations, clearly aimed at highlighting running projects to participants from industry. Given the industrial emphasis of the event I see no fault in this.
The 3rd keynote was given by Prof. Wen-mei Whu, who is working on implementing HPC algorithms on GPU’s. The talk highlighted and important issue: not all algorithms seem amendable for parallelisation. In the realm of graph algorithms, a version of bread-first search exists that scales well on GPU’s, however nobody knows how to parallelise depth-first search. This is also probably the reason that the Murphi model-checker has been parallised. Murphi is based on BDD’s and BDD model-checking is based on bread-first search.
The day closed with a panel. Many of the panelists emphasized the need for introducing parallel computing at the undergraduate level, so that it becomes a part of the standard toolkit of programmers. Taking up this point, I will be running a course “Introduction to Manycore Programming” later this fall, with the intent to present a number of different approaches to programming parallel applications. More about this later…