Difference between revisions of "Modifying Programs for Use with PetaKit"

From Earlham CS Department
Jump to navigation Jump to search
(printStats())
(printStats())
Line 20: Line 20:
 
*d: double (stored as long double)
 
*d: double (stored as long double)
  
The first letter of the label is stripped and read as the variable type, so number of columns would be input as:
+
The first letter of the label is stripped and read as the variable type, so, say number of timesteps would be input as:
  iCOLUMNS, (long long int) num_columns
+
  iTIMESTEPS, (long long int) num_timesteps
  
 
This prints as
 
This prints as

Revision as of 19:00, 14 May 2010

Modifying a program for compatibility with PetaKit is quite simple. All you need is your program's source code and access to the PetaKit repository

  1. Get the pkit.h and pkit.c files from the PetaKit directory of the CVS repository on Hopper and place them with your program's source.
  2. Include pkit.h in your source, and make sure your makefile makes a .o of pkit.c and pkit.h
  3. At the beginning of your main function, type startTimer();
    • This starts the timer for accurate wall time
  4. At the point in your code where all the most important pieces have finished running, place the printStats function, explained in the following section

printStats()

printStats(program name,threads,style of parallelism,problem size,version number, number of additional variables to be printed ...)
  1. The first five arguments to printStats() are required output that will be expected by the PetaKit data harvester.
  2. Next is the count of whatever other values you would like your program to print - most likely for debug purposes.
    • For each additional printout, specify two arguments:
      1. The label, which includes the type of the variable
      2. The variable itself.

Three general classes of variable are supported -

  • s: string (stored as char*)
  • i: integer (stored as long long int)
  • d: double (stored as long double)

The first letter of the label is stripped and read as the variable type, so, say number of timesteps would be input as:

iTIMESTEPS, (long long int) num_timesteps

This prints as COLUMNS : <number of columns>

Here's an example of a call to printStats in an instance of John Conway's Game of Life written in c.

printStats("Life",life.size,"mpi",life.ncols * life.nrows, "1.3",0, 3, "iCOLUMNS", (long long int) life.ncols, "iROWS", (long long int)life.nrows,
"iGENERATIONS", (long long int)life.generations);

And the output:

!~~~#**BEGIN RESULTS**#~~~!
PROGRAM             : Life
HOSTNAME            : Sam's Computer
THREADS             : 1
ARCH                : mpi
PROBLEM_SIZE        : 11025
VERSION             : 1.3
CPUTIME             : 0
TIME                : 3.979
COLUMNS             : 105
ROWS                : 105
GENERATIONS         : 1000
!~~~#**END RESULTS**#~~~!