Rochester Software Transactional Memory

Last update: 07/06/10
  • Google Code Site
  • Main
  • License
  • Download
  • Building RSTM
  • Programming with RSTM
  • Applications
  • STM Implementations
  • STM Primer

Google Code Site

The RSTM package is now available as a Google code project. We welcome your comments, suggestions, and contributions. Future releases will occur through the Google code mechanism.

The information hosted here is accurate with respect to the fifth release, and the initial Google code release. The STM Implementations and STM Primer pages will continue to be relevant, but we expect the RSTM-specific information hosted at the University of Rochester to become rapidly out-of-date.


Supported Platforms

We have successfully built and tested RSTM in the following environments:

  • gcc 4.2.4, llvm-2.5, Visual C++ 2008
  • SPARC: SunFire 880 (8 CPUs), SunFire 6800 (16 CPUs), SunFire T1000 (8x4 CPUs)
  • x86-32: Intep Pentium IV, Pentium III, Xeon (2x2), Core2 (duo/quad), and various Athlon and Centrino processors
  • SunOS 5.10, Fedora Core 3/5, Mac OS X 10.5, Microsoft Windows XP/Vista (32 bit)/rc7 (32 bit), and many other Linux distributions

The timing code and atomic operations necessary to run RSTM on OpenBSD and FreeBSD are available in the latest release. There is also experimental support for Itanium processors. You will also see POWER related fencing, however we do not officially support POWER platforms in this release.

If you successfully build RSTM in another environment, please let us know!

Folder Layout

There are 5 top-level folders:

  • alt-license/ - code not owned by the University of Rochester Department of Computer Science, such as parts of the Loki library, Win32 GetOpt, and rand_r() for Win32.
  • VisualStudio/ - projects for building in Windows
  • libstamp/ - bindings to build a librstm.a library that can be used with the STAMP benchmark suite
  • stm/ - all library code
  • mesh/ - Delaunay triangulation code
  • bench/ - data structure microbenchmarks
  • swarm/ - OpenGL 3D rendering application
  • hashing/ - extensible hashing benchmarks

Building the RSTM library and benchmarks

  1. After you have unpacked the rstm tarball, you will need to build the config.h and Makefile.inc files. The stmconfig executable performs this task. First, build stmconfig by typing 'make stmconfig'. Then invoke the interactive stmconfig tool (when stmconfig is invoked with the -D option, defaults will be chosen for you). Windows users should see the documentation in VisualStudio/ for platform specific information.
          make stmconfig
          ./stmconfig
        
  2. The top-level makefile will build an stm library based on the values in config.h and Makefile.inc. This makefile will also build the microbenchmark code.
          make all
        
  3. On Unix systems you can configure with different compilers by passing the -e flag when building stmconfig. If you have gcc-4.2 installed as g++-4.2, you can use this by configuring with
          make stmconfig -e CXX=g++-4.2
        
  4. We support LLVM-2.5 in a whole-program optimization mode using the configuration command
          CXX=llvm-g++ make stmconfig
        
    This is slightly different than passing -e flag because the compiler used to compile stmconfig is actually llvm-gcc, which is what we need to trigger the correct configuration.

Please note that the makefiles are written for GNU make. On Solaris machines, use 'gmake'.

Building the mesh, swarm, and hashing benchmarks

To build these benchmarks, you must first configure and build the stm library using the above instructions. Then enter the appropriate directory and type 'make'.

The swarm benchmark requires the GL Utility Toolkit GLUT, which may or may not be preinstalled in your system. See the swarm README for more detailed information.

Please note that the mesh has not yet been ported to Microsoft Windows.

Questions? contact webmaster
Department of Computer Science
University of Rochester