GASNet ChangeLog ---------------- $Revision: 1.5.1.3 $ ---------------------------------------------------------------------- 08-20-2005 : Release 1.6 * New conduits added: - shmem-conduit: High-performance conduit using the shmem communication interface on Cray X1 and SGI Altix. May support targetting other shmem implementations in the future. * New platform support: - Add cross-compilation support, specifically including the Cray X-1 - Experimental support for the Cray XT3 and IBM Blue Gene/L (contact us for details) - Other new ports: Linux/PowerPC, Cray MTA, NetBSD/x86, Linux/Alpha, FreeBSD/Alpha, HPUX/Itanium, PathScale & Portland Group compilers - Linux 2.6 kernel support for gm, vapi, shmem * General performance improvements: - Replace default barrier implementation on gm, vapi, sci, mpi, udp with a more scalable barrier implementation. - System-wide performance improvements to AM's - Improve the performance and functionality of gasnet_trace * Misc changes: - Output improvements to gasnet tests - Added MPI performance tests to the GASNet tests for ease of comparison - Many robustness improvements to job spawning on various conduits and systems - New environment variable GASNET_VERBOSEENV turns on global reporting of all environment variables in use - Improve the robustness and quality of GASNet's automatic heap corruption detection - Many, many bug fixes, for both specific conduits and general platform portability. See http://upc-bugs.lbl.gov for complete details. * Myrinet/GM: - gm-conduit now provides interoperability with MPI. - add support for spawning with mpiexec - several robustness and stability improvements * InfiniBand/VAPI: - Use firehose to manage local pinning in SEG_FAST, for performance - Add a stand-alone ssh-based spawner, and MPI is no longer required to build vapi-conduit. - Numerous performance improvements, especially for AM's, non-bulk puts and large put/gets (>128KB) - Improve firehose region efficiency, improving performance on LARGE/EVERYTHING - Add support for striping and multiplexing communication over multiple queue pairs - Add options for controlling the vapi progress thread * IBM SP/LAPI: - Change the default GASNET_LAPI_MODE to POLLING, which vastly outperforms INTERRUPT on Power4/Federation - Significant performance improvements to barrier * Quadrics/ELAN: - Elan4 functionality and tuning work - add support for SLURM spawner - Improve queue depth, allowing more non-blocking put/gets to be posted without stalling * CrayX1 & SGI Altix/SHMEM: - Significant performance improvements to AM's - Many correctness fixes to put/gets and AM's * Ethernet/UDP: - Improve the performance of loopback AM's ---------------------------------------------------------------------- 08-27-2004 : Release 1.4 * New conduits added: - udp-conduit: a portable conduit that implements GASNet over any standard TCP/IP stack. This is the now the recommended conduit for clusters with only ethernet networking hardware (faster than mpi-conduit over TCP-based MPI). See udp-conduit/README for important info on job spawning. Note that udp-conduit requires a working C++ compiler (but when none is available, it can be disabled with --disable-udp). - sci-conduit: an experimental conduit over Dolphin-SCI. Current implementation is core-only, performance improvements are on the way in the next version. * GASNet2 extended API interface extensions: - Implement reference version of GASNet collective operations - Implement reference version of GASNet vector/indexed/strided put/get operations - updated GASNet 2.0 spec to be released soon * GASNet Spec v1.6: - Add gasnet_hsl_trylock() - Specify calls to gasnet_hold_interrupts() and gasnet_resume_interrupts() are ignored while holding an HSL. - Clarify the upper limit of in-flight non-blocking operations is 2^16-1 - Clarify gasnet_handle_t is a scalar type - Small clarifications and minor editorial corrections * gm-conduit: - fix thread-safety problems in firehose library that caused stability problems in GASNET_PAR mode - detect versions of GM driver with broken RDMA get support and don't use it there - remove dependency on gethostbyname to improve reliability of static linking on Linux - improvements to gasnetrun-gm * vapi-conduit: - add SEGMENT_LARGE and SEGMENT_EVERYTHING support - many performance improvements * lapi-conduit: - add workaround for a recent LAPI performance bug on Federation hardware - gasnet_exit stability improvements * elan-conduit: - upgrades for recent libelan versions * Configure changes: - add autodetection of all conduits, whenever possible. On some systems one may still need to set some environment variables before running configure to indicate the install location of network drivers. - detect and reject the buggy gcc 3.2.0-2 compilers - handle systems lacking pthreads - improved sanity checks for MPI_CFLAGS * Makefile changes - Add a set of manual-overrides for compilation of the GASNet libraries and tests, ie "make MANUAL_LIBCFLAGS=..." - see README - Fix "gmake prefix=/new/path install" to work correctly, even when it differs from configure-time prefix - Add limited support for parallel make (not recommended for general use) * GASNet infrastructure ported to Cray X1, AMD Athlon/Opteron, Sun Pro C, HP C * Add gasnet_trace contributed tool, which automatically parses and summarizes GASNet trace files * Add an experimental spin-poll throttling feature to reduce lock contention for GASNET_PAR mode, configure --enable-throttle-poll * Restructure use of local memory barriers to accomodate architectures requiring read memory barriers * Fix GASNet headers to be C++ friendly * Many miscellaneous performance, stability and functionality improvements ---------------------------------------------------------------------- 11-10-2003 : Release 1.3 * Added Infiniband support in vapi-conduit - currently only SEGMENT_FAST is supported * elan-conduit: - updated for the most recent version of libelan - fix a few race conditions * gm-conduit: - updated for GM 2.0, including RDMA get support - Added 64-bit support - Reworked the spawner to work with mpiexec, gexec, MPICH mpirun and a custom spawner * lapi-conduit: - Fix bugs related to varying LAPI uhdr payload size across systems - this is now queried automatically at runtime * GASNet spec: - gasnet_hold_interrupts() and gasnet_resume_interrupts() calls are now required to be ignored by the implementation within an AM handler context. - Added gasnet_set_waitmode() function * Add a logGP test program for GASNet conduits * Add a threaded tester for gasnet threaded clients * Added a GASNet/MPI test that tests the compatibility of a GASNet conduit with MPI calls made by the GASNet client. * All GASNet conduits other than gm are now fully compatible with limited MPI calls from the GASNet client code. In order to prevent deadlock and ensure safety, GASNet and MPI communication should be separated by barriers. * Factor the firehose page registration system into a new, separate firehose library with a public interface, for use by gm-conduit and vapi-conduit * Use "adaptive" pthreads mutexes on Linux (when available), for better SMP performance * Added support for new platforms: Solaris-SPARC 64-bit and new compilers: Portland Group C, SunPro C and Intel C * Add SIGCONT as an additional option for unfreezing a GASNet application This is a useful option for debugging GASNet apps which lack debugging symbols (but may still have enough info to give you a stack trace, etc) A GASNet app frozen by GASNET_FREEZE can now be unfrozen by sending: "kill -CONT pid" to each process, or on some systems by typing control-Z on the console to suspend the process and then fg to resume it (sends a SIGCONT for you). * HSL calls now compile away to nothing when HSL's are unnecessary * Merged AMMPI v0.8, includes fixes to rare buffer overflows and small memory leaks * fixed pthread barrier errors caused by a race condition * Minor semantic change to no-interrupt sections - gasnet_{hold,resume}_interrupts() are now officially ignored within a GASNet handler context (where interrupts are already suspended anyhow). * add new function gasnet_set_waitmode() to control waiting behavior * Use an atexit handler to make sure we finalize the trace/stats file, even if the client exits without calling gasnet_exit * Fixes to gasneti_local_membar(), especially for SMP/UNI Linux kernels and PowerPC * New significant GASNet conduit programming practices: gasneti_{malloc,calloc,free}, gasneti_assert, GASNETI_CLIENT_THREADS, GASNETI_CONDUIT_THREADS, (N)DEBUG -> GASNET_(N)DEBUG, STATS,TRACE -> GASNET_{STATS,TRACE} * Many minor fixes ---------------------------------------------------------------------- 06-28-2003 : Release 1.2 * Greatly increased the number of platforms supported - notably, this release adds support for FreeBSD, IRIX, HPUX, Solaris, MSWindows-Cygwin and Mac OSX, as well as the SunPro, MIPSPro, Portland Group and Intel C compilers. See the top-level README for the complete list of supported platforms. * Added the smp-conduit, which implements pure loopback to support GASNet clients on platforms lacking a network. * Remove 256-node scalability limit - mpi, elan and lapi conduits now theoretically scale to 2^31 nodes. gm conduit scales to 2^16 nodes. * Merge v0.7 of AMMPI - improved latency performance, better scalability, and fixes for LAM/MPI * Fix bug 120 - gasnet_exit now reliably kills the entire job on all conduits in various collective and non-collective invocation situations. * New switches GASNETE_PUTGET_ALWAYSLOCAL and GASNETE_PUTGET_ALWAYSREMOTE which optimize away the locality check for put/gets implemented by gasnete_islocal() * Updates to the tracing system - separate statistics from tracing to allow finer user control controlled by new environment variables - GASNET_STATSMASK and GASNET_STATSFILE * Major cleanup to the gm-conduit bootstrap code * Internal structural changes to gasnet_extended.h to provide more flexibility for conduit overrides * Minor wording clarifications to the GASNet spec * Many minor bug fixes ---------------------------------------------------------------------- 04-17-2003 : Release 1.1 * Added lots of conduit user and design documentation * Fix bugs with gasnet_register_value_t functionality, in some cases garbage was returned by gasnet_get_val() in the upper bytes * Fix bug 51 - endianness bugs on gasnet_*_val() * Tweak the gcc optimizer settings to ensure that we get full inlining * Ensure gasnet_exit() or fatal signals always correctly shut down the global job (mpi and elan conduits - gm and lapi still have known problems) * Add strong configure warnings about using gcc 2.96 - users are highly recommended to avoid this broken compiler * Ensure configure caching is always on * Basic infrastructure cleanups to the conduit Makefile fragments * Fix a shutdown-time crash when tracing * Add GASNET_CONFIG_STRING to spec & implementation and embed it in library * Add a number of minor clarifications to the GASNet spec * Clean up licensing issues * elan-conduit: - fixups for better handling of elan memory exhaustion - preallocate AMLong bounce buffers * gm-conduit: - various stability fixes - add spawning scripts for gexec and pbs * mpi-conduit: - add global environment variable exchange to ensure consistent gasnet_getenv() results across nodes - merge AMMPI release 0.6 ---------------------------------------------------------------------- 01-29-2003 : Initial Release (1.0)