[LBNL]

Berkeley UPC - Unified Parallel C

BUPC

Home
Downloads
Documentation
Bugs
Publications
Demos
Contact
Internal

UPC Thrille

UPC Thrille is a tool for "Active Testing" of UPC applications. By observing shared memory accesses and synchronization behavior of a program, Thrille can detect potential concurrency bugs in UPC programs. Thrille will then re-execute the program while actively controlling the schedule of threads and try to reproduce the potential bugs and confirm their existence. In this current release, a data race detection and reproduction tool is included.

Latest News

Downloading and Installing UPC Thrille

  1. Download and unpack Berkeley UPC on your system. Instructions for downloading Berkeley UPC can be found here.
  2. Download and unpack Thrille. The default location for Thrille expected by Berkeley UPC is [path to berkeley_upc-x.y.z]/thrille. You can either create a symlink called 'thrille' to the directory you unpacked Thrille (thrille-x.y.z), or specify the path during configuration (see below).
  3. Configure Berkeley UPC with Thrille support. Create a build directory (e.g. ~/upc/build), and run configure with option "--enable-thrille". Unless you added a symlink called 'thrille' in 'berkeley_upc-x.y.z' (or moved the thrille package there), you must also add the option "--with-thrille=[path to thrille-x.y.z]". You should specify the absolute path when using the "--with-thrille" option.
  4. Build the Berkeley UPC runtime. In your build directory, run "make" and optionally "make install". If you have problems building the Berkeley UPC runtime, consult the INSTALL manual inside the BUPC package.
  5. Test if your installation is correct. The Thrille package comes with some test programs. You can try the simple test program in thrille-x.y.z/tests/hello. Note: the program will have a race only when run with 4 or more threads.

Running UPC Thrille

  1. Compile your UPC program with Thrille enabled. You must specify a mode by adding "-thrille=[mode] (default:empty)" to the upcc compiler options if you want Thrille enabled in your program runs. Currently, the supported modes are {empty, racer, tester}.
  2. Run your UPC program with Thrille race detection. After you compile your program with "-thrille=racer", run your program normally with upcrun. All potential races will be reported in separate upct.race.<num> files. If run on a distributed system, these files may also be dispersed among nodes.
  3. Run your UPC program with Thrille race reproduction. After you compile your program with "-thrille=tester", select the race you would like to reproduce using the environment variable "UPCT_RACE_ID=<num>", and run your program normally using upcrun. The syntax for setting up environment variables depends on your shell. To change the order of resolving races, define the environment variable UPCT_RACE_RESOLVE_DIR=1. The default order (UPCT_RACE_RESOLVE_DIR=0) is to let the thread paused at the first statement of the race pair start first after the race is detected.

Version history

Feedback

Please send all bug reports and comments to

Downloads


Home
Downloads
Documentation
Bugs
Publications
Demos
Contact
Internal

This page last modified on Saturday, 24-Sep-2016 20:41:40 PDT