September 21, 2002 Titaniumc version 1.1078 is now publicly available. User-visible changes since the last public release include: --- Backend/Runtime changes --- * Reconfigure the garbage collector to support very large heaps (up to about 3GB on 32-bit Linux), fixing the "Too many heap sections" error message * Optimize the global pointer representation on wide-pointer backends (i.e. *-cluster-* and sp3), and greatly reduce the number of places where threaded backends call the often expensive pthread_getspecific() function * AMMPI upgrades that significantly reduce communication latency for mpi-* backends * Added ti.lang.PAPICounter, which provides a language-level interface to the PAPI performance counters on platforms that support it --- Optimization changes --- * Geoff Pike's "stoptifu" storage optimizations - loop tiling, fusion, etc. Now available via the tcbuild flag: --tc-flags -OStoptifu --- Miscellaneous changes --- * Ported Titanium to the following new platforms/environments: - GNU Cygwin environment on MS Windows - Visual Age C (xlc), the native C compiler on the IBM SP - SGI-MIPSPro compiler 64-bit mode on the Origin 2000 - Compaq Alphaserver TRU64 UNIX & Compaq C - ia64-linux Itanium (sequential and smp backends only) - Berkeley I-Store (fault-tolerant, user-level ethernet support) * Fixed PR 423 (Various garbage collector problems on AIX) * Fixed PR 446 (Kaushik's bug: LQI problem with slice() on grid of global grids) * Fixed PR 474 (Allocation of arrays with 3 or more levels of array hierarchy) * Fixed intermittent segfaults inside array copy when copying arrays of global pointers, from a local to remote array, on distributed backends with GC * Support for --sequential-consistency on the IBM SP (gcc and xlc) * You can now run "ident" on any Titanium app and see lots of interesting info about how it was compiled --- 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_PFORP = "N/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 udp-* 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 rexec and GLUnix on the NOW and Millennium, respectively). * 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 * cray-t3e - Runs on the Cray T3E using shmem. This platform has a few limitations (notably, the lack of a garbage collector). * sp3 - Runs on the IBM SP Power3 machine with LAPI as the low-level communication system (uses an AM-to-LAPI compatibility layer). This backend has now been fixed starting in this release. * mill-cluster-uniprocess, mill-cluster-smp - these backends were designed to support the Via network on Millennium, which is no longer available. They may be used in the future to support other Via-based clusters. * 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