7/26/10 tushar Significant code cleanup. Papiex now only measures PAPI events. Orthogonal funcitonality, such measuring MPI and I/O has been phased out from papiex, to make the tool more robust and to avoid functionality present in other Open Source software such as mpiP. 7/18/08 mucci Added L2/Mem BW metrics Made -a add -x (memory) Added Other cache metrics 07/15/08 mucci Added ideal IPC Fixed other ideal cycle measurements Added total stall measurements Modified descriptions for ideal measurements 07/11/08 mucci Added MPI Wait percentage Cleaned up output further Added long definitions to metrics 07/10/08 mucci Add libpapiexmpsync to report thread wait and synchronization times. Reports on: pthread_barrier_wait pthread_mutex_lock pthread_mutex_timedlock omp_set_lock omp_set_nest_lock do_futex ompc_barrier 07/02/08 tmohan Added useful utilization metrics. 06/25/08 tmohan papiex has its own copy of scperfutils.c for now. In the future we may make it an external. 06/24/08 tmohan Migrated sicortex utiliies from monitor to utils/scutils.c. Now, a define SCUITLS makes the path functions used in papiex. 06/02/08 tmohan Fixed code that checks for minimum number of multiplexed samples. Fixes to the multiplexing interval setting in papiex. Changed the option so user specifies in Hz not usecs, since that's more user-friendly. Papiex now uses a default of 10Hz. 05/30/08 tmohan Added an optional "interval" option to -m (multiplex). This change needs a few more changes to become active. The arg parse is done. The PAPI call is commented out for now, pending a clarification from Phil. 05/29/08 tmohan papiex now uses monitor's path API. For now I define USE_MONITOR_PATH_API. Once this code is tested, we can make this code the default and remove the define from the code and Makefile. 05/28/08 tmohan Added support in papiex to use monitor's MPI callbacks. I have also added a new compile-time define USE_MONITOR_MPI. The changes pass rudimentary testing. Once enough testing is done, we can do away with the define, and make the new code the only code path. 05/27/08 tmohan Removed MFLIPS for 9B. It really adds more confusion to have it. 04/30/08 tmohan Added an aggregate MFLOP metric (across threads/tasks). 04/29/08 tmohan No banner printed on "-q". 04/24/08 tmohan Added a derived metric: L1 Dache misses per thousand instructions. 03/21/07 tmohan The tools' starting banner is sent to stderr now instead of stdout. This is necessary to work with applications that write meaningful binary data to stdout. 02/21/08 tmohan Added backend support for ICE9 to determine fabric congestion. I have deliberately not added the fabric switch events for "papiex -a" in main.c since we have a bug that causes a freeze-up of the node. 02/14/08 tmohan Now the version has an SVN/CVS revision tag embedded in it. 02/14/08 tmohan papiex/ioex now print banners like mpiP before launching. The papiex banner is MPI-aware, so only a single banner is printed for MPI programs. 12/03/07 tmohan Added --cost to chose min,max,avg penalties. 12/03/07 tmohan Fixed and significantly improved stall estimates for 9A and 9B. 11/28/07 tmohan L2 metrics fixed. Added better L2 stall estimates based on Phil/Jud's request. 11/01/07 tmohan papiex io-profiling now guards against re-entrancy. 10/31/07 tmohan Fixed the overhead problem with papiex's io profiling code. The problem had to do with papiex intercepting fgets, gets, getc and putc. These calls are C library calls that are buffered. By intercepting them papiex significantly increased the overhead of applications. Rather than intercept these calls, I've only got papiex to intercept the lower level calls (like read and write), that are called sparingly by the C library. 10/29/07 tmohan If PAPI_TOT_CYC is used instead of CPU_CYCLES, then we use the former instead in computing derived metrics. 10/19/07 tmohan - Changed 'used' to float for calipers. Fixed most of the warning pragmas that Phil had added in the code. Phil, could you please(!!) review the changes for this commit. I don't want more typing errrors in the code. I have tested this commit with NAMD, it seems to be in order. I'd really love it if we have a pathological threaded code with calipers -- NAMD only exercised the global sum across tasks for calipers, not in a process. Note, 'make test' will fail for the thr_derived_flops case as we no longer do a hash merge and some calipers are missed. Phil, might we want to add the hash-merge as a #ifdef? Probably not.. 10/19/07 tmohan - Optimized match_caliper to avoid calls to the C library. Inlined it as well. No user-visible change nor any change in its semantics. 10/17/07 tmohan - Following Phil's suggestion, I did the heart-rending task of removing the hash from the caliper merge. This means for manually instrumented code, we will definitely do the right thing and for auto-instrumented code we will skip caliper points -- with a warning -- when the labels don't match. Note, the previous commit with the hashed merging of the calipers did work, but rather than add code for min/max/dev, I figured removing the hash merge was the right step, painful though it might be. This change has been tested with the NAMD code. 10/17/07 tmohan - Fixed bug 4024. Typo in global merge. This commit doesn't address the min/max/dev not using the hash. That's for the next commit. 10/17/07 mucci - Added both single and double underscore wrappers for MPI Fortran 10/12/07 tmohan - Inverted the sense of narrow-print in the gptlex driver. 09/20/07 tmohan - Reverted the previous change somewhat. Now we don't force -G or -Q for gptlex, but we do issue a diagnostic message. 09/18/07 tmohan - gptlex requires exactly one of -G or -Q to be set to function sanely. The driver enforces this now, and the man page has been updated. 09/17/07 tmohan - Since GPTL now supports PAPI set domain, the driver no longer complains on getting the -U -K -I or -S flags. 09/05/07 tmohan - Fixed hpcex driver and man page. 09/05/07 tmohan - Since GPTL doesn't honor -p, -o, -Q, -U, -K, -I and -S, the driver issues a warning message to the user for these options. It still passes the options properly to libgptlex, however GPTL ignores these presently. This warning message should be removed once Jim Rosinski adds support in the backend. 09/04/07 tmohan - Fixed ioex args and its man page. - Fixed mpipex args and its man page. 08/31/07 tmohan - Created a man page for gptlex. 08/31/07 tmohan - Tested gptlex driver and made sure its options and --h are in sync Still to write the man page. But that should be easy. Jim R. will add all the options in the backend, including FILE, PREFIX, DIR, etc.. - Tested the papiex driver options, and synchronized with man page At this point papiex options are tested and fixed. Other drivers, such as mpipex remain. 08/30/07 tmohan - Lots of cleanup in the options. Testing and sync with man pages needed. - More work on gptlex options 08/29/07 tmohan - Substantial re-write of the gptlex options parsing This is now feature-complete w.r.to GPTL library. What remains? GPTL's backend now has to handle all the options including timer= and depth-limit= 08/23/07 tmohan - Updated ICE9 costs table using input from the hardware folks. 08/22/07 tmohan - Fixed the driver to set 9B events when the pmu is detected. 08/02/07 tmohan - Unified the position of % sign in the derived metrics. 07/30/07 tmohan - Removed T: and P: from the derived events. More sensible names and descriptions used now. 07/20/07 tmohan - Documented the MPI calls that are measured as part of app. MPI time on the man page. 07/19/07 tmohan - Replaced standard deviation in the output with coefficient of variation (ratio of deviation to mean). 07/19/07 tmohan - Added MPI_Gatherv and MPI_Scatter calls to the list of trapped MPI calls. The list now has all the important MPI calls. 07/17/07 tmohan - papiex now behaves like srun, and if the executable is not found in the PATH, adds "." to the search path. 07/17/07 tmohan - Added '+' to getopt string to terminate argument processing as soon as a non-option is encountered. This makes '--' unnecessary on the command line. Of course, still putting '--' is acceptable. 07/16/07 tmohan - Added costs table for ICE9A and ICE9B. These are used in getting estimates for certain derived events. The table is dumped after the derived event descriptions. The actual values used in the tables still need to be validated with Wilson. 07/16/07 tmohan - Removed --no-io-stats for papiex as an option. Since we will never build papiex with -DIO_STATS, this was unless and confusing. Also replaced checks in papiex.c to use is_ioex instead of no_io_stats. Fixed man page as well. - Fixed papiex.c to honor NO_IO_PROF and NO_MPI_PROF. Phil had accidentally disabled them earlier. 07/12/07 tmohan - Ioex now prints % I/O time for each call category (per file). 07/11/07 tmohan - Ioex now pretty-prints the output (using dot dot notation) 07/09/07 tmohan - Fixed ioex tests to work with scientific notation. 07/06/07 tmohan - ioex now prints in scientific notation. - -teach and -tall were setting the inverse option in the backend for libhpcrun. Fixed that, and made -tall default. 07/05/07 tmohan - Fixed ioex to store stuff into the papiex_perthread_data_t. This should let it handle thousands of threads being created and destroyed. Still to be tested. 06/27/07 tmohan - Fixed all the error and debug messages in main.c to the macros. 06/26/07 tmohan - Fixed caliper merge to do a hash lookup. This fixes the merge for threads and tasks. - min/max/mean/dev are now always printed in scientific notation. Of course -q always disables scientific notation for all numbers. 06/25/07 tmohan - set PAPIEX_MAX_COUNTERS to 64 from 32, as papiex -a would fail on x86, with events exceded comment. Can you confirm this is all right, Phil? - fix for bugs in stddev and mean calculations for calipers This does not include the pretty-print scientific notation for min/max/dev yet. Coming soon.. 06/08/07 mucci - Fixed leaks of memory on thread destruction - Added per thread storage that lasts the life of the process not the thread - Updated error messages (no \n) - Called PAPI_Unregister_thread, cleanup, destroy - set PAPIEX_MAX_CALIPERS to 32 - set PAPIEX_MAX_COUNTERS to 32 - Allows brutal code from Geotrace to work 06/04/07 tmohan - Changed hpcex default to -teach from -tall. 06/01/07 tmohan - Added --no-scientific to disable printing in scientific notation. 05/31/07 tmohan - Changed the printing of counters to use scientific notation. - Added presets and derived metrics for ICE9B. - Spruced up derived metrics descriptions' formatting. Added description for Phil's ideal cycles. 05/30/07 tmohan - Completed derived events description for the ice9 - Removed code duplication in the pretty printing. - Added pretty_print universally. - Added description for derived events. This isn't complete yet: I've to add a few more equations and a few derived metric descriptions are still missing. 05/29/07 tmohan - Output formatting fixes. 05/27/07 mucci - Added MPI_Init_thread wrapper 05/09/07 tmohan - Replaced fprintfs in papiex.c with macros from papiex_internal.h. Many of the fprintfs are meant to stay, Phil (they write to a different output stream; they are not diagnostics)! 05/09/07 mucci - Fixed debug/warning/error messages from driver code to print out the actual name of the driver - Fixed up event checking code for hpcex to look for A:1000 and A:B:1000 - Argh! Tons out output still does not use the PAPIEX_WARN/DEBUG/ERROR macros. fprintf's are evil Tushar. 04/24/07 tmohan - Fixed papiex -q (esp. for derived metrics) - ioex used to report access as STRIDED when the stride was zero! Fixed it to call SEQ! 04/23/07 tmohan - We compare labels when summing up calipers, and now issue a warning and skip the label if they don't match. 04/18/07 tmohan - Synced up the man page of hpcex the actual code and hpcex -h. - Synced up the man page of mpipex the actual code and mpipex -h. - Synced up the man page of ioex to the actual code and ioex -h. Also update the example as the output formatting has improved. 04/17/07 tmohan - Synced up the man page of papiex to the actual code and papiex -h. 04/12/07 tmohan - Made gptlex accept -p like the other tools. - Made hpcex -s and mpipex -s properly work. Also now these two tools won't print PAPIEX_OPTIONS as they don't use it anyway. 04/12/07 tmohan - Fixed hpcex -f, -o and -p to behave consistent with other tools. Accompanying changes in libhpcrun/monitor.c checked in already. - Minor correction in the use of -p . Made all the tools consistent. Change from -p[prefix] to -p . 04/11/07 tmohan - Cleaned up ioex output. 04/10/07 tmohan - Made -o work for all cases in using papiex. Updated -h output to dissuade the user from using -o with MPI/threads as the behavior might seem confusing to some. -f should be used for MPI/threads. 04/09/07 tmohan - Added generation support to the output filename (in case the name exists already). 04/06/07 tmohan - Cleaned up -h for all the Ex tools. 04/05/07 tmohan - Cleaned up papiex -h - Minor fix to allow an optional debug level to be passed down by hpcex. This maintains compatibility with the rest of the tools suite while allowing the user get extensive debug information from hpcrun. 04/04/07 tmohan - All PAPI-based 'ex' tools now accept and pass down -U, -K, -I and -S to set the PAPI domain 03/29/07 tmohan - Made output consistent. - Fixed regex to work with Phil's output cleaning. Made memory output the same way. 03/26/07 tmohan - For MPI runs, the master also sends its hostname now for creating the top-dir. 03/22/07 tmohan - For the ice9, we now derive Ideal MFLIPS and Ideal cycles. - For calipers we print the % in the caliper v. thread for allevent counts. 03/20/07 tmohan - Changed mpiex to mpipex in all places. 03/19/07 tmohan - Added a '-s' flag for hpcex to dump env variables. 03/19/07 tmohan - Replaced PAPIEX_MAX_CALIPERS with thread->max_caliper_entries in print_process_stats and a couple of other places. The one notable exception is print_global_stats(), where Phil has yet to introduce max_caliper_entries. When you do put the variable there, please make sure you set global_data_sums->max_caliper_entries similar to how I set it in print_process_stats(). - Fixed some regex that were using Proc cycles to use Real cycles in the verification. 03/19/07 tmohan - Fixed a bug when PAPIEX_MAX_CALIPERS is replaced with a variable. Phil, the process_data_sums is like a thread structure and when it's computed in print_process_stats(), the process_data_sums->max_calipers must be updated as it's done for a normal thread. Same applies for print_global_stats for MPI. For now I've replaced the variable use in two critical areas back to PAPIEX_MAX_CALIPERS. 03/19/07 tmohan - Made some corner cases (in summary stat computation) that were using virt_cyc for calipers, to now be under a #ifdef FULL_CALIPER_DATA - get_virt_cyc abstracts the method for computing virtual cycles. It now will return real cycles for calipers when the PAPI/native event is not set, AND FULL_CALIPER_DATA is not defined. This is just better than throwing our hands in despair. 3/19/07 mucci - Pathscale autoinstrumentation working - Calipers now only measure real cycles in addition to PAPI metrics unless FULL_CALIPER_DATA is turned on. - GCC autoinstrumentation working fully now. GNU's hsearch functions require that strings be allocated before being passed in. - Added better error checking for hash functions. - Added superfast ultohexstr() function to convert from a unsigned long address to a string. This is used for hashed lookups. - Removed more references to PAPIEX_MAX_CALIPERS, not done yet because MPI and threads can have calipers at different points. So there must be a consistency check with autoinstrumentation. 03/16/07 tmohan - MFLIPS, MFLOPS and CPU utilization use CPU_CYCLES or PAPI_TOT_CYC if available. - Removed librt from the libs preloaded, as mpiP now uses gettimeofday 03/15/07 tmohan - For the ICE9, if PAPI presets are used the we print derived metrics using the presets. This may happen if the user chooses PAPI presets or because no events are chosen and defaults are used. - PAPI_FP_INS is used as a default, if PAPI_FP_OPS is unavailable. If both aren't there, then PAPI_TOT_INS is used. 03/14/07 tmohan - Commented a line unnecessarily setting a default MPIP_SHARED_LIBS The code already sets it, and mpicc has a trouble passing the quoted args to gcc - Added tests for thr+instr+derived and mpi - Fixed output formatting when printing memory and rusage info - Added tests for instrumented calipers and its threaded version. - 'make test' now also runs the run_ex_tests script - Fixed a regex to work on architectures (derived metrics test) - Fixed rules in the clean targets for the test cases 03/09/07 tmohan - Added test cases for papiex 03/09/07 tmohan - Completely rewrote the printing code. The control flow is identical now for all cases. - This is a major-rewrite; you will see changes all over. - Tested for uniproc/unthreaded, threads, MPI and calipers. 03/08/07 tmohan - We now print event totals after the min/max/dev for thread/MPI programs 03/08/07 tmohan - Corrected the usage of the caliper (.used) variable for min/max/mean 03/08/07 tmohan - Refactoring in the printing code: Thread stats are now printed from the print_process routine in the same way for all threads. More changes coming! 03/07/07 tmohan - Integrated %MPI cycles and %I/O cycles with other derived metrics. - Fixed MPI and threads to print the above metrics in the global summary. 03/06/07 mucci - Standardized debugging and error message macros. papiex_internal.h - Enabled verbosity for PAPI initialization - Use PAPI for LD_LIB_PATH definitions. - Complete shell var dumping support. - Options are now parsed during library init like monitor. - Fixed argument handling when the process modifies argv. - Unified PC lookup routine - Threaded gcc instrumentation test - From SVN rev 33332 03/06/07 tmohan - Fixed a troublesome bug which caused aborts in MPI programs. - Fixed (-a) to work for MPI programs. 03/06/07 tmohan - We now use process sums instead of means in MPI summaries - Derived and pretty statistics should now work for MPI programs. - Testing of MPI (and MPI+threads) needed. 03/06/07 tmohan - Added a function to print auto stats for all calipers - pretty printing of calipers with indentation - Added inline functions for pretty printing of auto stats 03/05/07 tmohan - Added more L2 derived stats for unknown architectures - Added PAPI_L1_DCA as an alternative to PAPI_LST_INS 03/05/07 mucci - More TAUex options and environment variables added - Env setting happens in main, arg parsing in parse_args. - More shell output dumping - Added early debugging to papiex - Added shell output to papiex - Updates to makewraplib to fallback on dlsym() if a symbol is NULL when we attempt to use it. This can happen when one library uses a symbol defined in another, but the _init routine of the second hasn't run and thus define it. Fixes the debugging issues problems we see with ioex. 03/01/07 tmohan - Derived and auto stats now work for threaded applications. 02/28/07 mucci - Added lots of support for pathscale auto instrumentation and two options -G or --gcc and -Q or -pathscale. Can control loop and function level instrumentation. 02/25/07 tmohan - Added (-a) support using PAPI_PRESETS for unknown architectures. The code will useful and available presets for the architecture. It will ensure that the most important presets are used, if some presets are not compatible. It will also print derived metrics such as MFLOPS, etc. This has been tested on the Pentium M, but should work on all architectures. More testing is needed to check no typos exist in the events, and all useful presets are utilized. 02/20/07 mucci - Added support for multiple -d (debug) options for increased verbosity. 02/17/07 mucci - Added rules files for TAU and GPTL - Fixed up build - Typed a few ints to unsigned longs - Made command line arguments more intuitive to make. See INSTALL file. 02/15/06 tmohan - Created driver for gptl 02/02/06 tmohan - Updated mpiex documentation to mention that the output path includes the problem size. This is used by post-processing scripts, which use the file name to figure the problem size. A corresponding change has been made in the mpiP code that creates the file. 01/24/06 tmohan - Fully functionlal ioex with seek stats, access pattern detection and MPI I/O. 12/29/06 tmohan - Made a separate libioex.so, that is built with -DIO_STATS. - A symlink ioex that provides i/o stats - papiex is now built by default without -DIO_STATS However, it can be built with -DIO_STATS, to provide additional io stats. 12/28/06 tmohan - Added functionality to get per-thread I/O stats. This can be disabled with --no-io-stats Note: This requires -DIO_STATS to be set. 12/20/06 mucci - Added GCC -finstrument function support - Added VM and RSS peak - Better formatting and output of memory stats - Fixed bug in output of arguments - Fixed bug not to include libpapiexmpi if HAVE_MPI is not set - Removed extra blank lines in print_thread_stats - Made mpiex take -d instead of -g for debugging (standard argument) - Made mpiex take -D instead of -g - Allowed -d to work for hpcex and mpiex for monitor and PAPI calls - Fixed argument handling - Updated documentation for the above - Some improvements to -h output for hpcex, more work needed ** - Test cases for puts and write and gcc -finstrument-functions - Added --no-gcc-prof - Added lots of documentation for other long options. - Fixed up with NO_IO_PROF and NO_MPI_PROF options - Fixed up on detection of caliper point (caused by moving to static sized labels) 12/15/06 tmohan - Fixed a small bug in the all threads data gather routine that was causing a SEGV. 12/14/06 mucci - Added -s argument to makewraplib.pl to automatically call the system call if one is defined and available for the wrapper. - Modified Makefile to use the -s argument for the I/O wrappers. - These mods will allow programs that use constructors that run before libmonitor AND do I/O to function properly. 12/13/06 mucci - Added --no-mpi-gather to disable gathering of data to the front end using MPI. - Upgraded to the latest monitor API - Added argument output of the target executable - Changed control path to always use process_fini, so that we can handle MPI codes that do not call MPI_Finalize(). - Fixed all error and warning messages to be of the form: libpapiex error/warning: xxx failed. (strerror) - Removed static definition of MAX_THREADS 12/11/06 tmohan - Fixed a SEGV we got when we used papiex in debug mode (-d) with the I/O wrapper routines. 12/11/06 tmohan - Removed trailing % in MPI and I/O time - Moved -r and -x output to above the event count output. 12/10/06 mucci - Added HAVE_SHARED_LIBIBERTY and rules to build shared libiberty - Format help output for 80 columns, clean up option descriptions - Fix MONITOR_INC_PATH define 12/08/06 tmohan - Fixed a segv we were getting for MPI threaded programs. 12/08/06 tmohan - Global start and finish time is now printed. - Improved global summary by adding executable and start/stop time information. 12/08/06 tmohan - Process start and finish time is now printed. - Improved process summary by adding executable and start/stop time information. 12/07/06 tmohan Fixed capitalization and blank-line uniformity in output. 12/06/06 tmohan - Added %time in MPI and I/O as a stat that's printed - Fixed wrapper time calculations for MPI programs 12/06/06 mucci - More updates to build paths and rpaths 12/05/06 tmohan - Got the I/O and MPI call profiling to work. Flag semantics are reversed (see log entry below). Profiling is enabled by default. 12/01/06 tmohan - Added --set-mpi-prof and --set-io-prof to do I/O profiling. It doesn't work yet. Once it works, profiling will be enabled by default and the sense of the flags reversed. 11/28/06 tmohan - Std. deviation overflow problem properly fixed. 11/28/06 tmohan - Minor changes: PAPIEX_LD_LIBRARY_PATH default in the Makefile has been commented out. Output overflow check for real cycles' standard deviation printing. 11/27/06 tmohan - Added support to use PAPIEX_LD_LIBRARY_PATH as a means to add search paths to LD_LIBRARY_PATH. The variable can be set at compile time (-DPAPIEX_LD_LIBRARY_PATH) or via the environment. In either case, it prepends to the LD_LIBRARY_PATH, with the environment overriding the compile-time set path. Also added --no-ld-library-path to disable all changes to LD_LIBRARY_PATH variable's value. 11/26/06 tmohan - Fixed a number of issues related to output, mostly cosmetic. - Added a flag -b to disable generating summary statistics - Modified the semantics of -w: It now means, don't print anything to screen, just write to files. -n has the opposite sense. - Minor correction made in Rules.monitor to avoid -I from appearing twice in the include path. 11/24/06 mucci - Added PAPI real cyc monitor to IO/MPI monitors - Build can only reference install packages not source trees of other packages - Added MPI_INC_DIR - Added install targets of other libraries (io and MPI monitors) - Updated INSTALL file - Conditionally install mpiex and mpiex man pages 11/23/06 mucci - Added -DHAVE_MPI -DHAVE_MPIP -DHAVE_HPCTOOLKIT 11/20/06 mucci - Added lib.so install target - Added LDFLAGS to build for external rpath specifiers 11/10/06 tmohan - PapiEx output now goes to stderr (not stdout), to avoid problems with libc closing the stdout descriptor and garbling the main app output. - By default, PapiEx now ALWAYS writes file and stderr. File output is disabled with -n. stderr output is disabled when file output is requested using -f, -p or -o. 11/08/06 tmohan - Changed the semantics of -o flag for mpiex (and papiex -M). The new semantics use -o to set the output file name (like papiex, see the change below), and not for disabling mpiP profiling during initialization (as mpiP runtime options page documents). This changes sets -o for the output file name for all papiex-based tools. To be compatible with mpiP, we translated -o to -u for mpiP in the driver (main.c). Thus the runtime MPIP environment variable sees -u for a -o set in mpiex (or papiex -M-o,). 11/08/06 tmohan - Added a -o flag to write output to a particular file (unithreaded). - Fixed Rules.papi to correctly set PAPISHLIB using a shell glob - Added test in driver (main.c) to make -o, -p, -f and -n mutually exclusive - papiex now writes summary output from multi-thread runs and multitask runs to a file (process.summary and global.summary respectively) under the output hierarchy. 11/06/06 tmohan - Substantial refactoring in the code to print stats. Duplicate code has been removed, and utility functions defined. - Simplified use with MPI apps; see the top-level Makefile. In short, -DUSE_MPI and CFLAGS+=-I/opt/mpich2/include is enough. For LAM and other implementations, do -DUSE_MPI and CC=mpicc Removed MPI_INCDIR variable, and fixed the INSTALL documentation. 11/02/06 tmohan - Removed -DHAVE_MPIP and -DHAVE_HPCRUN completely. From now on these variables do not need to be set. mpiP and hpcrun support is automatic. The user may want to modify Rules.mpiex and Rules.hpcrun, but that should normally not be necessary. Made appropriate changes to the INSTALL file. 11/02/06 mucci - Fixed CC assignment in Rules.gmake - Updated to install in /usr/local like configure. - Updated INSTALL file 11/02/06 tmohan - Summary output is now printed to stdout instead of stderr. Batch systems will probably benefit from this. 10/20/06 tmohan - papiex -M can now be used to pass runtime arguments to the mpiP lib. 10/20/06 tmohan - mpiex now handles mpiP 3.0.1's new options. See, http://mpip.sourceforge.net/#Runtime_Configuration. This doesn't mention -m -x options. Support for these has been added. Also note, -d's meaning now follows mpiP's semantics in the case of mpiex. 10/13/06 tmohan - Tested and added code for derived metrics for unithreaded executables 10/9/06 tmohan - Moved functions from papiex.c that ought to have been in the driver. Now papiex does not link with libpapiex.so 10/9/06 tmohan - Fixed Rules.gmake to continue if install dirs fail 10/05/06 tmohan - Added native events for MIPS malta (with the -a flag) This work is not complete. Presently this uses all the native events. We will refine this to useful events and then derive metrics off these events. 10/05/06 tmohan - Moved -a flag-handling code to papiex.c from main.c 10/04/06 tmohan - Moved sample output files to subdir samples Suitably modified papiex.html.in 9/30/06 tmohan - Added examples and updated the papiex HTML page 9/30/06 tmohan - Made the man page for mpiex and hpcex 9/29/06 tmohan - Made the man page more current. 9/19/06 tmohan - Renamed -o to -f . This now is the same as mpiex and hpcex. 9/17/06 tmohan - Added -g and -o (mpiP-specific flags) - Added -p flag to hpcex. Note, this also requires you to use a suitably patched libhpcrun (one which honors HPCRUN_OUTPUT_PREFIX env. variable). 9/17/06 tmohan Added -p argument support for mpiex 9/14/06 tmohan Rationalized the output flags for papiex -p to give a prefix path -o to give a top-level dir for all output files -n Don't create any output files. This is opposite to -w of the past. Removed -f and -w flags. All output files are created with the following structure: .papiex.. 9/09/06 tmohan Fixed Rules.gmake to use command-line CC and ARCH if set 9/02/06 tmohan - Added support in papiex to drive hpcrun - The user needs to create a symlink to papiex named hpcex - hpcex is passed the same arguments as hpcrun - The hpcex driver will preload libhpcrun.so (and libmonitor.so) - hpcex has been tested to work with a modified version of hpcrun that uses libmonitor It should also work with an unmodified version of hpcrun, but then hpcex must be built without the -DHAVE_MONITOR flag. This latter feature has not been tested. - Rules.hpcex is used to define the hpcex library name - Created Rules.mpiP to pass the mpiP library names at compile time - Note: -DHAVE_HPCRUN and -DHAVE_MPIP can be safely be kept on even on platforms that don't have the libraries, as ld will merely issue an error message. The flags are used only at install time to decide whethe to create symlinks to the papiex binary or not. 8/26/06 tmohan - Added support in papiex to load mpiP libraries for profiling MPI libraries. There are two ways to do this: a) Use papiex as a driver and only derive mpiP information: To do this, just create a symlink mpiex to papiex. Then simply run: mpiex my-mpi-prog, or mpiex -h b) Use papiex to obtain PAPI data AND mpiP data: run: papiex -M my-mpi-prog In this mode, arguments can be given to mpiP using the MPIP environment variable. 8/22/06 tmohan - Added conditionals to deal specially with the case when MPICH2 is found on the system. If mpicc is from an MPICH installation, then automatically all MPI symbols are derived from the executable. This means the papiex executable does NOT need to be linked using mpicc for MPICH installations. For all other MPI implementations, the code will use mpicc and link with the MPI library. In short, all the user needs to do is -DUSE_MPI and the makefiles and code will act based on the MPI implementation found. 8/21/06 tmohan - Min/max computation added to threaded and MPI programs - Std. deviation is now being printed. 8/19/06 tmohan - Removed an strcpy to a NULL pointer. This code was causing a seg fault when HAVE_MONITOR isn't set. 8/16/06 tmohan - The default directory for printing stats is now meaningfully set to .papiex.pid In the case of MPI programs, the pid is determined by the master (and all the tasks use this pid). Note: all statstic writing only happens with the -w flag 8/15/06 tmohan - papiex will now gather data for MPI executables properly and also produce statistics across all tasks / threads. Threaded MPI executables should work fine. Added a new flag -w. If this flag is used then stats are written in a subdirectory. MPI_Gather is used rather than point-to-point MPI operations for the MPI stat gathering. The Makefile will use -DUSE_MPI by default, and mpicc will be used. 8/04/06 mucci - Added generation of tauex executable and -T flag processing for TAU 8/04/06 tmohan - Added more info. to the -V flag 8/03/06 tmohan - Changed -F to -o in line with normal Unix shell commands - Also fixed a minor bug introduced when the USE_MPI flag code was added. 8/02/06 tmohan - Modified a label field in the caliper structure so that it could be embedded within the caliper structure. Also had to modifiy the strdups to strncpy This change is needed to get the structure passed across easily as a contigous st of bytes over MPI 7/30/06 tmohan - Added support for unthreaded MPI programs. *** Significant code change here *** To use this feature -DUSE_MPI must be set, and CC=mpicc MPI_Finalize is intercepted and statistics are gathered. These are printed out in papiex_thread_shutdown routine. The global variables is_mpied, myrank and ntasks are set for all programs that use MPI calls (not merely link with the MPI library). Statistics printed include global means for all counter values. Variance remains to be calculated. Thread support remains to be added (should not be difficult as the complete thread-specific papiex structure is sent to the master). 7/27/06 tmohan - Renamed the -o flag to -I (for interrupt mode) 7/27/06 tmohan - Added '-S' flag for supervisor domain counting 7/26/06 tmohan - Added support for a '-a' flag to papiex Currently, this adds non-derived PAPI preset events to the list of events to be monitored. 7/25/06 mucci - Fixed event listing bug - Tushar added PAPI memory info and -V flag for substrate info 8/22/05 v0.99rc2 - Fixed up man page to be consistent with options - Added memory support for Linux - Fixed bug in -V and -L - Removed -t flag 4/25/2005 v0.99rc1 - Build fixes and update to Monitor 0.99rc6 - Better install of shared libraries - Bug fix of run_tests script 2/11/2005 v0.98 - Added -F output for output - Added -L event option for full description - Improved event description - Added papiex calipers. Insert papiex_start/stop in user code. - Added conditonal compilation macros for calipers. - Added fortran tests for calipers. - Added LD_LIBRARY_PATH inside of papiex for perfect execution every time. 2/2/2005 v0.92 mucci - Added Monitor support - Added shell output variable support 2/1/2005 v0.91 mucci - Made PAPIEX_OUTPUT environment variable.