This project implements a distributed version of the Wavefront computation for the SPM course (academic year 23/24), focused on parallel programming using FastFlow and MPI.
This project builds on the Wavefront computation problem from Assignment 1. Instead of using a “wasting time” work function, we compute diagonal elements of a matrix
For each diagonal element, the new distributed version computes the
- The values of the major diagonal elements
$e_{m, m}^0$ are initialized with the formula$\frac{m+1}{n}$ .
You are required to implement two parallel versions:
- Single Multi-Core Machine: Using the FastFlow library.
- Cluster of Multi-Core Machines: Using MPI (Message Passing Interface).
The code must be delivered as a tarball (tgz
or zip
) that includes:
- PDF Document: Detailed description of the parallelization strategy, performance analysis, plots showing speedup, scalability, and efficiency, along with comments and problems faced.
- Makefile/CMake: To compile the source code on the
spmcluster
machine. - SLURM Scripts: For running tests on the
spmcluster
using the SLURM workload manager.
The project document should include:
- Speedup: Measure how much faster the computation runs with increased resources.
- Scalability: Evaluate how well the program scales with additional processing power.
- Efficiency: Analyze resource usage to identify bottlenecks or inefficiencies.
To compile the project, ensure you have the required libraries installed, such as FastFlow or MPI. The included Makefile
or CMake
file will handle the compilation. The tests can be executed using SLURM scripts provided in the directory.
cmake -S . -B build
cd build
make