forked from OSchip/llvm-project
Use schedule trees to compute dependences
This patch changes Polly to compute the data-dependences on the schedule tree instead of a flat schedule representation. Calculating dependences directly on the schedule tree results in some good compile-time improvements (adi : -23.35%, 3mm : -9.57%), as the structure of the schedule can be exploited for increased efficiency. Earlier experiments with schedule tree based dependence analysis in Polly showed some compile-time regressions. These regressions arose due to the schedule tree based dependence analysis not taking into account the domain constraints of the schedule tree. As a result, the computed dependences were different and this difference caused in some cases the schedule optimizer to take a very long time. Since isl version fe865996 the schedule tree based dependence analysis takes domain constraints into account, which fixes the earlier compile-time issues. Contributed-by: Pratik Bhatu <cs12b1010@iith.ac.in> llvm-svn: 245300
This commit is contained in:
parent
079968e4cf
commit
cf9ebb63d6
|
@ -255,13 +255,11 @@ void Dependences::calculateDependences(Scop &S) {
|
|||
|
||||
collectInfo(S, &Read, &Write, &MayWrite, &AccessSchedule, &StmtSchedule);
|
||||
|
||||
// TODO: Compute dependences directly on the schedule tree
|
||||
//
|
||||
// We currently don't do this yet, as the compile-time performance
|
||||
// implications are not 100% understood (we see some regressions).
|
||||
if (false && isl_union_map_is_empty(AccessSchedule)) {
|
||||
if (isl_union_map_is_empty(AccessSchedule)) {
|
||||
isl_union_map_free(AccessSchedule);
|
||||
Schedule = S.getScheduleTree();
|
||||
Schedule = isl_schedule_intersect_domain(
|
||||
Schedule, isl_union_set_from_set(S.getAssumedContext()));
|
||||
} else {
|
||||
auto *ScheduleMap =
|
||||
isl_union_map_union(AccessSchedule, isl_union_map_copy(StmtSchedule));
|
||||
|
|
Loading…
Reference in New Issue