The gprof and gcov tools can be used with synchronized projects as well as local projects. These steps describe using the shallow project in synchronized form at trestles.sdsc.edu:
The contents of $HOME/.bash_profile should match up with the settings you choose from Project->Properties->C/C++Build->Environment_Management
$HOME/.bash_profile :
module unload mvapich2 module unload pgi module load gnu/4.6.1 module load openmpi/1.4.3
The decs.h file in the shallow project was modified to increase the itmax number of timesteps to 9000 so that the program runs slightly longer for performance analysis (it's still nearly instantenous on a quick cluster node ).
To get the synchronize project code looking nice and clear of warnings, do the following for the trestles setup:
Project->Properties->C/C++ General->Code Analysis
- uncheck Symbol is not resolved
- uncheck Type cannot be resolved
C/C++ General->Paths & Symbols
- add //trestles.sdsc.edu/home/diag/opt/openmpi/1.4.3/gnu/include
- add //trestles.sdsc.edu/usr/include
Project->Index->Rebuild or Freshen All Files
Add the GMON_OUT_PREFIX to the run configuration and set it to gmon_shallow or something similar.
Import a custom PBS script into the workspace on trestles or add it with an editor window:
#!/bin/bash #PBS -A TG-STA110022S #PBS -q shared #PBS -N shallow #PBS -l nodes=1:ppn=4 #PBS -l walltime=00:05:00 #PBS -V MPI_ARGS="-np 4" if [ "-np" == "${MPI_ARGS}" ] ; then MPI_ARGS= fi module unload mvapich2 module unload pgi module load gnu/4.6.1 module load openmpi MYSCREXE=${HOME}/shallow/shallow cd $HOME/shallow COMMAND=mpirun #COMMAND=mpirun_rsh if [ -n "${COMMAND}" ] ; then COMMAND="${COMMAND} ${MPI_ARGS} -hostfile ${PBS_NODEFILE} ${MYSCREXE} " else COMMAND="${MYSCREXE} " fi ${COMMAND}
Then run the program.