MUTLS: Optimistic Automatic Parallelizing Compiler for Multiple Programming Languages


MUTLS is a safety-guaranteed parallelizing compiler. You can use MUTLS for both automatic parallelization and compiler-directive based manual parallelization.

MUTLS for Automatic Parallelization

The following command uses the MUTLS compiler to parallelize all loops in the program speculatively, including those that the compiler cannot prove absence of dependencies, for example, due to irregular memory access patterns. The MUTLS runtime system automatically rolls back inappropriately started threads and selects the most beneficial loops.
$ mutls -auto a.c
To get MUTLS help, use the following command.
$ mutls -h

MUTLS for Manual Parallelization

Unlike common parallel programming approaches such as OpenMP, MUTLS guarantees correctness of the parallelized program, even if the compiler directives are wrong. Another advantage is that MUTLS directives do not need to specify which variables are private or shared. MUTLS achieves these merits by performing optimistic, or speculative, parallelization. The MUTLS runtime tracks memory accesses/dependencies of the speculatively parallelized program and automatically rolls back mis-speculated threads. Please see the MUTLS research page if you are interested in how MUTLS is implemented. A typical MUTLS directive is as follows. Please see the MUTLS benchmarks for more use cases.
for(...){
#pragma tls forkpoint loop
	...
}

MUTLS Log File

The MUTLS runtime logs rolled back threads as well as rollback causes to the "mutls_rt.log" file to help the programmer diagnose the problem. In the case of conflict memory access, the rollback log also contains the conflict address and memory variable.

Programming Languages

Currently MUTLS supports the C/C++ and Fortran programming languages. We plan to add more language front-ends in the future. If you have any suggestions or feature requests, please let us know.

Contact Us

If you have any questions or comments, or find any bugs, please don't hesitate to contact us at mutls@outlook.com.

Download

Links

Donate

Support MUTLS development by making a donation. We appreciate your help.