2015-03-02  

  * bcc508a9 src/components/perf_event/pe_libpfm4_events.c: Thanks much to Gary
  Mohr for the patch:  This patch fixes a problem in the perf_events component
  that could cause get event info to produce incorrect results. The problem was
  reported by Harold Servat and occurs when the functions
  PAPI_event_name_to_code and PAPI_get_event_info are called for an event with
  a mask (name:mask) and then called again for the event without a mask (name).
  When this is done the second call to PAPI_get_event_info will incorrectly
  return the event name and mask from the first call (name:mask).  This patch
  also corrects a problem found with valgrind which was causing memory on the
  heap to get stranded.  We were passing a char **event_string to the libpfm4
  encode function and he was allocating some memory and giving us back a
  pointer to the allocated space.  The code in PAPI was responsible for freeing
  this space but failed to do so.  After looking closer at the PAPI code, it
  does not need the information returned in this space so the patch changes the
  code to not ask for the information so that libpfm4 no longer allocates heap
  space.

  * 62e90303 src/Makefile.inc src/configure src/configure.in...: Generating
  pkg-config files for papi  Thanks to William Cohen for this patch (and to
  Phil Mucci for the patch review).  Some software makes use of pkg-config
  (http://www.freedesktop.org/wiki/Software/pkg-config/) when using libraries. 
  pkg-config selects compiler flags and libraries for compiling user code based
  on the installation location of the package. It could make it a bit easier to
  build other software on papi by abstracting where the libraries are
  installed.  Rather than having some complicated path to the installed
  library, users could use "pkg-config --libs --cflags papi" to get that
  information for the compile.  If there are multiple versions of papi
  available on the machine, the user could get a particular one with something
  like "pkg-config --libs --cflags papi-5.4.0".

2015-02-28  

  * f6bc16c6 src/papi_events.csv: Add support for ARM 1176 cpus  This is the
  chip in the original Raspberry Pi.  With the recently released Raspberry Pi
  3.18.8 kernel perf_event support is finally enabled by default.

2015-02-27  

  * 74801065 src/papi_events.csv: Add ARM Cortex A7 support.  Tested on a
  Raspberry Pi 2 board.

2015-02-25  

  * 71e6e5e5 src/ctests/krentel_pthreads.c: Sync thread exit in
  krental_threads.c  Thanks to William Cohen for this patch and to Phil Mucci
  for approving it.  William Cohnen and Michael Petlan noticed that this test
  can have threads dangling after the main thread is done.  This patch tracks
  the created threads and ensures that they are joined before the code exits. 
  Note: There is still some problem remaining. For example, the following test
  will sometimes (maybe 1 of 10 runs) generate an error message. >
  ./ctests/krentel_pthreads 8 2000 10 .... [10] time = 8, count = 38110, iter =
  20, rate = 1905500.0/Kiter PAPI Error: thread->running_eventset == NULL in
  _papi_pe_dispatch_timer for fd 14!. [0] time = 8, count = 38161, iter = 20,
  rate = 1908050.0/Kiter krentel_pthreads.c               PASSED

2015-02-20  

  * c0de16d8 INSTALL.txt: Added additional notes and examples for the MIC. 
  Specify how to use qualifiers to set exclude_guest and exclude_host bits to
  0.  Use micnativeloadex to run the utilites.

2015-02-11  

  * 65825ef7 src/utils/native_avail.c: Change papi_native_avail to refer to
  event qualifiers (qual) rather than event masks.  Thanks to Gary Mohr for
  this patch and the following notes.  This patch file fixes one bug and
  replaces the term "Unit Mask" and other names used to identify a unit mask
  with the term "event qualifier".  This renaming was done because the term
  "Unit Mask" has a very specific meaning in the hardware. Many of the flags
  and other fields we can now provide with an event to control how it is
  counted have nothing to do with the unit masks defined in the manuals
  provided by the hardware vendors.  Summary of what changed:  Removed the -d
  command line argument.  It controlled if units should be displayed in output.
   Now we always display units if they are defined (only place I have seen them
  defined is with rapl events).  Fixed bug when displaying event units.  It was
  displaying the units information in front of the event name and description. 
  It now displays the units information after the description.  Renamed the
  -noumasks argument to -noqual.  This prevents event qualifiers (previously
  known as unit masks) from being displayed.  Replaced headings "Unit Mask" and
  "Mask Name" with "Qualifiers" and "Name" (when displaying a single event).

2015-02-10  

  * 91e36312 src/ctests/Makefile.recipies src/ctests/attach_cpu.c: Test case
  for attaching an eventset to a single CPU rather than a thread (attach_cpu) 
  Thanks to Gary Mohr for this contribution.  This patch adds a test case to
  demonstrate how to attach an event set to a cpu so that the event counts for
  events in that event set reflect how many of those events occurred on the
  attached cpu (instead of the number of events that occurred in a thread of
  execution).  See comments in attach_cpu.c to see how and why to probe with
  specific cpus (e.g. ./attach_cpu 3).

2015-02-02  

  * 1fc57875 src/components/cuda/Makefile.cuda.in src/components/cuda/README
  src/components/cuda/Rules.cuda...: Updated CUDA component supporting multiple
  GPUs and multiple CUDA contexts.  This PAPI CUDA component uses the CUPTI
  library to get information about the event counters.  NOTE: To use this PAPI
  CUDA component, there is a difference from standard PAPI usage.  When adding
  PAPI events to the CUDA component, each event needs to be added from the
  correct CUDA context.  To repeat, for each CUDA device, switch to that device
  and add the events relevant to that device!  If there is only one CUDA
  device, then the default context will be used and things should work as
  before.

  * 40151180 src/ftests/Makefile: Reported by Mark Maurice:  On linux systems
  without a fortran compiler installed we get an error when building the PAPI
  fortran tests.  The reason for the error is that in the Makefile in the
  ftests directory the @echo lines start with spaces instead of tabs. 'make' is
  fussy about tabs and spaces and gives a 'missing separator' error if a
  command starts with spaces instead of a tab.

2015-01-20  

  * 1dec8a9d src/components/lustre/linux-lustre.c: Thanks to Gary Mohr for the
  patch:The patch provided solves the segmentation faults produced by the
  lustre component.The changes done by the patch are in the
  _lustre_shutdown_component() by adding lustre_native_table=NULL statement and
  Later num_events=0 and table_size=32 were added in the same function to fully
  solve the segmentation faults

2014-12-17  

  * aba85b18 man/man1/PAPI_derived_event_files.1 man/man1/papi_avail.1
  src/Makefile.inc...: User defined events: Enhance PAPI preset events allow
  user defined events via a user event definition file.  Thanks to Gary Mohr
  for this patch and its documentation.
  --------------------------------------------------------  This patch file
  enhances the code that processes PAPI preset event definition files
  (papi_events.csv) so that it can also now be used to process a user provided
  event definition file.  PAPI still looks for an environment variable
  'PAPI_USER_EVENTS_FILE' and if found uses its value as the pathname of the
  user event definition file to process (same behavior as before). The change
  is that this is done right after processing the PAPI preset events rather
  than at the end of PAPI_library_init (after all components were initialized).
  An advantage of using this approach is that now user defined events, like
  preset events, can define multiple versions of the same event where each
  version is customized to a particular hardware platform (or pmu name).  The
  code which processes preset events was also enhanced in the following ways: 
  The papi_avail command was updated to also list user defined events in its
  output.  The papi_avail help and man page have been updated to include user
  defined events in the descriptions.  The man page was also updated to add a
  "see also" reference to a new 'PAPI_derived_event_files' man page.  A new
  'PAPI_derived_event_files' man page to provide the user information about how
  to build an event definition file has been added.  This patch file contains
  both the source file changes (needed by doxygen) and updated copies of the
  man pages created by doxygen.  The code now allows both postfix (Reverse
  Polish Notation) and infix (algebraic) formulas to be entered. There is a new
  derived event type 'DERIVED_INFIX' to specify that the formula is provided in
  the algebraic format.  The formulas will always be converted to postfix
  format as part of the event definition processing so if the user does a
  'papi_avail -e <eventName>' later it will always be displayed as a postfix
  formula.  When defining a new derived event (either preset or user defined),
  it is now possible to use any already known native event, preset event or
  user defined event.  This means that new derived events can be created as a
  relationship between other already known (their definitions had to already be
  processed) derived events. When derived events are created, there is a list
  of native events needed by that defined event created and optionally a
  formula to compute the derived events value.  If a new derived event is
  created that depends on another derived event, then the new event will
  inherit all the native events used by the event it depends on and the new
  derived events formula will be merged with the formula from the event it
  depends on (if there was one or if it had an implied formula like derived add
  or sub).  This means that after event definition processing completes the
  event tables inside PAPI always contain the list of all native events needed
  to compute the derived events results and a postfix formula that will be used
  to compute the events result. So if a user does a 'papi_avail -e
  <eventName>', the output will show what events PAPI is going to count and how
  they will be used to generate the events final value.  A new command 'EVENT'
  has been added to the code which is intended to be used for user defined
  events. It is identical to the existing command 'PRESET' used to define
  preset events.  They are interchangeable and both can be used in both preset
  and user defined event definition files.  The code now allows the user to
  provide a short and long description for the derived event.  The event
  definition commands 'PRESET' and 'EVENT' now support tags of "LDESC" and
  "SDESC" to identify what is found in the following string.  This was done the
  same way as the already supported 'NOTE' tag.  These changes do not support
  the ability to create #define variables that can then be used in event
  definition formulas.  This was supported by the old user event definition
  code.  These changes delete the existing papi_user_event code (two files that
  are no longer needed).

2014-12-15  

  * f8b722a9 src/components/perf_event/tests/event_name_lib.c: perf_event
  tests: add sample haswell offcore event

2014-12-11  

  * adbae8cd src/papi_events.csv: Update presets for Intel Haswell and
  Haswell-EP (according to the updates of the libpfm4 event table for Intel
  Haswell and Haswell-EP). These mods have not been tested due to lacking
  access to an Intel Haswell system.

2014-11-14  

  * ca1ba786 doc/Doxyfile-common papi.spec src/Makefile.in...: Bump master to
  5.4.1, we just released out of the stable-5.4 branch.

