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

  1. 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.
  2. Send the zip-file to

Author: Arvid Jakobsson (

Created: 2018-03-09 ven. 16:25

Emacs 25.2.2 (Org mode 8.2.10)