AESOP

The autoparallelizing compiler for shared-memory computers

AESOP is a high-performance, open-source compiler developed as LLVM plugins at the University of Maryland. Unlike many research compilers, AESOP is designed to handle real-world code rather than small, simple kernels. For example, AESOP can compile SPEC2006 and OMP2001 benchmarks, and our automated test suite consists of over 2 million lines of code. Still, we warn that AESOP is still just a 2-person research project, and we do not claim it to be production-ready.

By leveraging existing LLVM frontends and performing its analysis and transformations at the bytecode level, AESOP can serve as a drop-in replacement for clang, gcc, g++ and gfortran.

AESOP is free software, primarily tested targeting 32-bit x86 Linux. However, parts of it are likely to work wherever LLVM works.

Note: A new version is now available for download. It uses LLVM 3.3 and features primarily portability-oriented improvements.

Try the online demo » AESOP white paper»

Downloads

The AESOP source is available as an LLVM project intended to share an installation prefix with an LLVM build.

So we can have some idea of who is using AESOP, we ask that you fill out this inline form before downloading. (No approval is required.)

Your information will not be shared. We collect this information strictly for our own use.

Repository access

We haven't set up a public repository yet, but potential contributors are welcome to contact us about access.

Contact us about repository access »

AESOP white paper

The AESOP white paper describes the design, implementation, and performance of AESOP in more detail.

To reference this white paper, please use the following:

A. Kotha, T. Creech, and R. Barua, "AESOP: The Autoparallelizing Compiler for Shared Memory Computers," white paper, Department of Electrical and Computer Engineering, University of Maryland, College Park, Apr. 2013; http://aesop.ece.umd.edu/doc/aesop-white-paper.pdf.
Alternatively, you can use this Bibtex file. This includes the document's URL with a \url{...}, so don't forget to \usepackage{url} in your main tex file.

You can try AESOP's analysis out in your web browser!

Online Demo

Try out our online demo to get an idea of AESOP's capabilities. Enter some arbitrary C code forming a whole program and see what AESOP would do. Optionally, you can view the code generation as LLVM IR.

Try the demo!

AESOP works as a drop-in replacement for existing compilers.

C with Clang

aesopcc -m32 -O3 -I. a.c b.c -o a

C with GCC

aesopgcc -m32 -O3 -I. a.c b.c -o a

Fortran with GCC

aesopfort -m32 -O3 -I. a.f b.f -o a

Makefile projects

$ make CC=aesopcc CXX=aesopc++ FC=aesopfort F77=aesopfort CFLAGS="-m32" CXXFLAGS="-m32" FFLAGS="-m32" LDFLAGS="-m32" 

Autotools projects

$ ./configure CC=aesopcc CXX=aesopc++ FC=aesopfort F77=aesopfort CFLAGS="-m32" CXXFLAGS="-m32" FFLAGS="-m32" LDFLAGS="-m32"
$ make -j16
Note that the compiler does support parallel compilation.

Compilation of AESOP is still not for the faint of heart.

Please refer to this compilation guide when compiling AESOP. Feel free to contact us if help is needed.

We would like to thank Wojciech Matyjewicz for the base loop memory dependence analysis code used for this project.

This work was supported in part by DARPA via the AACE program, and in part by a NASA Office of the Chief Technologist’s Space Technology Research Fellowship.

These are the people who have worked on the AESOP project.

Rajeev Barua

Rajeev Barua is an associate professor in the department of Electrical and Computer Engineering at the University of Maryland. Dr. Barua is the principal investigator of the AESOP project.

View homepage »

Aparna Kotha

Aparna Kotha has graduated with her PhD, but worked on AESOP as a student under Prof. Barua.

View homepage »

Tim Creech

Tim Creech has graduated with his PhD, but worked on AESOP as a student under Prof. Barua. Tim's work on this project was funded by a NASA Space Technology Research Fellowship.

View homepage »