Skip to content

Latest commit

 

History

History
60 lines (38 loc) · 1.73 KB

README.md

File metadata and controls

60 lines (38 loc) · 1.73 KB

Parallel matrix multiplication

Performance tests for parallel matrix multiplication algorithms.

Usage

  1. Install the required python libraries, found in requirements.txt. The following command shows how to do it using pip, but conda or any package manager can also be used.
pip install -r requirements.txt
  1. Build the matrix multiplication executables using make.
cd MatMult
make
  1. Run the experiments using the launcher.
cd ..
python launcher.py experiments.csv
  1. Generate the graphics, using the results of the experiments from every machine.
python graphics.py experiments1.csv experiments2.csv experiments3.csv -o img/

Results

The experimentation results are summarized in the following figures.

Matrix size vs Time line plot Threads vs Time line plot Matrix size vs Threads heatmap Matrix size vs Threads heatmap

In this case, the experiments were run in 3 different machines:

  • A ml.c5.9xlarge AWS instance, with 36 vCPUs and 72 GiB RAM.
  • A ml.m5.8xlarge AWS instance, with 32 vCPUs and 128 GiB RAM.
  • A ml.r5.8xlarge AWS instance, with 32 vCPUs and 128 GiB RAM.

Every matrix size - number of threads combination was executed 30 times, in order to make the experiments statistically significant. The values in the graphics represent the mean values of those 30 repetitions.

Metrics

The following metrics summarize the experimentation results, regarding the algorithms performance for different number of threads:

  • Speed up: $$Sp = \frac{t_{serial}}{t_{parallel}}$$

SpeedUp

  • Efficiency: $$Ep = \frac{Sp}{p}$$

Efficiency