July 7, 2003 Titaniumc version 2.205 is now publicly available. User-visible changes since the last public release include: --- User interface changes --- * Improved handling of --cc-flags argument to tcbuild - it's now reserved exclusively for the user's optional flags, and contains nothing by default. * new tcbuild flags --help-tcflags and --help-envvars which display the usage information for tc (tc-flags documentation) and environment variables that affect Titanium application execution * Improved the error messages generated by single analysis to be less cryptic * Deprecate TI_PFORP in favor of the new TI_THREADS variable, which is just a space-delimited list of thread counts ie "2 2 2 2" * New tcbuild --stoptifu option enables Geoff Pike's stoptifu optimizations --- Backend/Runtime changes --- * New gasnet-* backends which add native network support for Myrinet/GM, Quadrics/ELAN, improved IBM/LAPI support and other networks on the way * Support for 64-bit compilation on all distributed-memory backends * Ported the compiler to Mac OSX, FreeBSD, HPUX and recent versions of Cygwin (with new GC support) * Dramatically improved performance for random indexing into Titanium arrays when bounds checking is disabled (ie --no-bcheck), and minor performance improvements to other Titanium array ops. * Performance improvements to local non-contiguous array copies, small or empty array copies, and array creation overhead * Faster implementation for sparse array copy over rectdomains * Significant performance improvements to the pack/unpack code used for some special cases of non-contiguous remote array copy * New environment variables TI_PREALLOC and TI_PIPELINING enable the experimental support for Jimmy's streamlined scatter/gather implementations. * Merged a new version of the Boehm-Weiser garbage collector with major upgrades, including support for AIX and Cygwin * Improved handling for application out-of-memory conditions * Fixed Runtime.totalMemory() and Runtime.freeMemory() to include memory used in regions * Improved performance for "polite mode" synchronization, where threads share a CPU * Upgrades to allow running the mpi-* and gasnet-* backends on an unlimited number of nodes - we've successfully tested using up to 320 processes. Note that the sp3 backend still tops out at 256 processes due to AMLAPI limitations - one should use the newer gasnet-lapi-{uni,smp} backends instead, which subsume sp3. * ti.lang.Timer and ti.lang.TickCounter reimplemented using high-performance hardware timers - these libraries should be used for instrumenting Titanium applications rather than Java's System.currentTimeMillis(). They provide much better timer granularity and overhead (usually on the order of microseconds). See language reference for usage details. * Significant performance improvements for Regions on threaded backends * Fully inline the native methods in java.lang.Math (sin,cos,tan,etc.) as well as Ti.numProcs() and Ti.thisProc() * Significantly reduce the space overhead of all Objects and java arrays using lazy monitor allocation, reducing it to 2*sizeof(void *) * Performance improvements to exception handling --- Optimization changes --- * Enable all our foreach loop optimizations on regular for/while/do loops * New common subexpression elimination optimization (off by default for now) * A new experimental dead-method elimination optimization for inlining-intensive programs (--tc-flags '-Oinline2 -ODME') * Addition of new --tc-flags -Oinline-maxdepth option to control the cut-off inlining depth used when "pulling" callees into a caller --- Miscellaneous changes --- * Point,Domain,RectDomain,tiArray .arity field has been removed and now cause a tc compile error. Point,Domain,RectDomain,tiArray .arity() method has been optimized and calls are now all expanded to a constant during lowering * Many miscellaneous bug fixes --- Updated backend information --- Here are descriptions of the Titanium backends currently available: * sequential - A single Titanium process - useful for testing and debugging. * smp - This parallel backend runs the Titanium processes as Posix threads within a single shared memory space, with fast "narrow" pointers. You should specify the number of parallel threads by setting the environment variable TI_THREADS = "N" (for N threads). * mpi-cluster-uniprocess - portable, high-performance MPI-based cluster backend that should run on any cluster with MPI 1.1 or better * mpi-cluster-smp - Same as above, but for a cluster of SMP's (CLUMP). Each node in the network runs one or more Titanium processes as Posix threads. For more detailed information about using the mpi-* backends, see: http://www.cs.berkeley.edu/Research/Projects/titanium/doc/mpi-backend-usage.txt * udp-cluster-uniprocess - the portable UDP-based cluster backend that should run on basically any set of machines that have sshd and a basic TCP/IP stack (they can also take advantage of gexec on Millennium). * udp-cluster-smp - Same as above, but for a cluster of SMP's (CLUMP). Each node in the network runs one or more Titanium processes as Posix threads. For more detailed information about using the udp-* backends, see: http://www.cs.berkeley.edu/Research/Projects/titanium/doc/udp-backend-usage.txt * gasnet-gm-uni, gasnet-gm-smp - the backend for high-performance communication on clusters of uniprocessors and clusters of SMP's connected via Myrinet/GM * gasnet-elan-uni, gasnet-elan-smp - the backend for high-performance communication on clusters of uniprocessors and clusters of SMP's connected via Quadrics/Elan * gasnet-lapi-uni, gasnet-lapi-smp - the backend for high-performance communication on the IBM SP using the LAPI interface - subsumes the old sp3 backend (which still works). * sp3 - Runs on the IBM SP Power3 machine with LAPI as the low-level communication system (uses an AM-to-LAPI compatibility layer). * gasnet-mpi-uni, gasnet-mpi-smp - for testing purposes only * cray-t3e - Runs on the Cray T3E using shmem. This platform has a few limitations (notably, the lack of a garbage collector). * mill-cluster-uniprocess, mill-cluster-smp, sp2, sp2clump, tera-thread, now-cluster-uniprocess - deprecated backends --- Miscellaneous notes --- * The tech report version of the language reference manual (v1.5) is available on the Titanium web site: http://www.cs.berkeley.edu/Research/Projects/titanium/doc/lang-ref.pdf