$25
MSc in High Performance Computing
Coursework for Threaded Programming Part 2
The object of this assessment is to experiment with the loop scheduling options in OpenMP. You will be required to conduct some experiments, and submit a report detailing the results of these experiments.
You are provided with a piece of code which contains two loops which are parallelised with OpenMP directives. The code measures the execution time for 1000 repetitions of each loop, and includes a verification test for each loop.
The code can be found on the course pages on Learn. You may choose to work with either the C (loops.c) or Fortran 90 (loops.f90)version.
You should use the Intel 19 compilers, and always compile the code with the -O3 -qopenmp options to ensure a high level of sequential optimisation and enable OpenMP.
SCHEDULE clause options
Run the code on 8 threads on the back end of Cirrus, using the following SCHEDULE clause options:
• STATIC
• AUTO
• STATIC,n
• DYNAMIC,n
• GUIDED,n
where for the latter three cases, n (the chunksize) takes the values 1,2,4,8,16,32,64. From these experiments, determine for each loop the best scheduling option on 8 threads. You may find it convenient to use schedule(runtime) and run multiple experiments in the same batch job. Using this option (which may be different for the two loops), run the code on 1, 2, 4, 6, 8, 12, 16, 24 and 32 threads.