optionally perform hybrid tiling
commite152d98dcd7964d70ef71e57b636dc0d639d7211
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 27 Nov 2013 11:04:20 +0000 (27 12:04 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 3 Jun 2016 14:22:58 +0000 (3 16:22 +0200)
treebabea93cf3e77f78402c0790e0131f382da259ce
parent12dbb2a0d120835e8bef75bb8c14f4a57ab5ec0e
optionally perform hybrid tiling

The hybrid tiling is based on Grosser et al.,
"Hybrid Hexagonal/Classical Tiling for GPUs" with a few minor corrections.
This commit only implements the basic hybrid tiling and not
some of the other optimizations in the same paper.

Hybrid tiling is turned on with the --hybrid option.
If this option is set, and if some subtree of the scheduled
schedule tree contains a pattern that is suitable for hybrid tiling,
the relative dependence distances are computed.
If these are appropriately bounded, hybrid tiling is applied.
Within each phase of the tiling a GPU kernel is created.

The bounds on the dependence distances are computed by projecting
the dependence distances on a two-dimensional space and computing
the convex hull.  An alternative would be to use wrapping.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Makefile.am
README
gpu.c
gpu_hybrid.c [new file with mode: 0644]
gpu_hybrid.h [new file with mode: 0644]
hybrid.c [new file with mode: 0644]
hybrid.h [new file with mode: 0644]
ppcg_options.c
ppcg_options.h