llvm-project/polly/www/get_started.html
Tobias Grosser 19bde907b5 Create a new directory before running the polly script
Otherwise the script spams the home directory and, in case there are folders
of previous attempts lying around, it may fail in some unexpected way.

llvm-svn: 160677
2012-07-24 16:58:57 +00:00

189 lines
5.4 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Polly - Getting Started</title>
<link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
</head>
<body>
<!--#include virtual="menu.html.incl"-->
<div id="content">
<h1>Getting Started: Building and Installing Polly</h1>
<h2> Automatic </h2>
There is a <a href="polly.sh">script</a> 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:
<pre>
mkdir polly &amp;&amp; cd polly
wget http://polly.llvm.org/polly.sh
chmod +x polly.sh
./polly.sh
</pre>
<h2> Manual </h2>
<h3 id="source"> Get the code </h3>
The Polly source code is available in the LLVM SVN repository as well as through
an official git mirror. It is added to the <em>tools</em>
directory of the llvm sources.
<b>Polly and LLVM need to be checked out at the same time. Checkouts
from different dates may not work!</b>
<h4>Set the directory layout:</h4>
<pre>
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
</pre>
<h4>SVN</h4>
<pre>
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}
</pre>
<h4>GIT</h4>
<pre>
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}
</pre>
<h3 id="prerequisites"> Prerequisites </h3>
<ul>
<li>libgmp</li>
<li>CLooG/isl</li>
</ul>
<h4> libgmp </h4>
Install libgmp (library + developer package) through the package management
system of your operating system.
<h4> CLooG/isl</h4>
Polly is tested with a fixed version of <a href="http://www.cloog.org">CLooG</a>
and isl. To obtain the source code of CLooG (including isl) use
checkout_cloog.sh as available in ${POLLY_SRC}/utils/checkout_cloog.sh.
<h4>Set the directory layout:</h4>
<pre>
export CLOOG_SRC=${BASE}/cloog_src
export CLOOG_INSTALL=${BASE}/cloog_install
</pre>
<h4> First installation</h4>
<pre>
${POLLY_SRC}/utils/checkout_cloog.sh ${CLOOG_SRC}
cd ${CLOOG_SRC}
./configure --prefix=${CLOOG_INSTALL}
make
make install
cd ${BASE}
</pre>
<h4> Update the installation</h4>
Updating CLooG may become necessary, if Polly uses a feature
only available in a recent version of CLooG.
<pre>
${POLLY_SRC}/utils/checkout_cloog.sh ${CLOOG_SRC}
cd ${CLOOG_SRC}
make
make install
cd ${BASE}
</pre>
<h3 id="build">Build Polly</h3>
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'.
<h4>Set the directory layout:</h4>
<pre>
export LLVM_BUILD=${BASE}/llvm_build
mkdir ${LLVM_BUILD}
cd ${LLVM_BUILD}
</pre>
<h4>CMake</h4>
<pre>
cmake -DCMAKE_PREFIX_PATH=${CLOOG_INSTALL} ${LLVM_SRC}
make
</pre>
<h4> Autoconf </h4>
<pre>
${LLVM_SRC}/configure --with-cloog=${CLOOG_INSTALL} --with-isl=${CLOOG_INSTALL}
make
</pre>
<h3> Test Polly</h3>
<p>To check if Polly works correctly you can run <em>make polly-test</em> for the
cmake build or <em>make polly-test -C tools/polly/test/</em> for the autoconf
build.
<p>If you get something like <em>"... libisl.so.9: cannot open shared object file .."</em>,
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:
<pre>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CLOOG_INSTALL}/lib</pre>
<h2> Optional Features </h2>
<h3> Pocc </h3>
<p>Polly can use <a href="http://www.cse.ohio-state.edu/~pouchet/software/pocc">
PoCC</a> as an external optimizer. PoCC is a research project that provides
an integrated version of <a href="http://pluto.sf.net">Pluto</a>, 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.</a>
<br/>
To use it install PoCC 1.0-rc3.1 (the one with Polly support) and add it to your PATH.
<pre>
wget <a
href="http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz">http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz</a>
tar xzf pocc-1.0-rc3.1-full.tar.gz
cd pocc-1.0-rc3.1
./install.sh
export PATH=$PATH:`pwd`/bin
</pre>
You also need to install scoplib-0.2.0 and provide its location to
Polly's cmake or configure call.
<pre>
wget <a
href="http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz"
>http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz</a>
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
</pre>
</div>
</body>
</html>