Integrated Performance Monitoring - Lightweight MPI Profiling Tool
License
LGPL-2.1, Unknown licenses found
Licenses found
LGPL-2.1
LICENSE
Unknown
COPYING
nci-australia/ipm_nci
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Integrated Performance Monitoring ================================= Summary: Performance profiling for parallel MPI and serial codes. Provides minimal overhead profiling via on chip counters and processes level performance resource usage metrics. Easy to use (minimal user overhead, no code instrumentation). Scalable and parallel aware. Provides MPI performance, topology and load balance information to MPI applications. Performance summary report can be centrally logged as well as output. Reports can be generated on a per job basis or based upon a time epoch for tracking code performance within a job. Supports code regioning and snapshot tracing. Portable & Open Source. Usage: * preferred * Integrate IPM with your parallel environment and run as normal Contact your local hpc/compiler guru to get things set up Usage: * ad hoc * * if you can't integrate into the serial and/or parallel environment * * the forms below indicate some other possible approaches * serial: ipm a.out parallel: mpirun -np 1024 ipm a.out [args] poe ipm a.out [args] Options: IPM_REPORT=full,terse,none IPM_DEBUG=1 IPM_OPTS=MPI:breakwaits+ IPM_HASHSIZE=some_prime_number ----- API details see ipm.h ----- * some machine constants (clocks, counters, etc.) need to be set for each * machine. E.g. We don't detect IPM_TIME_RDTSC_SECPERTICK. The location to * which logs are written is system specific. etc. ------ Profiling and tracing to a lesser extent are more accurate when done over longer runs. A very short (10 second) run will be less accurate in terms of HPM counts than a longer running test. Keep this in mind when examining very short runs. When timing runs externally from IPM, be aware that IPM can add a few seconds to MPI_Init and a number of seconds roughly proportional to concurrency to MPI_Finalize. These are onetime costs at application start and stop and may lead to a overestimate of profiling overhead if very short runs are used. ------ April 2008 - Failure detection The IPM source code uses http://www.cedps.net/index.php/LoggingBestPracticesCheatSheet MPI_Pcontrol() ------ Logical Flow in IPM Wrappers ============================ MPI_Init() { ipm_mpi_init() { misc setup of bits IPM_CLEAR_TASKDATA ipm_getenvopts set stamp_init; getrusage_init; PMPI_Init(); fill labels; call masking; setup tracing; ipm_mpi_link; IPM_HASH_CLEAR ipm_get_switchname ipm_get_switchbytes get_jobdata ipm_hpm_start } ipm_hpm_start(); } ... MPI_Finalize() { ipm_mpi_init() { set stamp_final; getrusage_final; ipm_hpm_stop(); ipm_region(-1); ipm_get_switchbytes(); ipm_sync(); ipm_report(); ipm_log(); ipm_trc_dump(); PMPI_Finalize(); } } Serial ====== ipm_hook main() ipm_hook /* * ##### * # Integrated Performance Monitoring * ##### * * Integrated MPI, HPM, and memory profiling for parallel applications. * * There are two interfaces: environment variables and MPI_Pcontrol. * In the absence of IPM both interfaces pass through w/o effect. * * ##### * # Environment variable interface * ##### * * IPM_REPORT=none,terse,full --> determines the type of report generated * * IPM_MPI_PASS=MPI_Comm_rank+... --> do not record info for specific MPI calls * * IPM_MPI_NOOP=MPI_Barrier+... --> do NOTHING for this MPI call. ie. do not call * MPI - can be useful for debugging but can * make your code crash ! Use with caution. * * IPM_HPM=no,[1,2,3,...],scan * * * ##### * # Pcontrol interface * ##### * C FORTRAN * * regions and atomic tags * MPI_Pcontrol( 0,"tag_a"); call mpi_pcontrol(0,"tag_a//0") * MPI_Pcontrol( 1,"proc_a"); call mpi_pcontrol( 1,"proc_a//0") * MPI_Pcontrol(-1,"proc_a"); call mpi_pcontrol(-1,"proc_a//0") * * queries * MPI_Pcontrol( 4,region_string) call mpi_pcontrol(4,region_string) * * * * on platforms that do not support MPI_Pcontrol or outside MPI * * C FORTRAN * ipm_region(1,"region1"); call ipm_region(1,"region1"//0); * ...code... ...code... * ipm_region(-1,"region1"); call ipm_region(-1,"region1"//0); * ipm_event("tag"); call ipm_event("tag"//0) * ipm_trace(1,"call1,call2,.."); call ipm_trace(1,"call1,call2,..."//0) * ipm_trace(0,"call1,call2,.."); call ipm_trace(0,"call1,call2,..."//0) * * David Skinner Sep 2004 (bug reports ,questions -> dskinner@nersc.gov) * */
About
Integrated Performance Monitoring - Lightweight MPI Profiling Tool
Resources
License
LGPL-2.1, Unknown licenses found
Licenses found
LGPL-2.1
LICENSE
Unknown
COPYING
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published