update pet for support for recent clangs
[ppcg.git] / README
blob13117e26d32806cd13504c60df94ad09d4085139
1 Requirements:
3 - gmp (http://gmplib.org/)
4 - libyaml (http://pyyaml.org/wiki/LibYAML)
5 - LLVM/clang libraries, 2.9 or higher (http://clang.llvm.org/get_started.html)
7 Compilation:
9         git clone git://repo.or.cz/ppcg.git
10         cd ppcg
11         git submodule init
12         git submodule update
13         ./autogen.sh
14         ./configure
15         make
16         make check
18 Specifying tile, grid and block sizes
20 The iterations space tile size, grid size and block size can
21 be specified using the --sizes option.  The argument is a union map
22 in isl notation mapping kernels identified by their sequence number
23 in a "kernel" space to singleton sets in the "tile", "grid" and "block"
24 spaces.  The sizes are specified outermost to innermost.
26 The dimension of the "tile" space indicates the (maximal) number of loop
27 dimensions to tile.  The elements of the single integer tuple
28 specify the tile sizes in each dimension.
30 The dimension of the "grid" space indicates the (maximal) number of block
31 dimensions in the grid.  The elements of the single integer tuple
32 specify the number of blocks in each dimension.
34 The dimension of the "block" space indicates the (maximal) number of thread
35 dimensions in the grid.  The elements of the single integer tuple
36 specify the number of threads in each dimension.
38 For example,
40     { kernel[0] -> tile[64,64]; kernel[i] -> block[16] : i != 4 }
42 specifies that in kernel 0, two loops should be tiled with a tile
43 size of 64 in both dimensions and that all kernels except kernel 4
44 should be run using a block of 16 threads.
46 Since PPCG performs some scheduling, it can be difficult to predict
47 what exactly will end up in a kernel.  If you want to specify
48 tile, grid or block sizes, you may want to run PPCG first with the defaults,
49 examine the kernels and then run PPCG again with the desired sizes.