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
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.
#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.
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.
If you have any questions or comments, or find any bugs, please don't hesitate to contact us at email@example.com.
Support MUTLS development by making a donation. We appreciate your help.