TIC4005 project 2 – MPI, Measurement
Project 2: This project is not a software-development one. Instead, you will measure, reflect, and write up the behavior of various programs as the problem size scales. I expect this write-up to take no more than 10-20 pages. You can download the project programs from
1 Part 1: the first program – Matrix Multiply
The first program is a simple matrix multiply program, which you will be timing and observing. Consider the following points…
1. The program adopts the master/worker paradigm.
2. Using -np 2 will start up two tasks, one being the master task, and one the worker. So -np 8 will mean that there are 7 workers, and a master doing NOTHING as usual.
3. You are sharing the cluster with other students. If you time some runs of a program, should you use the shortest time? The average time? The longest time?
Take some time to look at the source code of the program (mm.c), and observe how it is supposed to work.
Note that you can edit the program to change the size of the arrays/matrices that it works on. The initial program is for 512×512 arrays.
Step1: Compile and run the program with different numbers of tasks on a single processor, recording the times of the runs.
Step2: Compile and run the program with different numbers of tasks on multiple processors, recording the times of the runs.
Step3: Compile and run the program with different sizes of arrays (512 × 512…4096 × 4096…), and different numbers of tasks on multiple processors, recording the times of the runs.
2 Part 2: the second program – heat 3d
The second program is a program which attempts to model heat (energy flow) in a 3-dimensional space.
This code was originally from https://github.com/fabien-dournac/parallel-heat3d-c, but I have made some small modifications. Note the following…
1. The directory includes a Makefile, and the command make will compile the program, with score profiling.
2. The directory includes a run script ./run_performance_heat3d which will automatically run and record various tests on different sized 3D worlds. Cumulative results are put in the file performance.txt.
You may want to modify this and the machinefile to explore more deeply.
3. The directory includes a MATLAB script ./plot_performance_heat3d.m which will automatically graph (some) results from performance.txt. You will have to do this on your own machine using MATLAB. You can of course also use gnuplot, or excel, or grapher, or…
Take some time to look at the source code of the program, and observe how it is supposed to work.
Step1: Compile and run the program (initially) with the unchanged script.
Step2: (Later) modify the script to record as well any other readings you wish to make.
From these recordings, you should be able to graph what is happening for your sets of runs.