Skip to content

Commit

Permalink
improved pioperf documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
edhartnett committed Apr 10, 2019
1 parent ca6b558 commit e207ef0
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 11 deletions.
6 changes: 3 additions & 3 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,9 @@ if test "x$enable_timing" = xyes; then
AC_MSG_RESULT($have_papi)

# We must have papi to build pioperformance with timing.
if test "x$have_papi" = xno; then
AC_MSG_ERROR([PAPI library not found, but is required if enable-timing is used.])
fi
dnl if test "x$have_papi" = xno; then
dnl AC_MSG_ERROR([PAPI library not found, but is required if enable-timing is used.])
dnl fi
fi
AM_CONDITIONAL([HAVE_PAPI], [test "x$have_papi" = xyes])

Expand Down
38 changes: 30 additions & 8 deletions tests/performance/Pioperformance.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,42 @@
# Using pioperf to Measure Performance

To run pioperformance you need a dof input file. I have a whole repo
of them here:
https://svn-ccsm-piodecomps.cgd.ucar.edu/trunk

You need an input namelist:

&pioperf
decompfile= '/gpfs/fs1/work/jedwards/sandboxes/piodecomps/576/piodecomp576tasks03dims01.dat',
pio_typenames = 'pnetcdf'
rearrangers = 1,2
nframes = 1
nvars = 1
niotasks = 64, 32, 16
/
&pioperf
decompfile= '/gpfs/fs1/work/jedwards/sandboxes/piodecomps/576/piodecomp576tasks03dims01.dat',
pio_typenames = 'pnetcdf'
rearrangers = 1,2
nframes = 1
nvars = 1
niotasks = 64, 32, 16
/

in the namelist all of the inputs are arrays and it will test all
combinations of the inputs. You need to run it on the number of tasks
specified by the input dof There are also some options to use simple
generated dof's instead of files.

## Testing

For the automated test you can generate a decomp internally by setting
decompfile="ROUNDROBIN", or decompfile="BLOCK"

They call init_ideal_dof which internally generates a dof as follows:

if(doftype .eq. 'ROUNDROBIN') then
do i=1,varsize
compmap(i) = (i-1)*npe+mype+1
enddo
else if(doftype .eq. 'BLOCK') then
do i=1,varsize
compmap(i) = (i+varsize*mype)
enddo
endif

The size of the variable is npes*varsize where varsize can be set in
the namelist.

0 comments on commit e207ef0

Please sign in to comment.