<commit_before>===============================================================================
PAPI 3.0.8 RELEASE NOTES                                            02 Mar 2005
===============================================================================

This file documents the changes since the PAPI 3.0.7 release.
For details on installing PAPI on your machine, consult the INSTALL.txt file
in this directory.

For specific and detailed information on changes made in this release, grep
the ChangeLogP308.txt file for keywords of interest or go directly to the PAPI
cvs tree.


GENERAL NOTES
===============================================================================
This is a maintenance release for PAPI 3.
It contains a number of Bug fixes and feature enhancements, 
as documented below.

As always, if you identify strange behavior or demonstrable bugs, please
contact the PAPI team or one of the PAPI development lists.

And visit the PAPI website for the latest updates:
http://icl.cs.utk.edu/papi/

CHANGES IN PAPI 3.0.8 SINCE PAPI 3.0.7
===============================================================================

Major Issues:
-------------	
* src/Rules.perfctr:
  - add configure switch --with-tls=<yes|no>. By default, it is '
    yes' and running the checking code. When it is 'no', -DNO_TLS
    passed to gcc.

* src/linux-ia64.c, src/linux-ia64.h, src/pfmwrap.h:
  - Fixes for SGI Propack 3 on Altix...
    This happens because it's a Perfmon 2 platform + NPTL threads. Got
    rid of those pesky, pesky pids instead of nice little tids.

* src/linux.c:
  - Fixed a bug that showed up on the Nocona. A string was being used
    as HUGE but declared as MAX. This bug also later showed up on other
    linux systems.
  - When PAPI is run as SUID, often links in /proc are inaccessible.
    The fix is simply to tolerate inaccessible /proc information since 
    this doesn't affect library operation at all. In this case, the 
    exe_name and full_name are NULL strings, and the memory map is empty. 
    Debug error messages are still raised.
    The executable name can be empty, as can the memory map.


Bug Fixes:
----------
* src/extras.c, src/p4_events.c, src/papi.c, src/papi_protos.h:
  - Changes to address the thread-unsafe behavior of _papi_hwd_code_to_{name,descr}().
    Rather than change the calling sequence of these routines in every substrate,
    I changed the way the routines are called from extras.c, wrapping them in PAPI_lock/unlock pairs.
    Pentium 4 was the only substrate that posed a thread risk. That hole has now been plugged.

* src/extras.c:
  - Ensure that _papi_hwi_using_signal is always incremented.

* src/multiplex.c:
 - Prevent the PAPI_EINVAL error if MPX_cleanup is called multiple times
   for a given set of MPX events (which happens in ctests/multiplex1).

* src/papi_internal.c:
  - Ensure that all native events that we fail to add during a given call 
    to add_native_events() get cleaned out of the NativeInfoArray. 
    This change makes sure we examine all NativeInfoArray event entries 
    to see if they failed and need to be removed.

* src/x1-presets.h:
  - Deprecated PAPI_TOT_IIS for X1. Previous definition was giving random 
    results from 0 to very large.

* src/linux-ia64.c:
  - Fix for not compiling using libpfm 3.0
  - Fix for software overflowing using PFM 3.0

* src/irix-mips.c:
  - Fix for software overflow on irix

* src/extras.c, src/linux-ia64.c, src/papi.c:
  - Fixes for forced overflow, first we had no default for a sigaction so in some
    cases a sigaction wasn't getting setup, and ia64 didn't have dispatch_timer
    routine implemented at all. Added better debugging messages.
* src/genpapifdef.c:
  - Modifications to work around Cray Fortran bug with maximum negative integer values.

* src/papi_fwrappers.c:
  - Modified fwrappers to support Cray X1 'string length at end' convention.

* src/Rules.pfm:
  - Fixed build for ALTIX. This was building with PFM in our directory,
    but there should be always building with the pfm in /usr.

* src/configure, src/configure.in:
  - Allowed configure to detect the altix.

* src/Makefile.solaris-ultra, src/Makefile.solaris-ultra-64bit:
  - Removed -R argument to shared link, which was putting the wrong path
    in to the run-time loader.
  - Removed the -h flag to the shared link, which was (in the 64 bit case)
    setting the wrong name of the library.
    Neither is required.

* src/Makefile.linux-perfctr-{athlon, p3}, src/papi_internal.c:
  - Created a work-around for a situation found on Athlon and PIII in which
    DERIVED_SUB events would occasionally generate small negative results.
    Now, for these platforms only, small negatives (>= -3) are trapped and 
    forced to zero. This bug was causing occasional failures in ctests/memory.c

* src/ctests/overflow.c, src/ctests/overflow2.c:
  - For cases where software overflow is used on PAPI_TOT_INS, care must be
    taken to ensure that the sampling rate is faster than the overflow rate.
    Since for linux the sampling rate is fixed at 10 msec, the overflow threshold
    is now set to: mythreshold = hw_info->mhz*10000*2 for software overflow 
    when using TOT_INS.

* src/ftests/native.F:
  - Added native events for Cray X1.

* src/ftests/ftests_util.F:
  - Modified ftest_fail to match test_fail.
    Now skips on PAPI_EPERM so that second.F will skip the same as second.c

* src/ctests/overflow_force_software.c:
  - Changed the verification to check overflows and removed the printing of
    the event when hardware overflowing is enabled as reading an event that
    is on hardware overflow doesn't mean anything.
  - Changes to check for derived events, and to get rid of the need for strcmp
    on os names.
  - Fix to check for compound derived events which CAN be used to overflow
    on in hardware (Currently only p4 has them).  This allows P4 to use
    FP_INS instead of TOT_INS


Enhancements:
-------------
* src/utils:
  - Added a utils directory with an initial collection of useful tools.
    These tools are repurposed from the ctests directory, but are generally
    useful enough to warrant their own directory and installation option.
    Man pages and html pages are available for each utility.

* src/perfctr-2.6.13:
  - Added Perfctr-2.6.13 to the repository. Please, don't use perfctr-2.4
    unless perfctr-2.6.x doesn't work for you. There is NO linkage between 
    perfctr versions and linux kernel versions. Perfctr 2.6.x works just fine
    with linux 2.4.

*src/libpfm-3.x:
  - Updated (Itanium) libpfm to 3.1, current as of 2004-12-21.

* src/linux-ia64.{c,h}:
  - Added MMTIMER support on Altix for good global timing.

* src/power4.c:
  - Add 20 cache and branch events contributed by <NAME>.
    This nearly doubles the number of events available on POWER4.

* src/p3_events.c, src/perfctr-p3.c, src/perfctr-p3.h:
  - Modifications to native event tables for Pentium II, III, Athlon and Opteron to
    dynamically generate all combinations of events that support MESI (Intel) or
    MOESI (AMD) bits. Similar to the way that Pentium 4 supports groups and
    modifiers, but MUCH simpler.

* src/p3_events.c:
  - Added / modified a number of events to Opteron per <NAME>'s suggestions:
	PAPI_L2_TCH, PAPI_L1_ICH, PAPI_L2_DCW, PAPI_L1_LDM, PAPI_L2_LDM
  - Added six new undocumented native events to Opteron event table per Phil's request.
    These measure NUMA HyperTransport memory and IO transfers.
    Run utils/native_avail on Opteron and look at the last six entries.

* src/p4_events.c:
  - Implemented PAPI_L1_ICA and PAPI_L1_ICM per suggestions from <NAME>.

* src/Makefile.linux-perfctr-{em64t-32bit, opteron-32bit}:
  - Added 32 bit library support for 64 bit platforms. This has been tested on
    an Opteron. All tests pass. Configure script works also.

* src/any-null.{c,h}:
  - This seems to be working again.

* src/papi_internal.h:
  - If you set PAPI_DEBUG to ALL or THREADS and compile with -DDEBUG,
    now the internal eventset lookup routine will return NULL if you
    lookup another threads eventset. This should help debug possible
    problems on architectures where signals may be delivered to any threads.
    Under normal operation, this is not turned on for performance reasons.

* src/power3.h, src/power4.h:
  - Added pm_data_t to hwd_control_state_t. This contains per thread
    space for the counters!


Known Bugs:
-----------
* src/x1.c:
  - A subtle bug was uncovered in the use of hardware event overflow on the 
    X1 P-chip. It appears that once overflow is turned on, it cannot be turned
    off without exiting the application. This affects the overflow_force_software()
    test on X1.<commit_msg>Added notes about the IA64 bugs on Redhat kernels (interrupt on overflows stop!) and about the as yet, somewhat unverified bug on Power 4/AIX .50 BOS and .40 PM kernel where PMAPI seems to lose thread context information when we have lots of threads. It happens in the kufrin test case. it doesn't happen when we have 4 threads, enable PAPI debugging or run the case under strace. But with 8 threads, we're hosed. Can NCSA try this on their power 4?<commit_after>===============================================================================
PAPI 3.0.8 RELEASE NOTES                                            02 Mar 2005
===============================================================================

This file documents the changes since the PAPI 3.0.7 release.
For details on installing PAPI on your machine, consult the INSTALL.txt file
in this directory.

For specific and detailed information on changes made in this release, grep
the ChangeLogP308.txt file for keywords of interest or go directly to the PAPI
cvs tree.


GENERAL NOTES
===============================================================================
This is a maintenance release for PAPI 3.
It contains a number of Bug fixes and feature enhancements, 
as documented below.

As always, if you identify strange behavior or demonstrable bugs, please
contact the PAPI team or one of the PAPI development lists.

And visit the PAPI website for the latest updates:
http://icl.cs.utk.edu/papi/

CHANGES IN PAPI 3.0.8 SINCE PAPI 3.0.7
===============================================================================

Major Issues:
-------------	
* src/Rules.perfctr:
  - add configure switch --with-tls=<yes|no>. By default, it is '
    yes' and running the checking code. When it is 'no', -DNO_TLS
    passed to gcc.

* src/linux-ia64.c, src/linux-ia64.h, src/pfmwrap.h:
  - Fixes for SGI Propack 3 on Altix...
    This happens because it's a Perfmon 2 platform + NPTL threads. Got
    rid of those pesky, pesky pids instead of nice little tids.
  - Added code to use the MM timer on the Altix. This provides synchronized
    RTC's across the system.

* src/linux.c:
  - Fixed a bug that showed up on the Nocona. A string was being used
    as HUGE but declared as MAX. This bug also later showed up on other
    linux systems.
  - When PAPI is run as SUID, often links in /proc are inaccessible.
    The fix is simply to tolerate inaccessible /proc information since 
    this doesn't affect library operation at all. In this case, the 
    exe_name and full_name are NULL strings, and the memory map is empty. 
    Debug error messages are still raised.
    The executable name can be empty, as can the memory map.


Bug Fixes:
----------
* src/extras.c, src/p4_events.c, src/papi.c, src/papi_protos.h:
  - Changes to address the thread-unsafe behavior of _papi_hwd_code_to_{name,descr}().
    Rather than change the calling sequence of these routines in every substrate,
    I changed the way the routines are called from extras.c, wrapping them in PAPI_lock/unlock pairs.
    Pentium 4 was the only substrate that posed a thread risk. That hole has now been plugged.

* src/extras.c:
  - Ensure that _papi_hwi_using_signal is always incremented.

* src/multiplex.c:
 - Prevent the PAPI_EINVAL error if MPX_cleanup is called multiple times
   for a given set of MPX events (which happens in ctests/multiplex1).

* src/papi_internal.c:
  - Ensure that all native events that we fail to add during a given call 
    to add_native_events() get cleaned out of the NativeInfoArray. 
    This change makes sure we examine all NativeInfoArray event entries 
    to see if they failed and need to be removed.

* src/x1-presets.h:
  - Deprecated PAPI_TOT_IIS for X1. Previous definition was giving random 
    results from 0 to very large.

* src/linux-ia64.c:
  - Fix for not compiling using libpfm 3.0
  - Fix for software overflowing using PFM 3.0

* src/irix-mips.c:
  - Fix for software overflow on irix

* src/extras.c, src/linux-ia64.c, src/papi.c:
  - Fixes for forced overflow, first we had no default for a sigaction so in some
    cases a sigaction wasn't getting setup, and ia64 didn't have dispatch_timer
    routine implemented at all. Added better debugging messages.
* src/genpapifdef.c:
  - Modifications to work around Cray Fortran bug with maximum negative integer values.

* src/papi_fwrappers.c:
  - Modified fwrappers to support Cray X1 'string length at end' convention.

* src/Rules.pfm:
  - Fixed build for ALTIX. This was building with PFM in our directory,
    but there should be always building with the pfm in /usr.

* src/configure, src/configure.in:
  - Allowed configure to detect the altix.

* src/Makefile.solaris-ultra, src/Makefile.solaris-ultra-64bit:
  - Removed -R argument to shared link, which was putting the wrong path
    in to the run-time loader.
  - Removed the -h flag to the shared link, which was (in the 64 bit case)
    setting the wrong name of the library.
    Neither is required.

* src/Makefile.linux-perfctr-{athlon, p3}, src/papi_internal.c:
  - Created a work-around for a situation found on Athlon and PIII in which
    DERIVED_SUB events would occasionally generate small negative results.
    Now, for these platforms only, small negatives (>= -3) are trapped and 
    forced to zero. This bug was causing occasional failures in ctests/memory.c

* src/ctests/overflow.c, src/ctests/overflow2.c:
  - For cases where software overflow is used on PAPI_TOT_INS, care must be
    taken to ensure that the sampling rate is faster than the overflow rate.
    Since for linux the sampling rate is fixed at 10 msec, the overflow threshold
    is now set to: mythreshold = hw_info->mhz*10000*2 for software overflow 
    when using TOT_INS.

* src/ftests/native.F:
  - Added native events for Cray X1.

* src/ftests/ftests_util.F:
  - Modified ftest_fail to match test_fail.
    Now skips on PAPI_EPERM so that second.F will skip the same as second.c

* src/ctests/overflow_force_software.c:
  - Changed the verification to check overflows and removed the printing of
    the event when hardware overflowing is enabled as reading an event that
    is on hardware overflow doesn't mean anything.
  - Changes to check for derived events, and to get rid of the need for strcmp
    on os names.
  - Fix to check for compound derived events which CAN be used to overflow
    on in hardware (Currently only p4 has them).  This allows P4 to use
    FP_INS instead of TOT_INS


Enhancements:
-------------
* src/utils:
  - Added a utils directory with an initial collection of useful tools.
    These tools are repurposed from the ctests directory, but are generally
    useful enough to warrant their own directory and installation option.
    Man pages and html pages are available for each utility.

* src/perfctr-2.6.13:
  - Added Perfctr-2.6.13 to the repository. Please, don't use perfctr-2.4
    unless perfctr-2.6.x doesn't work for you. There is NO linkage between 
    perfctr versions and linux kernel versions. Perfctr 2.6.x works just fine
    with linux 2.4.

*src/libpfm-3.x:
  - Updated (Itanium) libpfm to 3.1, current as of 2004-12-21.

* src/linux-ia64.{c,h}:
  - Added MMTIMER support on Altix for good global timing.

* src/power4.c:
  - Add 20 cache and branch events contributed by <NAME>.
    This nearly doubles the number of events available on POWER4.

* src/p3_events.c, src/perfctr-p3.c, src/perfctr-p3.h:
  - Modifications to native event tables for Pentium II, III, Athlon and Opteron to
    dynamically generate all combinations of events that support MESI (Intel) or
    MOESI (AMD) bits. Similar to the way that Pentium 4 supports groups and
    modifiers, but MUCH simpler.

* src/p3_events.c:
  - Added / modified a number of events to Opteron per <NAME>'s suggestions:
	PAPI_L2_TCH, PAPI_L1_ICH, PAPI_L2_DCW, PAPI_L1_LDM, PAPI_L2_LDM
  - Added six new undocumented native events to Opteron event table per Phil's request.
    These measure NUMA HyperTransport memory and IO transfers.
    Run utils/native_avail on Opteron and look at the last six entries.

* src/p4_events.c:
  - Implemented PAPI_L1_ICA and PAPI_L1_ICM per suggestions from <NAME>.

* src/Makefile.linux-perfctr-{em64t-32bit, opteron-32bit}:
  - Added 32 bit library support for 64 bit platforms. This has been tested on
    an Opteron. All tests pass. Configure script works also.

* src/any-null.{c,h}:
  - This seems to be working again.

* src/papi_internal.h:
  - If you set PAPI_DEBUG to ALL or THREADS and compile with -DDEBUG,
    now the internal eventset lookup routine will return NULL if you
    lookup another threads eventset. This should help debug possible
    problems on architectures where signals may be delivered to any threads.
    Under normal operation, this is not turned on for performance reasons.

* src/power3.h, src/power4.h:
  - Added pm_data_t to hwd_control_state_t. This contains per thread
    space for the counters!


Known Bugs:
-----------
* src/x1.c:
  - A subtle bug was uncovered in the use of hardware event overflow on the 
    X1 P-chip. It appears that once overflow is turned on, it cannot be turned
    off without exiting the application. This affects the 
    overflow_force_software() test on X1.

* src/linux-ia64.c:
  - On many Redhat IA64 systems, and this includes SGI's Propack 3 and 4,
  there is a bug in the pfmon code (the kernel counter subsystem) that
  causes interrupts to stop being delivered to the user code. This can
  be seen by repeatedly running the profile_pthreads test case. You will
  either get an error message from PFM_RESTART or you will see that the
  PAPI_FP_OPS counter has gone to 0 or a positive value. This does not
  happen on stock 2.4 kernels that have been properly patched with Bjorn's
  IA64 update. 2.6 kernels do not have this issue. If you have a kernel
  that exhibits this problem, please send the name to us.

* src/aix.c:
  - On AIX/Power 4 systems, using highly threaded programs and multiplexing
  occasionally fails. We believe this is due to a bug in the underlying PMAPI
  subsystem that loses context. With low number of threads, this doesn't
  happen. This can be seen by running the kufrin test case. This has been 
  verified on a system with 192.168.3.11 of the Base Operating System and
  192.168.3.11 of the Performance Monitor API Kernel.

  
{'fraction_non_alphanumeric': 0.09333403207210984, 'fraction_numerical': 0.015197568389057751, 'mean_word_length': 3.386896551724138, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2174052', 'n_tokens_mistral': 5854, 'n_tokens_neox': 5508, 'n_words': 2574}