SPELL: Automatic Parallelizing Compiler with Hybrid Optimizations

SPELL is an automatic parallelizing compiler that aims to combine the strength of static compiler analysis and dynamic runtime optimizations.

SPELL for C/C++/Fortran (SPELL-native)

Currently, SPELL-native can automatically parallelize important loops in the libquantum, bwaves, cactusADM, leslie3d, GemsFDTD and lbm benchmarks of SPEC CPU2006.

SPELL-native is based on the LLVM 3.7.0 compiler framework. It uses the dragonegg GCC plugin to transform C/C++/Fortran programs into the LLVM Intermediate Representation (LLVM IR), and optimizes the transformed IR using LLVM. Then SPELL analyzes and parallelizes the optimized IR, and finally uses LLVM to generate the object code. We also implement a runtime library for the parallelized programs.

SPELL-native Compiler Version Comparison

Version Get SPELL-native Compiler SPEC CPU2006 results
Full version please contact spellcompiler@gmail.com integer benchmarks floating point benchmarks
Trial version Download integer benchmarks floating point benchmarks
Sequential version Download integer benchmarks floating point benchmarks


SPELL-CIL can optimize/parallelize programs written in any programming languages targeting the .NET Common Intermediate Language (CIL), such as C#, F# and VB.NET. It employs a selective ahead-of-time (AOT) compilation approach for optimization/parallelization, which generates a native version for each function it can optimize and rewrite the CIL function to P/Invoke the native version.
Version Get SPELL-CIL 1.0 Compiler Documentation Benchmark Licence
Full version please contact spellcompiler@gmail.com
Trial version Download PDF C# Non-commercial evaluation use only

Contact Us

If you have any questions or comments, or find any bugs, please don't hesitate to contract us.

Email: spellcompiler@gmail.com

LinkedIn: https://ca.linkedin.com/in/spell-compiler-846541112

Twitter: https://twitter.com/spellcompiler