pet 0.11.8
[pet.git] / README
blob72be9881a5168f62ec96f09d233d7ccc28f1a994
1 Requirements:
3 - pkg-config (http://www.freedesktop.org/wiki/Software/pkg-config)
4         (not needed when compiling a release using the included isl)
5 - gmp (http://gmplib.org/)
6 - libyaml (http://pyyaml.org/wiki/LibYAML)
7         (only needed if you want to compile the pet executable)
8 - LLVM/clang libraries, 3.9 or higher (http://clang.llvm.org/get_started.html)
9         Unless you have some other reasons for wanting to use the git version,
10         it's best to install the latest release (18.1).
11         The git version occasionally introduces incompatibilities.
12         Nevertheless, if you encounter any such incompatibilities, please
13         report them so that they can be fixed.
14         However, development versions from before the latest release
15         are not supported.
17         Also, if you are following the instructions on how to build
18         from source, make sure you also install LLVM
19         (through "make install").  You may want to specify an installation
20         directory using the CMAKE_INSTALL_PREFIX cmake option.
21         You may also want to set the LLVM_BUILD_LLVM_DYLIB and
22         CLANG_LINK_CLANG_DYLIB options to enable the creation of
23         a single shared LLVM and clang-cpp library.
25         If you configure older versions of LLVM using cmake, you may end up
26         with clang libraries that have been compiled with -fno-rtti without
27         this option appearing in the output of "llvm-config --cxxflags".
28         You may then run into errors about undefined reference to the
29         'typeinfo' of some classes.
30         You will then have to add this option manually to CXXFLAGS while
31         configuring pet.
33         If you want to use the ubuntu package libclang-dev, then you need
34         version 3.2 (ubuntu raring) or later.
35         Older versions of this package did not include the required libraries.
36         You may also need to install the llvm package for llvm-config.
37         It is also recommended to install the libclang-cpp-dev ubuntu package.
39 Preparing:
41 Grab the latest release and extract it or get the source from
42 the git repository as follows.  This process requires autoconf,
43 automake, libtool and pkg-config.
45         git clone git://repo.or.cz/pet.git
46         cd pet
47         ./get_submodules.sh
48         ./autogen.sh
50 Compilation:
52         ./configure
53         make
54         make check
56 Use:
58 The main entry points are pet_scop_extract_from_C_source and
59 pet_transform_C_source.
60 The first function extracts a scop from the C source file with the given name
61 and returns it as a pet_scop.  The scop corresponds to the piece
62 of code delimited by
64     #pragma scop
66 and
68     #pragma endscop
70 The code in between needs to consist only of expression statements,
71 if statements and for statements.  All access relations and loop initializations
72 need to be piecewise quasi-affine.  Conditions are allowed to be non-affine,
73 in which case a separate statement is constructed to evaluate the condition.
75 The second function (pet_transform_C_source) iterates over all scops.
77 If the autodetect option has been set, pet will try to automatically
78 detect a scop and no pragmas are required.  On the other hand, pet
79 will not produce any warnings in this case as any code that does not
80 satisfy the requirements is considered to lie outside of the scop.
82 The layout of pet_scop is documented in include/pet.h.
84 An example application is given by pet_loopback.c,
85 which prints out code from the pet_scop without any transformation.
88 New releases are announced on http://groups.google.com/group/isl-announce
90 If you use pet, you can let me know by stacking
91 https://www.openhub.net/p/libpet on ohloh.
93 For bug reports, feature requests and questions,
94 contact isl-development@googlegroups.com
96 If you use pet for your research, you are invited to cite
97 the following paper.
99 @InProceedings{Verdoolaege2012pet,
100     author = {Sven Verdoolaege and Tobias Grosser},
101     title = {Polyhedral Extraction Tool},
102     booktitle = {Second Int. Workshop on Polyhedral Compilation Techniques
103                 (IMPACT'12)},
104     address = {Paris, France},
105     month = jan,
106     year = {2012}