COSC370 Okanagan College, Kelowna (BC) Canada: BSPlib
1 Introduction
In this project course you will be introduced to parallel programming with BSPlib. BSPlib is a C library for programming Bulk Synchronous Parallel programs. Such programs are executed in parallel by a fixed number \(p\) of processors. The execution is divided into super-steps. Each super-step consists of a phase of local, isolated, computations after which processors synchronize and exchange messages.
In the exercises you will install MulticoreBSP, a modern implementation of BSPlib. You will then write a series of parallel programs of increasing complexity using BSPlib. The instructor will then test them.
I have collected a further reading material on this page.
2 If you encounter a problem or a bug
My subject of research is tools for verifying BSPlib programs automatically. For this reasons, I'm very interested in what kind of errors BSPlib programmers encounter. If during the project you encounter tricky problem (say each time you're stuck more than 10-20 minutes on one issue), please take note of the what the problem is, and eventually, what the solution is. For instance, you could keep a log like this:
Week | Task | Problem | Solution |
---|---|---|---|
1 | 2 | Error message when running: "Error: bsp_put into unregistered memory area (0x7fe6ed77bf14) requested!" |
I had forgotten to register the variable r . |
… | … | … | … |
3 Week 1: Getting up to speed with MulticoreBSP
In this exercise you will install MulticoreBSP and learn how to write a simple BSPlib program.
4 Week 2: Finding the largest number (in parallel!) and accelerating inner product
In this exercise, you will start writing real BSPlib programs and solve two problems: how to find the largest number in an distributed array and how compute the inner product of two distributed vectors.
5 Week 3: Three versions of broadcast
In this exercise, you will develop and compare three different algorithms for distributing data from one to all processors.
6 Week 4: Parallel sorting
In this exercise, you will first develop a parallel version of radix sort. You will then implement Tiskin-McColl-sort.
7 Week 5: \(k\)-means in BSP
In this exercise, you will develop a parallel version of the \(k\)-means algorithm.
8 Submitting the exercises
- Create a zip-file called
COSC370-exercise-[Week no]-[Group no].zip
containing your submission, responses to each task and a description file called README.txt. Also include the log of errors encountered. - Send the zip-file to arvid.jakobsson@huawei.com.