Assignment 1

Part 4


In this part of the assignment you will use serial axes to optimize the performance of your program and you will use Prism to measure the results.


1) To measure the performance of a CMF program you must compile with the -cmprofile compiler switch. You should not use the -g switch (which you used for debugging) if you want accurate measurements. Change the Makefile so that your code is compiled with the -cmprofile switch instead of the -g switch and recompile your code.

2) Use Prism to time the program and save the timing data to a file.

3) Comment out the calls to init_graphics and plot_lines in the main program (in file phaseplot.fcm). Recompile your code and use Prism to get performance data. Save the data to another file. Compare the data with the data you generated in Step 2.

You should be able to see that the calls to CMX11 routines generate a lot of time on the partition manager. This is because the PNs send all X commands to the partition manager. The partition manager then sends the commands over ethernet to your X server. This creates a great deal of overhead for the partition manager.

4) Leave the calls to init_graphics and plot_lines commented out and make the first axes of x and y serial in the main program (file phaseplot.fcm) and routine step (file solver.fcm). Recompile and time using Prism. Save the timing data to a file and compare with the times you measured in Step 3. You should find that the use of serial axes has eliminated all communication and resulted in a large increase in speed in the work done on the nodes.


Go back to part 3.
Return to the class home page.