| # |
| # /**-------------------------------------------------------------------** |
| # ** CLooG ** |
| # **-------------------------------------------------------------------** |
| # ** The Chunky Loop Generator ** |
| # **-------------------------------------------------------------------** |
| # ** First version of this file: january 22th 2002 ** |
| # **-------------------------------------------------------------------**/ |
| # |
| |
| For complete informations about this software, how to build and use it, |
| please see the postscript file in the ./doc subdirectory (a pdf version |
| is available in the web site). |
| |
| Overview : |
| I. Description |
| II. Building CLooG |
| III. Options |
| IV. Running CLooG |
| V. General Questions |
| |
| # **-------------------------------------------------------------------** |
| # ** I. Description ** |
| # **-------------------------------------------------------------------**/ |
| |
| CLooG is a software which generates loops for scanning Z-polyhedra. That is, |
| CLooG finds the code or pseudo-code where each integral point of one or more |
| parametrized polyhedron or parametrized polyhedra union is reached. CLooG is |
| designed to avoid control overhead and to produce a very efficient code. |
| |
| Its input is some data on the polyhedra to scan, basically the system of |
| affine inequalities that define them, and a context that defines some |
| properties known on the parameters if any. The output is the pseudo scanning |
| code. Many facilities are provided to generate a near-to-be-compileable code, |
| and every useful functions to generate the code may be called from the CLooG |
| library. |
| |
| INPUT | OUTPUT |
| (fortunately not exactly the input, | (the real one, with default options) |
| check test/readme.cloog for the | |
| real input for that problem !) | |
| | |
| j^ i>=2 | |
| | | j<=n+2-i | |
| | |\ | i<=n | |
| | | \ | | |
| m-+-****---+-j<=m | for (i=2;i<=n;i++) { |
| | ***** | | for (j=2;j<=min(m,-i+n+2);j++) { |
| | ****** | ==> S1 ; |
| | *******| | } |
| 2-+-********-j>=2 | } |
| | | |\ | |
| 0-+-+------+--->i | |
| | | | | |
| 0 2 n | |
| | |
| Context : n>=2 | |
| m>=2 | |
| System : 2<=i<=n | |
| 2<=j<=m | |
| j<=n+2-i | |
| |
| # **-------------------------------------------------------------------** |
| # ** II. Building CLooG ** |
| # **-------------------------------------------------------------------**/ |
| |
| If you obtained CLooG from the git repository, then you first |
| need to obtain the submodules and create a configure script. |
| |
| ./get_submodules.sh |
| ./autogen.sh |
| |
| The first step is only needed if you plan on using the isl backend. |
| |
| The configure shell script attempts to guess correct values for various |
| system-dependent variables used during compilation. It uses those values to |
| create a Makefile. The file configure.ac is used to create configure by a |
| program called autoconf. You only need configure.ac if you want to change |
| it or regenerate configure using a newer version of autoconf. |
| |
| The simplest way to compile this package is: |
| cd to the directory containing the package's source code and type |
| |
| ./configure |
| |
| to configure the package for your system (while running, configure prints |
| some messages telling which features it is checking for). To compile the |
| package, type |
| |
| make |
| |
| |
| to install the program and/or the library, type |
| |
| make install |
| |
| you can remove the program binaries and object files from the source code |
| directory by typing |
| |
| make clean |
| |
| To also remove the files that configure created (so you can compile the |
| package for a different kind of computer) type |
| |
| make distclean |
| |
| # **-------------------------------------------------------------------** |
| # ** III. Options ** |
| # **-------------------------------------------------------------------**/ |
| |
| By default, make will install the package's files in /usr/local/bin, |
| /usr/local/lib, etc. You can specify an installation prefix other than |
| /usr/local by giving onfigure the option --prefix=PATH. |
| |
| By default, configure will use the isl that comes bundled with CLooG. |
| Using the --with-isl option of configure the user can specify that "no" isl, |
| a previously installed ("system") isl or a "build" isl should be used. |
| In the latter case, the user should also specify the build location |
| using --with-isl-builddir=PATH. In case of an installed isl, |
| the installation location can be specified using the |
| --with-isl-prefix=PATH and --with-isl-exec-prefix=PATH options of configure. |
| |
| By default, configure will seek the PolyLib in standard locations. |
| If necessary, you can specify the PolyLib's path by giving configure the |
| option --with-polylib-prefix=PATH and/or --with-polylib-exec-prefix=PATH. |
| |
| By default, configure will seek the GMP library in standard locations. |
| If necessary, you can specify the GMP's path by giving configure the |
| option --with-gmp-prefix=PATH and/or --with-gmp-exec-prefix=PATH. |
| |
| By default, when using the PolyLib backend, |
| CLooG and its library are built using 64 bits integer |
| representation. You can choose to specify explicitly others integer |
| representations by using: |
| --with-bits=32 for 32 bits integers, |
| --with-bits=64 for 64 bits integers (default), |
| --with-bits=gmp for multiple precision integers. |
| |
| # **-------------------------------------------------------------------** |
| # ** IV. Running CLooG ** |
| # **-------------------------------------------------------------------**/ |
| |
| To run CLooG, simply type 'cloog', optionally followed by the name of an |
| input file. You can type 'cloog -h' or 'cloog --help' for some help. |
| For more informations, please check the ./doc subdirectory. |
| |
| # **-------------------------------------------------------------------** |
| # ** V. General Questions ** |
| # **-------------------------------------------------------------------**/ |
| |
| 1. What does CLooG means ? |
| |
| CLooG is the Chunky LOOp Generator, Chunky is an automatic loop optimizer for |
| data locality. CLooG is a completely independent part of the Chunky project. |
| Pronounce 'CLooG' as 'klug', which means 'sly' in german :-). |
| |
| 2. CLooG do not compile, what should I do ? |
| |
| CLooG should compile everywhere (assuming that PolyLib is still there), thus |
| there is a problem or the documentation is not clear, in both case it is |
| necessary to ask the author(s) ! |
| |
| 3. I need a feature that CLooG do not implement, what should I do ? |
| |
| There are two ways. First, CLooG is a LGPL software and library. So you |
| are welcome to improve it yourself ;-) ! Many project have been successful, it |
| is -maybe- a sign that this is not too hard to put your hands inside the |
| source. Second, just ask the author(s) :-) ! Maybe a lot of people would be |
| interessed by such feature, maybe many people asked for it before, maybe it's |
| trivial to implement (and even)... Please just never hesitate to ask the |
| author(s) ! |
| |
| 4. I implemented a cool feature, can I submit it ? |
| |
| Obviously you are welcome to send the author(s) any improvement. But obviously |
| we are quite careful with readability, correctness and stability, and the |
| author(s) will read, check and check again any contribution before including it. |
| Thus, it can take time... There are few basic rules to write contributions: |
| - (1) Do never change the indentation of any part of the code that is not yours. |
| - (2) Do never send codes that use more than 80 columns. |
| - (3) Do never send codes without a lot of comments in (bad or good) english. |
| - (4) Do never send codes with obscure and/or non-english variable names. |
| - (5) Use C89, just C, only C (note: "//" comments are not C89, |
| variable declaration elsewhere than at the beginning of a block, is not C89). |
| - (6) Read doc/SubmittingPatches |
| Please understand that in order to live for a long time, and to be used in many |
| projects the very first priority for CLooG is to be readable and documented. |
| |
| 5. Is CLooG bug free ? |
| |
| No, who can ? ClooG is a complex program, and we do not pretend it to be bug |
| free. Nevertheless because it has been tested and tested, we are fairly sure |
| that CLooG results with default options have good chances to be satisfactory. |
| If you find a result that looks strange, inadequate or incorrect, please send: |
| - (1) The input file to the author(s). |
| - (2) The output. |
| - (3) The first line given by typing 'cloog -v'. |
| - (4) All your command line options to achieve the result. |
| We will try to explain the result or to fix the problem as soon as possible. |
| |
| 6. How can I contact the author(s) ? |
| |
| Just send a mail to [email protected] |