This page is meant to provide a guide to GASP implementors on the steps necessary to add GASP support to their GAS model implementation. If you have any questions, feel free to email leko AT hcs DOT ufl DOT edu (email address mangled to protect against SPAM) for further clarification.

Implementation strategy

The simplest and most effective strategy to add GASP support to your GAS language/model implementation is to first begin by adding a “vacuous” implementation that provides the minimum possible support for GASP compliance. Then, add events defined in the GASP spec (eg, section 5.4) into the compiler or runtime starting with the most important events for your platform as your development schedule permits. Finally, add any relevant implementation-specific events.

Checklist of vacuous implementation for UPC GASP implementations

To add the minimum amount necessary to be able to claim basic GASP support, you'll need to do the following:

Note that although the vacuous implementation strategy outlined above is strictly sufficient to claim GASP compliance (because all events are officially optional), in practice a GASP implementation is only useful to end-users once you add instrumentation to report performance events of likely interest to the measurement tool and end-user. At the minimum, adding the instrumentation events described in GASP Spec section 5.4 for UPC puts and gets, upc_mem{put,get,cpy} and upc_{notify,wait,barrier} is highly recommended in order to actually generate useful performance results about communication in many UPC applications.

gasp-dump

As another aid to GASP implementors, we are making a simple testing tool called “gasp-dump” available. This tool was written by Dan Bonachea to test out GASP support in Berkeley UPC during its implementation. The tool dumps out all known GASP events to one log file per thread, and is useful for checking your GASP implementation out against real UPC programs. A simple UPC program (also written by Dan) is included in the tarball that exercises most of the interface.

You can download the tool here.

GCC UPC implementation log

While adding GASP support into GCC UPC, we kept a detailed implementation log which might be useful or insightful for other GASP language implementors.