=============================================================================== MUTLS =============================================================================== MUTLS is a mixed-model universal software thread-level speculation system that is purely based on the LLVM intermediate representation (IR). See http://www.sable.mcgill.ca/~zcao7/mutls for further documentation. =============================================================================== Install =============================================================================== ---------------- 1. unpack mutls ---------------- $ tar xzvf mutls-1.0.tar.gz $ cd mutls-1.0 ---------------- 2. install llvm ---------------- $ mkdir build-llvm $ cd build-llvm $ ../llvm-2.9/configure --prefix=$MUTLS_INSTALL_DIR --enable-optimized --enable-assertions $ make $ make install $ cd .. ----------------------------- 3. install llvm-gcc frontend ----------------------------- $ mkdir build-llvmgcc $ cd build-llvmgcc $ ../llvm-gcc-4.2-2.9.source/configure --prefix=$MUTLS_INTALL_DIR --enable-llvm=$MUTLS_INSTALL_DIR \ --program-prefix=llvm- --disable-multilib --enable-languages=c,c++,fortran $ make $ make install $ cd .. Make sure llvm-gcc is in PATH. The following command should output "$MUTLS_INTALL_DIR/llvm-gcc". $ which llvm-gcc ---------------------------------- 4. install MUTLS bytecode library ---------------------------------- $ cd build-llvm/projects/mutls-rt $ make install $ cd ../../.. =============================================================================== Test =============================================================================== Test sample code: $ mutls -run a.c MUTLS help: $ mutls -h Run test suite: $ ./runtestcases -all Run benchmarks: $ mutls -run benchmark/3x+1.c =============================================================================== Configuration =============================================================================== MUTLS is configured in llvm-2.9/projects/mutls-rt/logging.h Note that the number of threads should not be larger than the number of processors (CPU cores) Some of the default settings are: ---------------------------------- Number of threads: 64 Global buffer word: 2^2 bytes Global buffer size: 2^23 words JIT enabled: false Fork-heuristics enabled: false Build mode: 1 (Release) ---------------------------------- =============================================================================== Code layout =============================================================================== MUTLS transformation pass: llvm-2.9/lib/Transforms/Speculation MUTLS runtime library: llvm-2.9/projects/mutls-rt =============================================================================== License =============================================================================== MUTLS transformation pass is licensed under the University of Illinois Open Source License. MUTLS runtime library is dual licensed under the MIT and the University of Illinois Open Source Licenses. See subdirectories and files for details.