High-performance teamworking

Author: Guest blogger
Posted: 1 Dec 2015 | 10:16

Alex Nigay, a student on our MSc in High Performance Computing, gives an interesting perspective on a Programming Skills course run by EPCC's Mike Jackson.

I wanted to share my thoughts after our recent group work during the Programming Skills course. I found the concept of people working together on a project to be extremely similar to the concept of parallel programming, so here are my observations on parallel programming versus group work:

1. Thread/Process = Member of a team

2. Domain decomposition = Decomposition of work among team members (done in such a way as to minimize inter-member communication (IMC) and maximize individual work between two communications)

3. Load balancing = Load balancing (dividing work among team members in such a way that the team does not have to wait for one member to finish his/her share in the end)

4. Thread synchronisation = Synchronisation among team members (finishing individual modules before integrating them; propagating coding conventions before starting any coding)

5. Scatter operation = The process of assigning tasks to team members

6. Gather operation = Combining each team member's contribution into a common result

7. Reduction operation = Reduction performed on array of Git repositories using 'git-merge' as the reduction operator. Produces a single Git repository as the output.

8. Critical section = Traditional version-control systems' approach to global locking a file so that only one person can edit it.

... And the general principle of combining each thread's (team member's) individual work into a single program output (project deliverable) is the same in parallel programming and group work.

So, now I can tell people that I am actually studying management :)  


Alex NigayMSc in High Performance Computing


Hi Alex, glad you found the coursework so thought-provoking! Your comments made for a good read to start off the week :-)

Thank you, Mike :)