Difference between revisions of "Modifying Programs for Use with PetaKit"
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 | + | 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 | 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
- 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.
- Include pkit.h in your source, and make sure your makefile makes a .o of pkit.c and pkit.h
- At the beginning of your main function, type
startTimer();
- This starts the timer for accurate wall time
- 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 ...)
- The first five arguments to printStats() are required output that will be expected by the PetaKit data harvester.
- 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:
- The label, which includes the type of the variable
- The variable itself.
- For each additional printout, specify two arguments:
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**#~~~!