GASP revision history

Please note that these versions are here for reference only, for the most up-to-date version of the GASP spec please see this page.

Initial revision

%   Defined a simple profiling interface for UPC only.  Instead of one callback
%   function, several were used for each upc_* function.  Also suggested use of
%   statically-allocated source location structs, variable type querying, and a
%   function similar to MPI_Wtime().

Version 1.1

%   Changed name to "performance tool interface."  Still specific to UPC.
%   Added distinction between named and unnamed barriers.  Included more
%   detailed description of event notification structure. Added user-specified
%   event reporting, more detailed recommendations  for instrumentation
%   control, a function for users to instruct tools  to record data for
%   specific parts of their code, and timer-related  functions for tool
%   developers (based on the Berkeley UPC high-performance timers).  Added
%   thread-safe and re-entrancy requirement for tool code.  Included user
%   function entry and exit system events.

Version 1.2

%   No written document other than a presentation given during the UPC
%   workshop.  Changed "global timer" functions to be locally-consistent only.
%   Included an event type argument for user and system event callbacks (start,
%   end, atomic). User event reporting function also takes printf-style
%   arguments.  Changed instrumentation control to #pragma pupc on/off,
%   --profile and --profile-local arguments, and pupc_control.

Version 1.3-pre1

%   Generalized interface for GAS languages, changed name to GASP.  Converted
%   document to more spec-like format.  Several changes to UPC system event
%   arguments.

Version 1.3-pre2

%   - Changed GASP_USEREVT_BEGIN to GASP_USEREVT_START
%   - Changed "direct" to "blocking" in Section 4.4.5
%   - Fixed varargs in Section 4.4.6 (nonblocking comm events)
%   - Changed GASP_UPC_NB_GET/PUT_DATA to be when data arrives on destination node
%   - "Any action resulting from" -> "Any action resulting in"
%   - GASP_COLLECTIVE_EXIT from atomic to start/end, added node about UPC upcalls on exit events
%   - Merged redundant start/end events in tables
%   - Moved C-specific events to new section, changed events to have GASP_C prefix, added in C user function events
%   - *FREE events to atomic
%   - Removed * in partial event names (confusing, can mistake for pointers)
%   - Users can't pass UPC types in
%   - Prefix all UPC stuff with GASP_UPC
%   - Pointers in gasp_event_notify can't be changed
%   - Merge pupc_control/pupc_control_query and gasp_control/gasp_control_query
%   - Made is_relaxed consistent on UPC blocking and nonblocking memory access events
%   - gasp_nb_handle_t -> gasp_upc_nb_handle_t
%   - upc_lock_t -> gasp_upc_lock_t
%   - upc_op_t -> int, upc_flag_t -> int
%   - changed const char* TYPE to gasp_upc_reduc_t in reduction collectives
%   - More info about implementation-specific UPC events
%   - Moved cache miss/hit events into new section
%   - Clarify interaction between --profile and instrumentation/measurement/user events

Version 1.3-pre3

%   - Wording changes for pointers to data in gasp_event_notify
%   - Changed user event IDs to be language-specific
%   - Clarification of linking with --profile and --profile-local in section 3.1.3
%   - C-specific changes:
%     -> Fixed arguments for malloc and realloc, took off unnecessary "set pointer to 0 on failure" specification
%   - UPC-specific changes:
%     -> Removed unnecessary footnotes
%     -> Added GASP_UPC_USEREVT_START and GASP_UPC_USEREVT_END
%     -> GASP_COLLECTIVE_EXIT -> GASP_UPC_COLLECTIVE_EXIT
%     -> GASP_NONCOLLECTIVE_EXIT -> GASP_UPC_NONCOLLECTIVE_EXIT
%     -> Clarified text on GASP_NB_TRIVIAL event description
%     -> gasp_upc_reduc_t -> gasp_upc_reduction_t
%     -> GASP_UPC_REDUC_* -> GASP_UPC_REDUCTION_*
%     -> Clarification/simplification of gasp.h and gasp_upc.h

Version 1.3

%   - Added official GASP version number 20051101 for this GASP revision
%   - Removed gasp_control_query from section 3.5
%   - Made GASP_UPC_VERSION an integral type
%   - Removed a few unnecessary comments
%   - Included note about C GASP header file = UPC GASP header file

Version 1.4

%   - (kept date & GASP version at 11/1/2005 since only small cosmetic changes were done)
%   - Explicitly state the GASP_VERSION will be coded as YYYYMMDD
%   - Added clarification in 3.2 about developers providing dummy gasp_* calls for instrumented runtime libraries
%   - Fixed a typo in section 3.3 about the return value of gasp_control (semantics are still the same)
%   - Added a "users shall not rely on side effects" restriction to the pupc_event* functions since these can be compiled away to nothing
%   - Fixed small typo in 5.5 (function defined -> functions defined in 1st paragraph)
%   - Removed motivational appendices
%   - Added note about allowing NULLs in for source info on callbacks if not readily available and can accurately get it some other way
%   - Added more cache events

Version 1.5/LBNL Tech Rep 61606

%   - Added official GASP version number 20060914 for this GASP revision
%   - Following renamings:
%     gasp_lang_t          ->      gasp_model_t
%     GASP_LANG_UPC        ->      GASP_MODEL_UPC
%     GASP_LANG_TITANIUM   ->      GASP_MODEL_TITANIUM
%     GASP_LANG_CAF        ->      GASP_MODEL_CAF
%     GASP_LANG_MPI        ->      GASP_MODEL_MPI
%     GASP_LANG_SHMEM      ->      GASP_MODEL_SHMEM
%  - replace use of term 'language' with more general term 'model' that encompasses both languages and libraries
%  - '--profile-*' to '--inst-*' since tools can support profiling,
%    tracing, etc, and the flag is really controllling instrumentation
%    only
%  - add description of --inst-functions
%  - clarify the GASP_C_FUNC events occur in the callee frame
%  - slight rewording of title (Performance Tool -> Performance Analysis Tool)
%    "performance tool" is used in a lot of other places, but it's clear from the
%    context what is meant, and the "tool" and "tool developer" terms are clearly defined
%  - clarify the lifetime of all data passed via indirection to the tool
%  - clarify the thread-specific properties of gasp_context_t
%  - clarify that gasp_init is called collectively
%  - clarify that pupc_create_event always returns a unique, thread-specific value (or dies trying)
%  - clarify that gasp_upc_* types are defined in gasp_upc.h