Getting Started: Building and Installing Polly
Automatic
There is a script available to automatically checkout, update, build, and test Polly. This script contains all the commands that are subsequently described on this webpage. The automatic installation consists of four simple steps:mkdir polly && cd polly wget http://polly.llvm.org/polly.sh chmod +x polly.sh ./polly.sh
Manual
Get the code
The Polly source code is available in the LLVM SVN repository as well as through an official git mirror. It is added to the tools directory of the llvm sources. Polly and LLVM need to be checked out at the same time. Checkouts from different dates may not work!Set the directory layout:
export BASE=`pwd` export LLVM_SRC=${BASE}/llvm export POLLY_SRC=${LLVM_SRC}/tools/polly # Also build the matching clang-version (optional) export CLANG_SRC=${LLVM_SRC}/tools/clang
SVN
svn checkout http://llvm.org/svn/llvm-project/llvm/trunk ${LLVM_SRC} svn checkout http://llvm.org/svn/llvm-project/polly/trunk ${POLLY_SRC} # Also build the matching clang-version (optional) svn checkout http://llvm.org/svn/llvm-project/cfe/trunk ${CLANG_SRC}
GIT
git clone http://llvm.org/git/llvm.git ${LLVM_SRC} git clone http://llvm.org/git/polly.git ${POLLY_SRC} # Also build the matching clang-version (optional) git clone http://llvm.org/git/clang.git ${CLANG_SRC}
Prerequisites
- libgmp
- CLooG/isl
libgmp
Install libgmp (library + developer package) through the package management system of your operating system.CLooG/isl
Polly is tested with a fixed version of CLooG and isl. To obtain the source code of CLooG (including isl) use checkout_cloog.sh as available in ${POLLY_SRC}/utils/checkout_cloog.sh.Set the directory layout:
export CLOOG_SRC=${BASE}/cloog_src export CLOOG_INSTALL=${BASE}/cloog_install
First installation
${POLLY_SRC}/utils/checkout_cloog.sh ${CLOOG_SRC} cd ${CLOOG_SRC} ./configure --prefix=${CLOOG_INSTALL} make make install cd ${BASE}
Update the installation
Updating CLooG may become necessary, if Polly uses a feature only available in a recent version of CLooG.${POLLY_SRC}/utils/checkout_cloog.sh ${CLOOG_SRC} cd ${CLOOG_SRC} make make install cd ${BASE}
Build Polly
To build Polly you can either use the autoconf or the cmake build system. At the moment only the autoconf build system allows to run the llvm test-suite and only the cmake build system allows to run 'make polly-test'.Set the directory layout:
export LLVM_BUILD=${BASE}/llvm_build mkdir ${LLVM_BUILD} cd ${LLVM_BUILD}
CMake
cmake -DCMAKE_PREFIX_PATH=${CLOOG_INSTALL} ${LLVM_SRC} make
Autoconf
${LLVM_SRC}/configure --with-cloog=${CLOOG_INSTALL} --with-isl=${CLOOG_INSTALL} make
Test Polly
To check if Polly works correctly you can run make polly-test for the cmake build or make polly-test -C tools/polly/test/ for the autoconf build.
If you get something like "... libisl.so.9: cannot open shared object file ..", it is because you installed cloog to a non-standard path, and libisl/libcloog could not be found. To solve this issue, you need to append the path of parent directory of libisl/libcloog, i.e. ${CLOOG_INSTALL}/lib, to LD_LIBRARY_PATH by:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CLOOG_INSTALL}/lib
Optional Features
Pocc
Polly can use
PoCC as an external optimizer. PoCC is a research project that provides
an integrated version of Pluto, an
advanced data-locality and tileability optimizer. Polly includes internally
already a similar optimizer, such that in general PoCC is not needed. It is
only recommended for people who want to compare against a different
optimizer.
To use it install PoCC 1.0-rc3.1 (the one with Polly support) and add it to your PATH.
wget http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz tar xzf pocc-1.0-rc3.1-full.tar.gz cd pocc-1.0-rc3.1 ./install.sh export PATH=$PATH:`pwd`/binYou also need to install scoplib-0.2.0 and provide its location to Polly's cmake or configure call.
wget http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz tar xzf scoplib-0.2.0.tar.gz cd scoplib-0.2.0 ./configure --enable-mp-version --prefix=/path/to/scoplib/installation make && make install