Strumenti Utente

Strumenti Sito


Final project

The final SPM project is structured in 5 different alternatives. Students should agree which one they want to choose with the Professor before actually starting to implement the project.


Game of Life (GOL)

Game of Life has already been assigned as a kind of mid term homework to be implemented using low level threading mechanisms. The first alternative project consists in implementing a game of life application working on differently sized matrixes with one of the existing structured parallel programming frameworks discussed within the course (FastFlow or Skandium) and in comparing the results achieved with the thread and framework based versions in terms of performance.

StreamCluster (SC)

StreamCluster is an application computing a clustering algorithm over data coming from an input stream. Data clustering is used in a variety of different applications and basically consists in grouping the incoming data in such a way all belong to a given cluster (group of data) with a given centroid item.

We will consider here the application already provided in the parsec benchmark suite (see the Parsec web site). The application is provided as C source code. Different parallelisations of the code exist (e.g. using TBB in parsec, or OpenMP and Cuda in the Rodinia benchmark suite). The student must develop a parallel version of the application using FastFlow.

N-queens (NQ)

N-queens is the well known problem of placing n queens on an n by n chess board in such a way there is no pair of queens on the same column, on the same row or on the same diagonal. Two versions of the program must be developed:

  • one only using low level mechanisms (e.g. threads or processes) and one using one the structured parallel programming frameworks discussed in the course (FastFlow or Skandium).

micro-mdf (MDF)

Micro-mdf is a minimalist parallel programming framework supporting execution of macro data flow graphs. In particular, it must support the following features:

  • data flow instructions with instruction and graph id, pointer to the function to be computed, input token and output destination placeholders and a missing input token counter
  • a graph repository, suitable to host several graphs of data flow instructions
  • a streamer, generating a type stream of tokens directed to the first instruction of some data flow graph, and instantiating in the graph repository a new copy (with a new graph id) of a data flow graph with the token properly assigned to the graph first instruction
  • a drainer, processing each final token, i.e. each token produced while executing the graph in the graph repository with special destination output
  • an interpreter looking for the fireable instruction in the graph repository and processing them up to the point no other fireable instructions are present and the streamer already terminated its operation.

Free choice


In order to be considered valid alternatives:


of the existing frameworks.

Problem/framework possibilities

We will take into account the following possibilities:

Problem FastFlow Skandium Threads (multicore) Processes (COW)
GOL yes yes yes yes
SC yes no no yes
NQ yes yes yes yes
MDF no no yes yes

Alternative implementation frameworks may be taken into account in some cases (including OpenMP, MPI, CUDA, OpenCL, scripting languages) depending on the student knowledge and to be agreed with the professor.




Project code


Project report


  • what has actually been implemented in the project
  • possible major design choices
  • experimental results validating design and performances

More in detail:


Project validity

This project is valid for all the exam terms in A.Y. 2015/2016.

magistraleinformaticanetworking/spm/spm1516project.txt · Ultima modifica: 21/01/2016 alle 12:18 (4 anni fa) da Marco Danelutto