ftp ftp.sdsc.edu cd pub/outgoing/nwright/ get ipm_TG.tgz or wget ftp://ftp.sdsc.edu/pub/outgoing/nwright/ipm_TG.tgz Quick Installation ++++++++++++++++++ cd ipm ; ./configure ; make mpicc my_mpi_code.c -L/path/to/ipm/lib -lipm More detailed instructions below, including compilation with PAPI support. Default Installation ++++++++++++++++++++ 1) cd ipm 2) ./configure should provide a basic working configuration ./configure --help will present a full list of options Commonly used ones are: --with-compiler= GNU|IBM|INTEL|PATH|PGI|CRAY.. For machines with more than one compiler installed it is important that you specify the compiler you want to build IPM with – this should be the same one that the MPI library was compiled with. (Note you can also set the complier via usual the environment variables.) --prefix=/path/to/where/you/want/ipm/installed --with-arch=POWER|X86|AMD64|BGL|XT3|XT4|XT5|ALTIX Nb. For a Cray XT system (XT4/XT5) it is essential that this flag is specified or IPM will crash. If you are cross-compiling ie. the architecture of the compute portion of your machine is different from the login node the configure process can cause problems. Please contact us for help if you encounter such problems. PAPI support: If PAPI is already installed using it maybe as simple as issuing a ‘module load papi’ command – please consult your local documentation. To install PAPI yourself see the PAPI website http://icl.cs.utk.edu/papi/. --with-cpu=OPTERON|CORE2DUO| PENTIUM_M| WOODCREST| ITANIUM2|POWER5 OPTERON = any AMD opteron CORE2DUO = any Intel chip with 4 counters available WOODCREST = any Intel chip with 2 counters (Including Harpertown) ITANIUM2 = Intel Itanium with 4 counters If you don't know the number of hardware counters on your platform it is obtainable from the "papi_avail" command which is usually installed in the /path/to/papi/bin directory. --with-papiroot=/path/to/papi (if you used the "module load papi" method above your probably don't need to specify this) 3) IPM has two usage modes - either a user can relink their code to the IPM library or they can load the IPM library dynamically at runtime. If you plan to use IPM as a static library i.e. link applications with -lipm make or If you plan to use IPM as a dynamic library i.e. LD_PRELOAD libipm.so at runtime make shared Currently on platforms that use static binaries (Cray XT and Bluegene) the shared mode of usage is not possible. Profiling your code with IPM ++++++++++++++++++++++++++++ IPM can be using in one of two modes either statically or dynamically: Static Usage - In this case the users code needs to be relinked: mpicc my_mpi_code.c –L/path/to/ipm/lib –lipm Dynamic Usage - no code recompilation needed Csh syntax setenv LD_PRELOAD /path/to/ipm/lib/libipm.so mpirun ./a.out unsetenv LD_PRELOAD bash syntax LD_PRELOAD=/path/to/ipm/lib/libipm.so mpirun ./a.out Post processing IPM output ++++++++++++++++++++++++++ By default IPM produces a summary of the performance information for the application on stdout. IPM also generates an XML file that can be used to generate a graphical webpage. This can be produced one of two ways 1) generation of the webpage on the cluster where IPM ran and then ftp the html to a local site Or 2) move the IPM xml file locally and generate the html on your laptop/desktop. 1) - build ploticus for the cluster head node. It is available here http://ploticus.sourceforge.net/doc/welcome.html - setenv IPM_KEYFILE /path/to/ipm/ipm_key - then /path/to/ipm/bin/ipm_parse -html This will generate a directory named something like this a.out_1_nwright.1231369287.321103.0_ipm_unknown tar up that dir, ftp it to your laptop, untar and look at index.html. 2) - ftp the xml file to a local machine - it will be named something like your_username. 1231369287.321103.0 eg. nwright.1231369287.321103.0 - install ploticus on your local machine http://ploticus.sourceforge.net/doc/welcome.html - (note you can do this under cygwin on windows.) - put a copy of IPM your local machine - no need to compile you just need access to the ipm_parse script and keyfile - 'setenv IPM_KEYFILE /path/to/ipm/ipm_key' - /path/to/ipm/bin/ipm_parse -html - you will be left with a dir with a index.html file you can open with your favorite browser.