Created
September 17, 2023 14:18
-
-
Save zhen8838/8ea9ef7c04430af70ff56633ebd94f93 to your computer and use it in GitHub Desktop.
tiramisu internal
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Saved variable t4 of type int32 | |
[src/tiramisu_core.cpp:7196 computation] | |
| Constructing a scheduled computation. | |
| Creating computation bx | |
| Constructed iteration domain: {bx[i, j, c] : 0<=i<98 and 0<=j<198 and 0<=c<3} | |
| [src/tiramisu_core.cpp:6985 init_computation] | |
| | Constructing the computation: {bx[i, j, c] : 0<=i<98 and 0<=j<198 and 0<=c<3} | |
| | [src/tiramisu_core.cpp:2794 name_unnamed_iteration_domain_dimensions] | |
| | | named unnameed iteration domain: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | Constructing the computation name: bx | |
| | [src/tiramisu_function.cpp:1813 add_computation] | |
| | [src/tiramisu_core.cpp:7721 set_identity_schedule_based_on_iteration_domain] | |
| | | [src/tiramisu_core.cpp:7656 gen_identity_schedule_for_iteration_domain] | |
| | | The following identity schedule is generated (setting schedule 0): | |
| | | { bx[i, j, c] -> bx[0, 0, i' = i, 0, j' = j, 0, c' = c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | The identity schedule for the original computation is set. | |
| | [src/tiramisu_core.cpp:7834 set_expression] | |
| | | The original expression is: (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) )| | | | |
| | | Traversing the expression to replace non-affine accesses by a constant definition. | |
| | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | Input expression: (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) ) | |
| | | | Extracting access from e_op. | |
| | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | Input expression: ((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) | |
| | | | | Extracting access from e_op. | |
| | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | Input expression: (input(i, j, c) + input(i, (j + 1), c)) | |
| | | | | | Extracting access from e_op. | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: input(i, j, c) | |
| | | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: i | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: j | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: c | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: input(i, (j + 1), c) | |
| | | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: i | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: (j + 1) | |
| | | | | | | | Extracting access from e_op. | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | Input expression: j | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | Input expression: 1 | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: c | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | Input expression: input(i, (j + 2), c) | |
| | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: i | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: (j + 2) | |
| | | | | | | Extracting access from e_op. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: j | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: 2 | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: c | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | Input expression: cast(3) | |
| | | | | Extracting access from e_op. | |
| | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | Input expression: 3 | |
| | | The new expression is: (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) )| | | | |
| | [src/tiramisu_core.cpp:2816 get_iteration_domain_dimension_names] | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 0 | |
| | | Setting the name of the domain of the schedule dimension 0 into t5 | |
| | | The schedule after renaming: { bx[t5, j, c] -> bx[0, 0, i = t5, 0, j' = j, 0, c' = c, 0] : 0 <= t5 <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 1 | |
| | | Setting the name of the domain of the schedule dimension 1 into t6 | |
| | | The schedule after renaming: { bx[t5, t6, c] -> bx[0, 0, i = t5, 0, j = t6, 0, c' = c, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= c <= 2 } | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 2 | |
| | | Setting the name of the domain of the schedule dimension 2 into t7 | |
| | | The schedule after renaming: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 0 | |
| | | Setting the name of loop level 0 into i | |
| | | The schedule after renaming: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 1 | |
| | | Setting the name of loop level 1 into j | |
| | | The schedule after renaming: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 2 | |
| | | Setting the name of loop level 2 into c | |
| | | The schedule after renaming: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Searching computation bx | |
| | Computation found. | |
| [src/tiramisu_core.cpp:6771 buffer] | |
| | Constructed buffer :_bx_b1 [(98 - 0), (198 - 0), (3 - 0), ] | |
| [src/tiramisu_core.cpp:7874 store_in] | |
| | Binding. The following access function is set: { bx[i, j, c] -> _bx_b1[i' = i, j' = j, c' = c] } | |
| | [src/tiramisu_core.cpp:7609 set_access] | |
| | | Setting access { bx[i, j, c] -> _bx_b1[i' = i, j' = j, c' = c] } for computation bx | |
| | | Searching computation bx | |
| | | Computation found. | |
| | | Searching computation bx | |
| | | Computation found. | |
| Constructed computation: | |
Dumping the computation "bx" : | |
Iteration domain of the computation "bx" : Dumping the schedule of the computation bx : Expression of the computation : (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) ) | |
Access relation of the computation : Time-space domain : NULL. | |
Computation to be scheduled ? 1 | |
Halide statement: NULL | |
Saved variable t8 of type int32 | |
[src/tiramisu_core.cpp:7196 computation] | |
| Constructing a scheduled computation. | |
| Creating computation by | |
| Constructed iteration domain: {by[i, j, c] : 0<=i<98 and 0<=j<198 and 0<=c<3} | |
| [src/tiramisu_core.cpp:6985 init_computation] | |
| | Constructing the computation: {by[i, j, c] : 0<=i<98 and 0<=j<198 and 0<=c<3} | |
| | [src/tiramisu_core.cpp:2794 name_unnamed_iteration_domain_dimensions] | |
| | | named unnameed iteration domain: { by[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | Constructing the computation name: by | |
| | [src/tiramisu_function.cpp:1813 add_computation] | |
| | [src/tiramisu_core.cpp:7721 set_identity_schedule_based_on_iteration_domain] | |
| | | [src/tiramisu_core.cpp:7656 gen_identity_schedule_for_iteration_domain] | |
| | | The following identity schedule is generated (setting schedule 0): | |
| | | { by[i, j, c] -> by[0, 0, i' = i, 0, j' = j, 0, c' = c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | The identity schedule for the original computation is set. | |
| | [src/tiramisu_core.cpp:7834 set_expression] | |
| | | The original expression is: (((input(i, j, c) + input((i + 1), j, c)) + input((i + 2), j, c)) / cast(3) )| | | | |
| | | Traversing the expression to replace non-affine accesses by a constant definition. | |
| | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | Input expression: (((input(i, j, c) + input((i + 1), j, c)) + input((i + 2), j, c)) / cast(3) ) | |
| | | | Extracting access from e_op. | |
| | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | Input expression: ((input(i, j, c) + input((i + 1), j, c)) + input((i + 2), j, c)) | |
| | | | | Extracting access from e_op. | |
| | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | Input expression: (input(i, j, c) + input((i + 1), j, c)) | |
| | | | | | Extracting access from e_op. | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: input(i, j, c) | |
| | | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: i | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: j | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: c | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: input((i + 1), j, c) | |
| | | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: (i + 1) | |
| | | | | | | | Extracting access from e_op. | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | Input expression: i | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | Input expression: 1 | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: j | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: c | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | Input expression: input((i + 2), j, c) | |
| | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: (i + 2) | |
| | | | | | | Extracting access from e_op. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: i | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: 2 | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: j | |
| | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | Input expression: c | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | Input expression: cast(3) | |
| | | | | Extracting access from e_op. | |
| | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | Input expression: 3 | |
| | | The new expression is: (((input(i, j, c) + input((i + 1), j, c)) + input((i + 2), j, c)) / cast(3) )| | | | |
| | [src/tiramisu_core.cpp:2816 get_iteration_domain_dimension_names] | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 0 | |
| | | Setting the name of the domain of the schedule dimension 0 into t9 | |
| | | The schedule after renaming: { by[t9, j, c] -> by[0, 0, i = t9, 0, j' = j, 0, c' = c, 0] : 0 <= t9 <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 1 | |
| | | Setting the name of the domain of the schedule dimension 1 into t10 | |
| | | The schedule after renaming: { by[t9, t10, c] -> by[0, 0, i = t9, 0, j = t10, 0, c' = c, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= c <= 2 } | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 2 | |
| | | Setting the name of the domain of the schedule dimension 2 into t11 | |
| | | The schedule after renaming: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 0 | |
| | | Setting the name of loop level 0 into i | |
| | | The schedule after renaming: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 1 | |
| | | Setting the name of loop level 1 into j | |
| | | The schedule after renaming: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 2 | |
| | | Setting the name of loop level 2 into c | |
| | | The schedule after renaming: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | Searching computation by | |
| | Computation found. | |
| [src/tiramisu_core.cpp:6771 buffer] | |
| | Constructed buffer :_by_b2 [(98 - 0), (198 - 0), (3 - 0), ] | |
| [src/tiramisu_core.cpp:7874 store_in] | |
| | Binding. The following access function is set: { by[i, j, c] -> _by_b2[i' = i, j' = j, c' = c] } | |
| | [src/tiramisu_core.cpp:7609 set_access] | |
| | | Setting access { by[i, j, c] -> _by_b2[i' = i, j' = j, c' = c] } for computation by | |
| | | Searching computation by | |
| | | Computation found. | |
| | | Searching computation by | |
| | | Computation found. | |
| Constructed computation: | |
Dumping the computation "by" : | |
Iteration domain of the computation "by" : Dumping the schedule of the computation by : Expression of the computation : (((input(i, j, c) + input((i + 1), j, c)) + input((i + 2), j, c)) / cast(3) ) | |
Access relation of the computation : Time-space domain : NULL. | |
Computation to be scheduled ? 1 | |
Halide statement: NULL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[src/tiramisu_core.cpp:5655 compute_at] | |
| [src/tiramisu_core.cpp:2719 get_loop_level_numbers_from_dimension_names] | |
| | Searching for the dimension j0 | |
| | Searching in the range of { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | Corresponding loop level is 1 | |
| | Checking the validity of loop level 1 | |
| [src/tiramisu_core.cpp:5450 compute_at] | |
| | [src/tiramisu_function.cpp:1777 align_schedules] | |
| | | [src/tiramisu_function.cpp:1717 get_max_schedules_range_dim] | |
| | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | Input map: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | After alignment, map = { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0, 0, 0, 0, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | [src/tiramisu_core.cpp:2765 name_unnamed_time_space_dimensions] | |
| | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | Input map: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | After alignment, map = { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, 0, 0, 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | [src/tiramisu_core.cpp:2765 name_unnamed_time_space_dimensions] | |
| | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | Input map: { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | | | After alignment, map = { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | | [src/tiramisu_core.cpp:2765 name_unnamed_time_space_dimensions] | |
| | End of function | |
| | Setting the schedule of the producer bx to be computed at the loop nest of the consumer by at dimension 5 | |
| | Original schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | [src/tiramisu_core.cpp:5257 compute_needed_and_produced] | |
| | | [src/tiramisu_codegen_halide.cpp:951 get_rhs_accesses] | |
| | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | Extracting access from e_op. | |
| | | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | | Extracting access from e_op. | |
| | | | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | | | Extracting access from e_op. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | | | | Extracting access from o_access. | |
| | | | | | | | Searching computation bx | |
| | | | | | | | Computation found. | |
| | | | | | | | Obtained accessed computation. | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:100 create_map_from_domain_and_range] | |
| | | | | | | | | Domain: { by[i, j, c] } | |
| | | | | | | | | Range: { bx[i, j, c] } | |
| | | | | | | | | Transformation map: { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | | | Transformation map after adding equality constraints: { by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | | | | | | Transformation map before adding constraints: { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | | Assigning 1 to the coefficient of output dimension 0 | |
| | | | | | | | Looking for a dimension named i in the domain of { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 0 | |
| | | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = i, j', c'] } | |
| | | | | | | | Assigning 1 to the coefficient of output dimension 1 | |
| | | | | | | | Looking for a dimension named j in the domain of { by[i, j, c] -> bx[i' = i, j', c'] } | |
| | | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 1 | |
| | | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = i, j' = j, c'] } | |
| | | | | | | | Assigning 1 to the coefficient of output dimension 2 | |
| | | | | | | | Looking for a dimension named c in the domain of { by[i, j, c] -> bx[i' = i, j' = j, c'] } | |
| | | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 2 | |
| | | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | | | | | | Transformation function after adding constraints: { by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | | | | Extracting access from o_access. | |
| | | | | | | | Searching computation bx | |
| | | | | | | | Computation found. | |
| | | | | | | | Obtained accessed computation. | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:100 create_map_from_domain_and_range] | |
| | | | | | | | | Domain: { by[i, j, c] } | |
| | | | | | | | | Range: { bx[i, j, c] } | |
| | | | | | | | | Transformation map: { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | | | Transformation map after adding equality constraints: { by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | | | | | | Transformation map before adding constraints: { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | | Assigning 1 to the coefficient of output dimension 0 | |
| | | | | | | | Looking for a dimension named i in the domain of { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 0 | |
| | | | | | | | Assigning -(coeff * access_expression.get_int_val() - isl_val_get_num_si(isl_constraint_get_constant_val(cst))) to the cst dimension. The value assigned is : -1 | |
| | | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = 1 + i, j', c'] } | |
| | | | | | | | Assigning 1 to the coefficient of output dimension 1 | |
| | | | | | | | Looking for a dimension named j in the domain of { by[i, j, c] -> bx[i' = 1 + i, j', c'] } | |
| | | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 1 | |
| | | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = 1 + i, j' = j, c'] } | |
| | | | | | | | Assigning 1 to the coefficient of output dimension 2 | |
| | | | | | | | Looking for a dimension named c in the domain of { by[i, j, c] -> bx[i' = 1 + i, j' = j, c'] } | |
| | | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 2 | |
| | | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = 1 + i, j' = j, c' = c] } | |
| | | | | | | | Transformation function after adding constraints: { by[i, j, c] -> bx[i' = 1 + i, j' = j, c' = c] } | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | | | Extracting access from o_access. | |
| | | | | | | Searching computation bx | |
| | | | | | | Computation found. | |
| | | | | | | Obtained accessed computation. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:100 create_map_from_domain_and_range] | |
| | | | | | | | Domain: { by[i, j, c] } | |
| | | | | | | | Range: { bx[i, j, c] } | |
| | | | | | | | Transformation map: { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | | Transformation map after adding equality constraints: { by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | | | | | Transformation map before adding constraints: { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | Assigning 1 to the coefficient of output dimension 0 | |
| | | | | | | Looking for a dimension named i in the domain of { by[i, j, c] -> bx[i', j', c'] } | |
| | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 0 | |
| | | | | | | Assigning -(coeff * access_expression.get_int_val() - isl_val_get_num_si(isl_constraint_get_constant_val(cst))) to the cst dimension. The value assigned is : -2 | |
| | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = 2 + i, j', c'] } | |
| | | | | | | Assigning 1 to the coefficient of output dimension 1 | |
| | | | | | | Looking for a dimension named j in the domain of { by[i, j, c] -> bx[i' = 2 + i, j', c'] } | |
| | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 1 | |
| | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = 2 + i, j' = j, c'] } | |
| | | | | | | Assigning 1 to the coefficient of output dimension 2 | |
| | | | | | | Looking for a dimension named c in the domain of { by[i, j, c] -> bx[i' = 2 + i, j' = j, c'] } | |
| | | | | | | Dimension found. Assigning -1 to the input coefficient of dimension 2 | |
| | | | | | | After adding a constraint: { by[i, j, c] -> bx[i' = 2 + i, j' = j, c' = c] } | |
| | | | | | | Transformation function after adding constraints: { by[i, j, c] -> bx[i' = 2 + i, j' = j, c' = c] } | |
| | | | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | | Extracting access from e_op. | |
| | | | | | [src/tiramisu_codegen_halide.cpp:603 traverse_expr_and_extract_accesses] | |
| | | | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | | [src/tiramisu_codegen_halide.cpp:794 traverse_expr_and_extract_accesses] | |
| | | [src/tiramisu_codegen_halide.cpp:967 get_rhs_accesses] | |
| | | Computed RHS accesses: | |
| | | { by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | { by[i, j, c] -> bx[i' = 1 + i, j' = j, c' = c] } | |
| | | { by[i, j, c] -> bx[i' = 2 + i, j' = j, c' = c] } | |
| | | Vector of accesses computed. | |
| | | Computing a union map of accesses to the producer. | |
| | | consumer_accesses: { by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | access: { by[i, j, c] -> bx[i' = 1 + i, j' = j, c' = c] } | |
| | | consumer_accesses: { by[i, j, c] -> bx[i' = 1 + i, j' = j, c' = c]; by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | access: { by[i, j, c] -> bx[i' = 2 + i, j' = j, c' = c] } | |
| | | Union computed. | |
| | | Intersecting the range and the domain of the following consumer_accesses: { by[i, j, c] -> bx[i' = 2 + i, j' = j, c' = c]; by[i, j, c] -> bx[i' = 1 + i, j' = j, c' = c]; by[i, j, c] -> bx[i' = i, j' = j, c' = c] } | |
| | | with the following iteration domain: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | [src/tiramisu_core.cpp:5121 intersect_map_domain_with_context] | |
| | | Accesses after keeping only those that have the producer in the range: | |
| | | { by[i, j, c] -> bx[i', j' = j, c' = c] : i >= 0 and 0 <= j <= 197 and 0 <= c <= 2 and i <= i' <= 97 and i' <= 2 + i } | |
| | | [src/tiramisu_core.cpp:5077 intersect_set_with_context] | |
| | | [src/tiramisu_core.cpp:5121 intersect_map_domain_with_context] | |
| | | [src/tiramisu_core.cpp:5121 intersect_map_domain_with_context] | |
| | | [src/tiramisu_core.cpp:5077 intersect_set_with_context] | |
| | | Applying consumer_sched on the domain of consumer_accesses. | |
| | | consumer_sched: { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | | consumer_accesses: { by[i, j, c] -> bx[i', j' = j, c' = c] : i >= 0 and 0 <= j <= 197 and 0 <= c <= 2 and i <= i' <= 97 and i' <= 2 + i } | |
| | | Applying it on the range. | |
| | | | |
| | | | |
| | | Consumer domain (in time-processor): { by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c, t35 = 0] : 0 <= i1 <= 31 and 0 <= j1 <= 31 and 0 <= c <= 2 and -32 - 32i0 - i1 <= 32*floor((-1 - i1)/32) <= 65 - 32i0 - i1 and -32 - 32j0 - j1 <= 32*floor((-1 - j1)/32) <= 165 - 32j0 - j1 } | |
| | | Consumer accesses (in time-processor): { by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c, t35 = 0] -> bx[0, 0, i, 0, j, 0, c' = c, 0, t38 = 0, 0, t39 = 0, 0] : (-j1 + j) mod 32 = 0 and 0 <= i1 <= 31 and 0 <= j1 <= 31 and 0 <= c <= 2 and 0 <= i <= 97 and j >= 32j0 and 0 <= j <= 197 and j <= 31 + 32j0 and 32*floor((-1 - i1)/32) >= -34 - 32i0 - i1 + i and -32 - 32i0 - i1 <= 32*floor((-1 - i1)/32) <= 65 - 32i0 - i1 and 32*floor((-1 - i1)/32) <= -32 - 32i0 - i1 + i } | |
| | | Producer domain (in time-processor): { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | Consumer domain after fixing left dimensions to parameters: [t40, t41] -> { by[0, t27 = 0, i0 = t40, t29 = 0, j0 = t41, t31 = 0, i1, t24 = 0, j1, t33 = 0, c, t35 = 0] : 0 <= i1 <= 31 and 0 <= j1 <= 31 and 0 <= c <= 2 and -32 - 32t40 - i1 <= 32*floor((-1 - i1)/32) <= 65 - 32t40 - i1 and -32 - 32t41 - j1 <= 32*floor((-1 - j1)/32) <= 165 - 32t41 - j1 } | |
| | | Producer domain after fixing left dimensions to parameters: [t40, t41] -> { bx[0, 0, i = t40, 0, j = t41, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t40 <= 97 and 0 <= t41 <= 197 and 0 <= c <= 2 } | |
| | | [src/tiramisu_core.cpp:5077 intersect_set_with_context] | |
| | | Needed in time-processor = consumer_access(consumer_domain) in time-processor: [t40, t41] -> { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and j >= 32t41 and 0 <= j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j } | |
| | [src/tiramisu_core.cpp:5077 intersect_set_with_context] | |
| | Missing = needed - producer = [t40, t41] -> { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j; bx[0, 0, i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t41 = 0 and t40 >= 0 and i >= 32t40 and t40 < i <= 97 and i <= 33 + 32t40 and 0 <= c <= 2 and 32*floor((-1)/1) < 0 } | |
| | | |
| | | |
| | [src/tiramisu_core.cpp:5178 get_shift_degrees] | |
| | | Getting the shift degrees for the missing set. | |
| | | The missing set is: [t40, t41] -> { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j; bx[0, 0, i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t41 = 0 and t40 >= 0 and i >= 32t40 and t40 < i <= 97 and i <= 33 + 32t40 and 0 <= c <= 2 and 32*floor((-1)/1) < 0 } | |
| | | Get the shift degrees up to the loop level : 1 | |
| | | The current dynamic dimension is: 2 | |
| | | Projecting out all the dimensions of the set except the dimension 2 | |
| | | Projecting 2 dimensions starting from dimension 0. | |
| | | After projection: [t40, t41] -> { [i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j; [i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t41 = 0 and t40 >= 0 and i >= 32t40 and t40 < i <= 97 and i <= 33 + 32t40 and 0 <= c <= 2 } | |
| | | Projecting 9 dimensions starting from dimension 1. | |
| | | After projection: [t40, t41] -> { [i] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and ((0 <= t41 <= 6) or (t41 = 0 and i > t40)) } | |
| | | [src/tiramisu_core.cpp:1889 isl_set_get_const_dim] | |
| | | | Getting the constant coefficient of [t40, t41] -> { [i] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and ((0 <= t41 <= 6) or (t41 = 0 and i > t40)) } at dimension 0 | |
| | | | The constant is: 0 | |
| | | The constant value of the remaining dimension is: 0 | |
| | | The current dynamic dimension is: 4 | |
| | | Projecting out all the dimensions of the set except the dimension 4 | |
| | | Projecting 4 dimensions starting from dimension 0. | |
| | | After projection: [t40, t41] -> { [j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t40 <= 3 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j; [j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t41 = 0 and 0 <= t40 <= 3 and 0 <= c <= 2 } | |
| | | After projection: [t40, t41] -> { [j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t40 <= 3 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j; [j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t41 = 0 and 0 <= t40 <= 3 and 0 <= c <= 2 } | |
| | | [src/tiramisu_core.cpp:1889 isl_set_get_const_dim] | |
| | | | Getting the constant coefficient of [t40, t41] -> { [j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t40 <= 3 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j; [j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t41 = 0 and 0 <= t40 <= 3 and 0 <= c <= 2 } at dimension 0 | |
| | | | Dimensions found. Constant = 0 | |
| | | | The constant is: 0 | |
| | | The constant value of the remaining dimension is: 0 | |
| | | Shift degrees are: 0 0 | |
| | Retrieving the constraints of the bset: [t40, t41] -> { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0, pt40, pt41] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j } | |
| | Number of constraints: 21 | |
| | List of constraints: | |
| | Checking the constraint number 0 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i11 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 1 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t39 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 2 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i9 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 3 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t38 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 4 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i7 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 5 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i5 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 6 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i3 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 7 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i1 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 8 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i0 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 9 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t40 >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : pt40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 10 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -32t40 + i >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -32t40 + i >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i - 32pt40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 11 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 97 - i >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 12 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 33 + 32t40 - i >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 33 + 32t40 - i >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 33 - i + 32pt40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 13 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -32t41 + j >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -32t41 + j >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : j - 32pt41 >= 0 }) | |
| | } | |
| | | |
| | Checking the constraint number 14 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -1 - t41 + j >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -1 - t41 + j >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -1 + j - pt41 >= 0 }) | |
| | } | |
| | | |
| | Checking the constraint number 15 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 197 - j >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 16 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 31 + 32t41 - j >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 31 + 32t41 - j >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 31 - j + 32pt41 >= 0 }) | |
| | } | |
| | | |
| | Checking the constraint number 17 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : c >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 18 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 2 - c >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 19 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 32 + 32t41 + j + 32*floor((-1 - j)/32) >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 32 + 32t41 + j + 32*floor((-1 - j)/32) >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 32 + j + 32pt41 + 32*floor((-1 - j)/32) >= 0 }) | |
| | } | |
| | | |
| | Checking the constraint number 20 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 165 - 32t41 - j - 32*floor((-1 - j)/32) >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 165 - 32t41 - j - 32*floor((-1 - j)/32) >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 165 - j - 32pt41 - 32*floor((-1 - j)/32) >= 0 }) | |
| | } | |
| | | |
| | The basic set after modifying the constraints: | |
| | The new value of missing (after intersecting with the new bset): | |
| | Retrieving the constraints of the bset: [t40, t41] -> { bx[0, 0, i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0, pt40, pt41] : t41 = 0 and t40 >= 0 and i >= 32t40 and t40 < i <= 97 and i <= 33 + 32t40 and 0 <= c <= 2 and 32*floor((-1)/1) < 0 } | |
| | Number of constraints: 19 | |
| | List of constraints: | |
| | Checking the constraint number 0 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i11 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 1 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t39 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 2 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i9 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 3 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t38 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 4 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i7 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 5 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i5 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 6 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : j = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 7 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i3 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 8 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i1 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 9 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i0 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 10 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t41 = 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t41 = 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : pt41 = 0 }) | |
| | } | |
| | | |
| | Checking the constraint number 11 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : t40 >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : pt40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 12 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -32t40 + i >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -32t40 + i >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : i - 32pt40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 13 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 97 - i >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 14 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 33 + 32t40 - i >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 33 + 32t40 - i >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 33 - i + 32pt40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 15 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -1 - 32*floor((-1)/1) >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 16 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -1 - t40 + i >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? Yes. | |
| | Modifying the constraint. The original constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -1 - t40 + i >= 0 }) | |
| | } | |
| | The new constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : -1 + i - pt40 >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 17 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : 2 - c >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | Checking the constraint number 18 | |
| | Constraint: | |
| | { | |
| | ([t40, t41] -> { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11, pt40, pt41] : c >= 0 }) | |
| | } | |
| | Does the constraint involve the parameter t40? No. | |
| | Does the constraint involve the parameter t41? No. | |
| | | |
| | The basic set after modifying the constraints: | |
| | The new value of missing (after intersecting with the new bset): | |
| | Missing before replacing the parameters with existential variables: [t40, t41] -> { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t40 >= 0 and 32t40 <= i <= 97 and i <= 33 + 32t40 and j >= 32t41 and t41 < j <= 197 and j <= 31 + 32t41 and 0 <= c <= 2 and -32 - 32t41 - j <= 32*floor((-1 - j)/32) <= 165 - 32t41 - j; bx[0, 0, i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : t41 = 0 and t40 >= 0 and i >= 32t40 and t40 < i <= 97 and i <= 33 + 32t40 and 0 <= c <= 2 and 32*floor((-1)/1) < 0 } | |
| | Missing after replacing the parameters with existential variables: { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= i <= 97 and 0 < j <= 197 and 0 <= c <= 2 and -32 - j - 32*floor((-1 - j)/32) <= 32*floor((j)/32) <= 165 - j - 32*floor((-1 - j)/32); bx[0, 0, i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 < i <= 97 and 0 <= c <= 2 } | |
| | | |
| | [src/tiramisu_core.cpp:3239 duplicate] | |
| | | Creating a schedule that duplicates bx | |
| | | The duplicate is defined with the following constraints on the domain of the schedule: | |
| | | and the following constraints on the range of the schedule: { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= i <= 97 and 0 < j <= 197 and 0 <= c <= 2 and -32 - j - 32*floor((-1 - j)/32) <= 32*floor((j)/32) <= 165 - j - 32*floor((-1 - j)/32); bx[0, 0, i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 < i <= 97 and 0 <= c <= 2 } | |
| | | [src/tiramisu_function.cpp:1777 align_schedules] | |
| | | | [src/tiramisu_function.cpp:1717 get_max_schedules_range_dim] | |
| | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | Input map: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0, t36 = 0, 0, t37 = 0, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | | After alignment, map = { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0, t36 = 0, 0, t37 = 0, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | [src/tiramisu_core.cpp:2765 name_unnamed_time_space_dimensions] | |
| | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | Input map: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | After alignment, map = { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | [src/tiramisu_core.cpp:2765 name_unnamed_time_space_dimensions] | |
| | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | Input map: { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | | | | After alignment, map = { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | | | [src/tiramisu_core.cpp:2765 name_unnamed_time_space_dimensions] | |
| | | End of function | |
| | | Preparing to adjust the schedule of the computation bx | |
| | | Original schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | The ID of the last duplicate of this computation (i.e., number of duplicates) is : 0 | |
| | | Now creating a map for the new duplicate. | |
| | | The map of the original: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | Intersecting the following schedule and set on the range. | |
| | | Schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | Set: { bx[0, 0, i, 0, j, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= i <= 97 and 0 < j <= 197 and 0 <= c <= 2; bx[0, 0, i, 0, j = 0, 0, c, 0, t38 = 0, 0, t39 = 0, 0] : 0 < i <= 97 and 0 <= c <= 2 } | |
| | | [src/tiramisu_core.cpp:5121 intersect_map_domain_with_context] | |
| | | Resulting schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and t6 >= 0 and -t5 < t6 <= 197 and 0 <= t7 <= 2 } | |
| | | [src/tiramisu_core.cpp:1934 isl_map_set_const_dim] | |
| | | | Setting the constant coefficient of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and t6 >= 0 and -t5 < t6 <= 197 and 0 <= t7 <= 2 } at dimension 0 into 1 | |
| | | | Transformation map { bx[i0, i1, i, i3, j, i5, c, i7, t38, i9, t39, i11] -> bx[1, i1, i' = i, i3, j' = j, i5, c' = c, i7, t38' = t38, i9, t39' = t39, i11] } | |
| | | | After applying the transformation map: { bx[t5, t6, t7] -> bx[1, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and t6 >= 0 and -t5 < t6 <= 197 and 0 <= t7 <= 2 } | |
| | | After setting the dimension 0 to the new_ID: { bx[t5, t6, t7] -> bx[1, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and t6 >= 0 and -t5 < t6 <= 197 and 0 <= t7 <= 2 } | |
| | | The map of the new duplicate is now: { bx[t5, t6, t7] -> bx[1, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and t6 >= 0 and -t5 < t6 <= 197 and 0 <= t7 <= 2 } | |
| | | [src/tiramisu_core.cpp:689 copy] | |
| | | | Saved variable t42 of type int32 | |
| | | | [src/tiramisu_core.cpp:7190 computation] | |
| | | | | [src/tiramisu_core.cpp:6995 init_computation] | |
| | | | | | Constructing the computation: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:2785 name_unnamed_iteration_domain_dimensions] | |
| | | | | | | named unnameed iteration domain: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | Constructing the computation name: bx | |
| | | | | | [src/tiramisu_function.cpp:1813 add_computation] | |
| | | | | | [src/tiramisu_core.cpp:7731 set_identity_schedule_based_on_iteration_domain] | |
| | | | | | | [src/tiramisu_core.cpp:7666 gen_identity_schedule_for_iteration_domain] | |
| | | | | | | The following identity schedule is generated (setting schedule 0): | |
| | | | | | | { bx[i, j, c] -> bx[0, 0, i' = i, 0, j' = j, 0, c' = c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | | The identity schedule for the original computation is set. | |
| | | | | | [src/tiramisu_core.cpp:7844 set_expression] | |
| | | | | | | The original expression is: | |
| | | | | | | { | |
| | | | | | | (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) ) | |
| | | | | | | } | |
| | | | | | | Traversing the expression to replace non-affine accesses by a constant definition. | |
| | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | Input expression: (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) ) | |
| | | | | | | | Extracting access from e_op. | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | Input expression: ((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) | |
| | | | | | | | | Extracting access from e_op. | |
| | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | Input expression: (input(i, j, c) + input(i, (j + 1), c)) | |
| | | | | | | | | | Extracting access from e_op. | |
| | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | Input expression: input(i, j, c) | |
| | | | | | | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: i | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: j | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: c | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | Input expression: input(i, (j + 1), c) | |
| | | | | | | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: i | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: (j + 1) | |
| | | | | | | | | | | | Extracting access from e_op. | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | | Input expression: j | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | | Input expression: 1 | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: c | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | Input expression: input(i, (j + 2), c) | |
| | | | | | | | | | Looking for non-affine accesses in an o_access. | |
| | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | Input expression: i | |
| | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | Input expression: (j + 2) | |
| | | | | | | | | | | Extracting access from e_op. | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: j | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | | Input expression: 2 | |
| | | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | | Input expression: c | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | | | | [src/tiramisu_codegen_halide.cpp:311 access_is_affine] | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | Input expression: cast(3) | |
| | | | | | | | | Extracting access from e_op. | |
| | | | | | | | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | | | | | | | Input expression: 3 | |
| | | | | | | The new expression is: | |
| | | | | | | { | |
| | | | | | | (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) ) | |
| | | | | | | } | |
| | | | | | [src/tiramisu_core.cpp:2807 get_iteration_domain_dimension_names] | |
| | | | | | [src/tiramisu_core.cpp:2649 set_schedule_domain_dim_names] | |
| | | | | | | Checking the validity of loop level 0 | |
| | | | | | | Setting the name of the domain of the schedule dimension 0 into t43 | |
| | | | | | | The schedule after renaming: { bx[t43, j, c] -> bx[0, 0, i = t43, 0, j' = j, 0, c' = c, 0] : 0 <= t43 <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:2649 set_schedule_domain_dim_names] | |
| | | | | | | Checking the validity of loop level 1 | |
| | | | | | | Setting the name of the domain of the schedule dimension 1 into t44 | |
| | | | | | | The schedule after renaming: { bx[t43, t44, c] -> bx[0, 0, i = t43, 0, j = t44, 0, c' = c, 0] : 0 <= t43 <= 97 and 0 <= t44 <= 197 and 0 <= c <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:2649 set_schedule_domain_dim_names] | |
| | | | | | | Checking the validity of loop level 2 | |
| | | | | | | Setting the name of the domain of the schedule dimension 2 into t45 | |
| | | | | | | The schedule after renaming: { bx[t43, t44, t45] -> bx[0, 0, i = t43, 0, j = t44, 0, c = t45, 0] : 0 <= t43 <= 97 and 0 <= t44 <= 197 and 0 <= t45 <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:2672 set_loop_level_names] | |
| | | | | | | Checking the validity of loop level 0 | |
| | | | | | | Setting the name of loop level 0 into i | |
| | | | | | | The schedule after renaming: { bx[t43, t44, t45] -> bx[0, 0, i = t43, 0, j = t44, 0, c = t45, 0] : 0 <= t43 <= 97 and 0 <= t44 <= 197 and 0 <= t45 <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:2672 set_loop_level_names] | |
| | | | | | | Checking the validity of loop level 1 | |
| | | | | | | Setting the name of loop level 1 into j | |
| | | | | | | The schedule after renaming: { bx[t43, t44, t45] -> bx[0, 0, i = t43, 0, j = t44, 0, c = t45, 0] : 0 <= t43 <= 97 and 0 <= t44 <= 197 and 0 <= t45 <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:2672 set_loop_level_names] | |
| | | | | | | Checking the validity of loop level 2 | |
| | | | | | | Setting the name of loop level 2 into c | |
| | | | | | | The schedule after renaming: { bx[t43, t44, t45] -> bx[0, 0, i = t43, 0, j = t44, 0, c = t45, 0] : 0 <= t43 <= 97 and 0 <= t44 <= 197 and 0 <= t45 <= 2 } | |
| | | | | | Searching computation bx | |
| | | | | | Computation found. | |
| | | The schedule of the original computation: | |
| | | The schedule of the duplicate: | |
| | Producer duplicated. Dumping the schedule of the original computation. | |
| | | Dumping the schedule of the computation bx : | |
| | | { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Dumping the schedule of the duplicate computation. | |
| | | Dumping the schedule of the computation bx : | |
| | | { bx[t5, t6, t7] -> bx[1, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and t6 >= 0 and -t5 < t6 <= 197 and 0 <= t7 <= 2 } | |
| | Now setting the duplicate with regard to the other computations. | |
| | [src/tiramisu_core.cpp:2365 after] | |
| | | Scheduling bx to be executed after bx at level 1 | |
| | | sched_graph[bx, bx] = 1 | |
| | [src/tiramisu_core.cpp:2365 after] | |
| | | Scheduling by to be executed after bx at level 1 | |
| | | sched_graph[bx, by] = 1 | |
| | Dumping the schedule of the producer and consumer. | |
| | | Dumping the schedule of the computation bx : | |
| | | { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0, t38 = 0, 0, t39 = 0, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | Dumping the schedule of the computation by : | |
| | | { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Saved variable i0 of type int32 | |
Saved variable j0 of type int32 | |
Saved variable i1 of type int32 | |
Saved variable j1 of type int32 | |
[src/tiramisu_core.cpp:2940 tile] | |
| [src/tiramisu_core.cpp:7747 get_loop_level_names] | |
| | Collecting names of loop levels from the range of the schedule: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | Names of loop levels: i j c | |
| [src/tiramisu_core.cpp:2729 get_loop_level_numbers_from_dimension_names] | |
| | Searching for the dimension i | |
| | Searching in the range of { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | Corresponding loop level is 0 | |
| | Searching for the dimension j | |
| | Searching in the range of { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | Corresponding loop level is 1 | |
| | Checking the validity of loop level 0 | |
| | Checking the validity of loop level 1 | |
| The loop level that corresponds to i is 0 | |
| The loop level that corresponds to j is 1 | |
| [src/tiramisu_core.cpp:2708 tile] | |
| | Checking the validity of loop level 0 | |
| | Checking the validity of loop level 1 | |
| | [src/tiramisu_core.cpp:6296 split] | |
| | | [src/tiramisu_core.cpp:1869 isl_map_get_static_dim] | |
| | | | Getting the constant coefficient of { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } at dimension 0 | |
| | | | Dimensions found. Constant = 0 | |
| | | | The constant is: 0 | |
| | | Original schedule: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | | Splitting dimension 2 with split size 32 | |
| | | Origin Transformation map : {by[t15,t16,t17,t18,t19,t20,t21,t22] -> by[t15,t16,t12, t13, t14,t18,t19,t20,t21,t22] : t15 = 0 and t12 = floor(t17/32) and t14 = (t17%32) and t13 = 0} | |
| | | Transformation map : { by[t15 = 0, t16, t17, t18, t19, t20, t21, t22] -> by[t15' = 0, t16' = t16, t12, t13 = 0, t14, t18' = t18, t19' = t19, t20' = t20, t21' = t21, t22' = t22] : (-t17 + t14) mod 32 = 0 and -31 + t17 <= 32t12 <= t17 and 0 <= t14 <= 31 } | |
| | | Schedule after splitting: { by[t9, t10, t11] -> by[t15 = 0, t16 = 0, t12, t13 = 0, t14, t18 = 0, t19 = t10, t20 = 0, t21 = t11, t22 = 0] : (t9 - t14) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t12 <= t9 and 0 <= t14 <= 31 } | |
| | [src/tiramisu_core.cpp:6296 split] | |
| | | [src/tiramisu_core.cpp:1869 isl_map_get_static_dim] | |
| | | | Getting the constant coefficient of { by[t9, t10, t11] -> by[t15 = 0, t16 = 0, t12, t13 = 0, t14, t18 = 0, t19 = t10, t20 = 0, t21 = t11, t22 = 0] : (t9 - t14) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t12 <= t9 and 0 <= t14 <= 31 } at dimension 0 | |
| | | | Dimensions found. Constant = 0 | |
| | | | The constant is: 0 | |
| | | Original schedule: { by[t9, t10, t11] -> by[t15 = 0, t16 = 0, t12, t13 = 0, t14, t18 = 0, t19 = t10, t20 = 0, t21 = t11, t22 = 0] : (t9 - t14) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t12 <= t9 and 0 <= t14 <= 31 } | |
| | | Splitting dimension 6 with split size 32 | |
| | | Origin Transformation map : {by[t26,t27,t28,t29,t30,t31,t32,t33,t34,t35] -> by[t26,t27,t28,t29,t30,t31,t23, t24, t25,t33,t34,t35] : t26 = 0 and t23 = floor(t32/32) and t25 = (t32%32) and t24 = 0} | |
| | | Transformation map : { by[t26 = 0, t27, t28, t29, t30, t31, t32, t33, t34, t35] -> by[t26' = 0, t27' = t27, t28' = t28, t29' = t29, t30' = t30, t31' = t31, t23, t24 = 0, t25, t33' = t33, t34' = t34, t35' = t35] : (-t32 + t25) mod 32 = 0 and -31 + t32 <= 32t23 <= t32 and 0 <= t25 <= 31 } | |
| | | Schedule after splitting: { by[t9, t10, t11] -> by[t26 = 0, t27 = 0, t28, t29 = 0, t30, t31 = 0, t23, t24 = 0, t25, t33 = 0, t34 = t11, t35 = 0] : (t10 - t25) mod 32 = 0 and (t9 - t30) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t28 <= t9 and 0 <= t30 <= 31 and -31 + t10 <= 32t23 <= t10 and 0 <= t25 <= 31 } | |
| | [src/tiramisu_core.cpp:3091 interchange] | |
| | | Original schedule: { by[t9, t10, t11] -> by[t26 = 0, t27 = 0, t28, t29 = 0, t30, t31 = 0, t23, t24 = 0, t25, t33 = 0, t34 = t11, t35 = 0] : (t10 - t25) mod 32 = 0 and (t9 - t30) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t28 <= t9 and 0 <= t30 <= 31 and -31 + t10 <= 32t23 <= t10 and 0 <= t25 <= 31 } | |
| | | Interchanging the dimensions 1 and 2 | |
| | | [src/tiramisu_core.cpp:1869 isl_map_get_static_dim] | |
| | | | Getting the constant coefficient of { by[t9, t10, t11] -> by[t26 = 0, t27 = 0, t28, t29 = 0, t30, t31 = 0, t23, t24 = 0, t25, t33 = 0, t34 = t11, t35 = 0] : (t10 - t25) mod 32 = 0 and (t9 - t30) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t28 <= t9 and 0 <= t30 <= 31 and -31 + t10 <= 32t23 <= t10 and 0 <= t25 <= 31 } at dimension 0 | |
| | | | Dimensions found. Constant = 0 | |
| | | | The constant is: 0 | |
| | | [src/tiramisu_core.cpp:1869 isl_map_get_static_dim] | |
| | | | Getting the constant coefficient of { by[t9, t10, t11] -> by[t26 = 0, t27 = 0, t28, t29 = 0, t30, t31 = 0, t23, t24 = 0, t25, t33 = 0, t34 = t11, t35 = 0] : (t10 - t25) mod 32 = 0 and (t9 - t30) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t28 <= t9 and 0 <= t30 <= 31 and -31 + t10 <= 32t23 <= t10 and 0 <= t25 <= 31 } at dimension 0 | |
| | | | Dimensions found. Constant = 0 | |
| | | | The constant is: 0 | |
| | | A map that transforms the duplicate | |
| | | { by[0,t27,t28,t29,t30,t31,t23,t24,t25,t33,t34,t35] ->by[0,t27,t28,t29,t23,t31,t30,t24,t25,t33,t34,t35]} | |
| | | Final transformation map : { by[0, t27, t28, t29, t30, t31, t23, t24, t25, t33, t34, t35] -> by[0, t27' = t27, t28' = t28, t29' = t29, t23' = t23, t31' = t31, t30' = t30, t24' = t24, t25' = t25, t33' = t33, t34' = t34, t35' = t35] } | |
| | | Schedule after interchange: { by[t9, t10, t11] -> by[0, t27 = 0, t28, t29 = 0, t23, t31 = 0, t30, t24 = 0, t25, t33 = 0, t34 = t11, t35 = 0] : (t10 - t25) mod 32 = 0 and (t9 - t30) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32t28 <= t9 and -31 + t10 <= 32t23 <= t10 and 0 <= t30 <= 31 and 0 <= t25 <= 31 } | |
| [src/tiramisu_core.cpp:1187 update_names] | |
| | Original loop level names: i j c | |
| | New names: i0 j0 i1 j1 | |
| | Start erasing from: 0 | |
| | Number of loop levels to erase: 2 | |
| | Original loop level names after erasing loop levels: c | |
| | Original loop level names after inserting the new loop levels: i0 j0 i1 j1 c | |
| | [src/tiramisu_core.cpp:2631 set_loop_level_names] | |
| | | Number of loop levels: 5 | |
| | | Number of names to be set: 5 | |
| | | Setting the name of loop level 0 into i0 | |
| | | Setting the name of loop level 1 into j0 | |
| | | Setting the name of loop level 2 into i1 | |
| | | Setting the name of loop level 3 into j1 | |
| | | Setting the name of loop level 4 into c | |
| | | The schedule after renaming: { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | Names updated. New names are: | |
| | [src/tiramisu_core.cpp:7747 get_loop_level_names] | |
| | | Collecting names of loop levels from the range of the schedule: { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | | Names of loop levels: i0 j0 i1 j1 c | |
[src/tiramisu_core.cpp:379 tag_gpu_level] | |
| [src/tiramisu_core.cpp:2729 get_loop_level_numbers_from_dimension_names] | |
| | Searching for the dimension i0 | |
| | Searching in the range of { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | Corresponding loop level is 0 | |
| | Searching for the dimension j0 | |
| | Searching in the range of { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | Corresponding loop level is 1 | |
| | Searching for the dimension i1 | |
| | Searching in the range of { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | Corresponding loop level is 2 | |
| | Searching for the dimension j1 | |
| | Searching in the range of { by[t9, t10, t11] -> by[0, t27 = 0, i0, t29 = 0, j0, t31 = 0, i1, t24 = 0, j1, t33 = 0, c = t11, t35 = 0] : (t10 - j1) mod 32 = 0 and (t9 - i1) mod 32 = 0 and 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 and -31 + t9 <= 32i0 <= t9 and -31 + t10 <= 32j0 <= t10 and 0 <= i1 <= 31 and 0 <= j1 <= 31 } | |
| | Corresponding loop level is 3 | |
| | Checking the validity of loop level 0 | |
| | Checking the validity of loop level 1 | |
| | Checking the validity of loop level 2 | |
| | Checking the validity of loop level 3 | |
| Checking the validity of loop level 0 | |
| Checking the validity of loop level 1 | |
| Checking the validity of loop level 2 | |
| Checking the validity of loop level 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Saved variable i of type int32 | |
Saved variable j of type int32 | |
Saved variable c of type int32 | |
Saved variable t0 of type int32 | |
[src/tiramisu_core.cpp:7185 computation] | |
| Constructing an unscheduled computation. | |
| Creating computation input | |
| Constructed iteration domain: {input[i, j, c] : 0<=i<100 and 0<=j<200 and 0<=c<3} | |
| [src/tiramisu_core.cpp:6974 init_computation] | |
| | Constructing the computation: {input[i, j, c] : 0<=i<100 and 0<=j<200 and 0<=c<3} | |
| | [src/tiramisu_core.cpp:2794 name_unnamed_iteration_domain_dimensions] | |
| | | named unnameed iteration domain: { input[i, j, c] : 0 <= i <= 99 and 0 <= j <= 199 and 0 <= c <= 2 } | |
| | Constructing the computation name: input | |
| | [src/tiramisu_function.cpp:1813 add_computation] | |
| | [src/tiramisu_core.cpp:7710 set_identity_schedule_based_on_iteration_domain] | |
| | | [src/tiramisu_core.cpp:7645 gen_identity_schedule_for_iteration_domain] | |
| | | The following identity schedule is generated (setting schedule 0): | |
| | | { input[i, j, c] -> input[0, 0, i' = i, 0, j' = j, 0, c' = c, 0] : 0 <= i <= 99 and 0 <= j <= 199 and 0 <= c <= 2 } | |
| | | The identity schedule for the original computation is set. | |
| | [src/tiramisu_core.cpp:7823 set_expression] | |
| | | The original expression is: | | | | |
| | | Traversing the expression to replace non-affine accesses by a constant definition. | |
| | | [src/tiramisu_codegen_halide.cpp:803 traverse_expr_and_replace_non_affine_accesses] | |
| | | | Input expression: | |
| | | The new expression is: | | | | |
| | [src/tiramisu_core.cpp:2816 get_iteration_domain_dimension_names] | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 0 | |
| | | Setting the name of the domain of the schedule dimension 0 into t1 | |
| | | The schedule after renaming: { input[t1, j, c] -> input[0, 0, i = t1, 0, j' = j, 0, c' = c, 0] : 0 <= t1 <= 99 and 0 <= j <= 199 and 0 <= c <= 2 } | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 1 | |
| | | Setting the name of the domain of the schedule dimension 1 into t2 | |
| | | The schedule after renaming: { input[t1, t2, c] -> input[0, 0, i = t1, 0, j = t2, 0, c' = c, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= c <= 2 } | |
| | [src/tiramisu_core.cpp:2658 set_schedule_domain_dim_names] | |
| | | Checking the validity of loop level 2 | |
| | | Setting the name of the domain of the schedule dimension 2 into t3 | |
| | | The schedule after renaming: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 0 | |
| | | Setting the name of loop level 0 into i | |
| | | The schedule after renaming: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 1 | |
| | | Setting the name of loop level 1 into j | |
| | | The schedule after renaming: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | [src/tiramisu_core.cpp:2681 set_loop_level_names] | |
| | | Checking the validity of loop level 2 | |
| | | Setting the name of loop level 2 into c | |
| | | The schedule after renaming: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | Searching computation input | |
| | Computation found. | |
| [src/tiramisu_core.cpp:7863 store_in] | |
| | Binding. The following access function is set: { input[i, j, c] -> _input_b0[i' = i, j' = j, c' = c] } | |
| | [src/tiramisu_core.cpp:7598 set_access] | |
| | | Setting access { input[i, j, c] -> _input_b0[i' = i, j' = j, c' = c] } for computation input | |
| | | Searching computation input | |
| | | Computation found. | |
| | | Searching computation input | |
| | | Computation found. | |
| Constructed computation: | |
Dumping the computation "input" : | |
Iteration domain of the computation "input" : { input[i, j, c] : i >= 0 and i <= 99 and j >= 0 and j <= 199 and c >= 0 and c <= 2 } | |
Dumping the schedule of the computation input : Expression of the computation : | |
Access relation of the computation : Time-space domain : NULL. | |
Computation to be scheduled ? 0 | |
Halide statement: NULL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[src/tiramisu_core.cpp:3068 interchange] | |
| [src/tiramisu_core.cpp:2728 get_loop_level_numbers_from_dimension_names] | |
| | Searching for the dimension i | |
| | Searching in the range of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Corresponding loop level is 0 | |
| | Searching for the dimension j | |
| | Searching in the range of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Corresponding loop level is 1 | |
| | Checking the validity of loop level 0 | |
| | Checking the validity of loop level 1 | |
| Checking the validity of loop level 0 | |
| Checking the validity of loop level 1 | |
| [src/tiramisu_core.cpp:3090 interchange] | |
| | Original schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Interchanging the dimensions 0 and 1 | |
| | [src/tiramisu_core.cpp:1868 isl_map_get_static_dim] | |
| | | Getting the constant coefficient of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } at dimension 0 | |
| | | Dimensions found. Constant = 0 | |
| | | The constant is: 0 | |
| | [src/tiramisu_core.cpp:1868 isl_map_get_static_dim] | |
| | | Getting the constant coefficient of { bx[t5, t6, t7] -> bx[0, t12 = 0, i = t5, t13 = 0, j = t6, t14 = 0, c = t7, t15 = 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } at dimension 0 | |
| | | Dimensions found. Constant = 0 | |
| | | The constant is: 0 | |
| | A map that transforms the duplicate | |
| | { bx[0,t12,i,t13,j,t14,c,t15] ->bx[0,t12,j,t13,i,t14,c,t15]} | |
| | Final transformation map : { bx[0, t12, i, t13, j, t14, c, t15] -> bx[0, t12' = t12, j' = j, t13' = t13, i' = i, t14' = t14, c' = c, t15' = t15] } | |
| | Schedule after interchange: { bx[t5, t6, t7] -> bx[0, t12 = 0, j = t6, t13 = 0, i = t5, t14 = 0, c = t7, t15 = 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[src/tiramisu_core.cpp:5019 shift] | |
| [src/tiramisu_core.cpp:2728 get_loop_level_numbers_from_dimension_names] | |
| | Searching for the dimension i | |
| | Searching in the range of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Corresponding loop level is 0 | |
| | Checking the validity of loop level 0 | |
| Checking the validity of loop level 0 | |
| [src/tiramisu_core.cpp:5035 shift] | |
| | Creating a schedule that shifts the loop level 0 of the computation bx by 10 | |
| | [src/tiramisu_function.cpp:1777 align_schedules] | |
| | | [src/tiramisu_function.cpp:1717 get_max_schedules_range_dim] | |
| | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | Input map: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | After alignment, map = { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | [src/tiramisu_core.cpp:2774 name_unnamed_time_space_dimensions] | |
| | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | Input map: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | After alignment, map = { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | [src/tiramisu_core.cpp:2774 name_unnamed_time_space_dimensions] | |
| | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | Input map: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | | | After alignment, map = { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | | [src/tiramisu_core.cpp:2774 name_unnamed_time_space_dimensions] | |
| | End of function | |
| | Original schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | [src/tiramisu_core.cpp:3333 add_eq_to_schedule_map] | |
| | | The schedule : { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | Editing the dimension 2 | |
| | | Coefficient of the input dimension -1 | |
| | | Coefficient of the output dimension -1 | |
| | | Coefficient of the constant 10 | |
| | | Setting the constraint for dimension 2 | |
| | | The identity schedule is now: { bx[i0, i1, i, i3, j, i5, c, i7] -> bx[i0, i1, i' = 10 + i, o3, j', o5, c', o7] } | |
| | | The transformation map is: { bx[i0, i1, i, i3, j, i5, c, i7] -> bx[i0, i1, i' = 10 + i, i3, j' = j, i5, c' = c, i7] } | |
| | | The schedule after being transformed: { bx[t5, t6, t7] -> bx[0, 0, i = 10 + t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Schedule after shifting: { bx[t5, t6, t7] -> bx[0, 0, i = 10 + t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Saved variable i0 of type int32 | |
Saved variable i1 of type int32 | |
[src/tiramisu_core.cpp:6258 split] | |
| [src/tiramisu_core.cpp:7737 get_loop_level_names] | |
| | Collecting names of loop levels from the range of the schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Names of loop levels: i j c | |
| [src/tiramisu_core.cpp:2729 get_loop_level_numbers_from_dimension_names] | |
| | Searching for the dimension i | |
| | Searching in the range of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Corresponding loop level is 0 | |
| | Checking the validity of loop level 0 | |
| Checking the validity of loop level 0 | |
| [src/tiramisu_core.cpp:6286 split] | |
| | [src/tiramisu_core.cpp:1869 isl_map_get_static_dim] | |
| | | Getting the constant coefficient of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } at dimension 0 | |
| | | Dimensions found. Constant = 0 | |
| | | The constant is: 0 | |
| | Original schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | Splitting dimension 2 with split size 16 | |
| | Origin Transformation map : {bx[t15,t16,t17,t18,t19,t20,t21,t22] -> bx[t15,t16,t12, t13, t14,t18,t19,t20,t21,t22] : t15 = 0 and t12 = floor(t17/16) and t14 = (t17%16) and t13 = 0} | |
| | Transformation map : { bx[t15 = 0, t16, t17, t18, t19, t20, t21, t22] -> bx[t15' = 0, t16' = t16, t12, t13 = 0, t14, t18' = t18, t19' = t19, t20' = t20, t21' = t21, t22' = t22] : (-t17 + t14) mod 16 = 0 and -15 + t17 <= 16t12 <= t17 and 0 <= t14 <= 15 } | |
| | Schedule after splitting: { bx[t5, t6, t7] -> bx[t15 = 0, t16 = 0, t12, t13 = 0, t14, t18 = 0, t19 = t6, t20 = 0, t21 = t7, t22 = 0] : (t5 - t14) mod 16 = 0 and 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 and -15 + t5 <= 16t12 <= t5 and 0 <= t14 <= 15 } | |
| [src/tiramisu_core.cpp:1187 update_names] | |
| | Original loop level names: i j c | |
| | New names: i0 i1 | |
| | Start erasing from: 0 | |
| | Number of loop levels to erase: 1 | |
| | Original loop level names after erasing loop levels: j c | |
| | Original loop level names after inserting the new loop levels: i0 i1 j c | |
| | [src/tiramisu_core.cpp:2631 set_loop_level_names] | |
| | | Number of loop levels: 4 | |
| | | Number of names to be set: 4 | |
| | | Setting the name of loop level 0 into i0 | |
| | | Setting the name of loop level 1 into i1 | |
| | | Setting the name of loop level 2 into j | |
| | | Setting the name of loop level 3 into c | |
| | | The schedule after renaming: { bx[t5, t6, t7] -> bx[t15 = 0, t16 = 0, i0, t13 = 0, i1, t18 = 0, j = t6, t20 = 0, c = t7, t22 = 0] : (t5 - i1) mod 16 = 0 and 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 and -15 + t5 <= 16i0 <= t5 and 0 <= i1 <= 15 } | |
| | Names updated. New names are: | |
| | [src/tiramisu_core.cpp:7737 get_loop_level_names] | |
| | | Collecting names of loop levels from the range of the schedule: { bx[t5, t6, t7] -> bx[t15 = 0, t16 = 0, i0, t13 = 0, i1, t18 = 0, j = t6, t20 = 0, c = t7, t22 = 0] : (t5 - i1) mod 16 = 0 and 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 and -15 + t5 <= 16i0 <= t5 and 0 <= i1 <= 15 } | |
| | | Names of loop levels: i0 i1 j c |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[src/tiramisu_core.cpp:1302 unroll] | |
| Saved variable t12 of type int32 | |
| Saved variable t13 of type int32 | |
| [src/tiramisu_core.cpp:1314 unroll] | |
| | [src/tiramisu_core.cpp:7747 get_loop_level_names] | |
| | | Collecting names of loop levels from the range of the schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | Names of loop levels: i j c | |
| | [src/tiramisu_core.cpp:2729 get_loop_level_numbers_from_dimension_names] | |
| | | Searching for the dimension c | |
| | | Searching in the range of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | Corresponding loop level is 2 | |
| | | Checking the validity of loop level 2 | |
| | Checking the validity of loop level 2 | |
| | [src/tiramisu_core.cpp:6226 separateAndSplit] | |
| | | [src/tiramisu_core.cpp:7747 get_loop_level_names] | |
| | | | Collecting names of loop levels from the range of the schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | Names of loop levels: i j c | |
| | | [src/tiramisu_core.cpp:2729 get_loop_level_numbers_from_dimension_names] | |
| | | | Searching for the dimension c | |
| | | | Searching in the range of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | Corresponding loop level is 2 | |
| | | | Checking the validity of loop level 2 | |
| | | Checking the validity of loop level 2 | |
| | | [src/tiramisu_core.cpp:6133 separateAndSplit] | |
| | | | Applying separateAndSplit on loop level 2 with a split factor of 3 | |
| | | | [src/tiramisu_core.cpp:7568 gen_time_space_domain] | |
| | | | | Iteration domain: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | [src/tiramisu_core.cpp:5087 intersect_set_with_context] | |
| | | | | Iteration domain Intersect context: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | Schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | Generated time-space domain: { bx[0, 0, i, 0, j, 0, c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | [src/tiramisu_core.cpp:5971 compute_maximal_AST_depth] | |
| | | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | | | [src/tiramisu_core.cpp:7568 gen_time_space_domain] | |
| | | | | | Iteration domain: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:5087 intersect_set_with_context] | |
| | | | | | Iteration domain Intersect context: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | Schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | | Generated time-space domain: { bx[0, 0, i, 0, j, 0, c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | Getting the maximal AST depth of the set { bx[0, i, 0, j, 0, c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | Setting ISL AST generator options. | |
| | | | | Generating time-space domain. | |
| | | | | Setting the iterator names. | |
| | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | { | |
| | | | | | for (int i = 0; i <= 97; i += 1) | |
| | | | | | for (int j = 0; j <= 197; j += 1) | |
| | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | } | |
| | | | | | Computing maximal depth from a for loop. | |
| | | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | | { | |
| | | | | | | for (int j = 0; j <= 197; j += 1) | |
| | | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | | } | |
| | | | | | | Computing maximal depth from a for loop. | |
| | | | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | | | { | |
| | | | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | | | } | |
| | | | | | | | Computing maximal depth from a for loop. | |
| | | | | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | | | | { | |
| | | | | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | | | | } | |
| | | | | | | | | Reached a user node. | |
| | | | | | | | | Current depth = 1 | |
| | | | | | | | Current depth = 2 | |
| | | | | | | Current depth = 3 | |
| | | | | | Current depth = 4 | |
| | | | | The maximal AST depth is : 4 | |
| | | | Computing upper bound at loop level 2 | |
| | | | [src/tiramisu_core.cpp:6043 get_bound] | |
| | | | | Getting the upper bound on the dimension 2 of the set { bx[0, i, 0, j, 0, c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | Setting ISL AST generator options. | |
| | | | | Generating time-space domain. | |
| | | | | Setting the iterator names. | |
| | | | | [src/tiramisu_core.cpp:5878 extract_bound_expression] | |
| | | | | | Extracting bounds from a loop at depth = 2 | |
| | | | | | Extracting bounds from the following ISL AST node : | |
| | | | | | { | |
| | | | | | for (int i = 0; i <= 97; i += 1) | |
| | | | | | for (int j = 0; j <= 197; j += 1) | |
| | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | } | |
| | | | | | Extracting bounds from a for loop. | |
| | | | | | Lower bound at this level is: 0 | |
| | | | | | Upper bound at this level is: i <= 97 | |
| | | | | | [src/tiramisu_core.cpp:5878 extract_bound_expression] | |
| | | | | | | Extracting bounds from a loop at depth = 1 | |
| | | | | | | Extracting bounds from the following ISL AST node : | |
| | | | | | | { | |
| | | | | | | for (int j = 0; j <= 197; j += 1) | |
| | | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | | } | |
| | | | | | | Extracting bounds from a for loop. | |
| | | | | | | Lower bound at this level is: 0 | |
| | | | | | | Upper bound at this level is: j <= 197 | |
| | | | | | | [src/tiramisu_core.cpp:5878 extract_bound_expression] | |
| | | | | | | | Extracting bounds from a loop at depth = 0 | |
| | | | | | | | Extracting bounds from the following ISL AST node : | |
| | | | | | | | { | |
| | | | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | | | } | |
| | | | | | | | Extracting bounds from a for loop. | |
| | | | | | | | Lower bound at this level is: 0 | |
| | | | | | | | Upper bound at this level is: c <= 2 | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:972 tiramisu_expr_from_isl_ast_expr] | |
| | | | | | | | | Input expression: 2 | |
| | | | | | | | Extracted bound:2 | |
| | | | | | | Extracted bound:2 | |
| | | | | | Extracted bound:2 | |
| | | | | The upper bound is : 2 | |
| | | | Computing lower bound at loop level 2 | |
| | | | [src/tiramisu_core.cpp:6043 get_bound] | |
| | | | | Getting the lower bound on the dimension 2 of the set { bx[0, i, 0, j, 0, c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | Setting ISL AST generator options. | |
| | | | | Generating time-space domain. | |
| | | | | Setting the iterator names. | |
| | | | | [src/tiramisu_core.cpp:5878 extract_bound_expression] | |
| | | | | | Extracting bounds from a loop at depth = 2 | |
| | | | | | Extracting bounds from the following ISL AST node : | |
| | | | | | { | |
| | | | | | for (int i = 0; i <= 97; i += 1) | |
| | | | | | for (int j = 0; j <= 197; j += 1) | |
| | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | } | |
| | | | | | Extracting bounds from a for loop. | |
| | | | | | Lower bound at this level is: 0 | |
| | | | | | Upper bound at this level is: i <= 97 | |
| | | | | | [src/tiramisu_core.cpp:5878 extract_bound_expression] | |
| | | | | | | Extracting bounds from a loop at depth = 1 | |
| | | | | | | Extracting bounds from the following ISL AST node : | |
| | | | | | | { | |
| | | | | | | for (int j = 0; j <= 197; j += 1) | |
| | | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | | } | |
| | | | | | | Extracting bounds from a for loop. | |
| | | | | | | Lower bound at this level is: 0 | |
| | | | | | | Upper bound at this level is: j <= 197 | |
| | | | | | | [src/tiramisu_core.cpp:5878 extract_bound_expression] | |
| | | | | | | | Extracting bounds from a loop at depth = 0 | |
| | | | | | | | Extracting bounds from the following ISL AST node : | |
| | | | | | | | { | |
| | | | | | | | for (int c = 0; c <= 2; c += 1) | |
| | | | | | | | bx(0, i, 0, j, 0, c, 0); | |
| | | | | | | | } | |
| | | | | | | | Extracting bounds from a for loop. | |
| | | | | | | | Lower bound at this level is: 0 | |
| | | | | | | | Upper bound at this level is: c <= 2 | |
| | | | | | | | [src/tiramisu_codegen_halide.cpp:972 tiramisu_expr_from_isl_ast_expr] | |
| | | | | | | | | Input expression: 0 | |
| | | | | | | | Extracted bound:0 | |
| | | | | | | Extracted bound:0 | |
| | | | | | Extracted bound:0 | |
| | | | | The lower bound is : 0 | |
| | | | Loop bound for the loop to be separated and split: ((cast(2) - cast(0) ) + cast(1) ) | |
| | | | [src/tiramisu_core.cpp:748 separate] | |
| | | | | Separating the computation at level 2 | |
| | | | | Generating the time-space domain. | |
| | | | | [src/tiramisu_core.cpp:7568 gen_time_space_domain] | |
| | | | | | Iteration domain: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:5087 intersect_set_with_context] | |
| | | | | | Iteration domain Intersect context: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | Schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | | Generated time-space domain: { bx[0, 0, i, 0, j, 0, c, 0] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | Constructing the constraint (i<v*floor(N/v)) | |
| | | | | Removing any cast operator in N. | |
| | | | | The constraint is:{bx[0,o1,i,o3,j,o5,c,o7]: c < (3*( floor(((((2) - (0) ) + (1) ))/3)) +(0) )} | |
| | | | | Constructing the constraint (i>=v*(floor(N/v))) | |
| | | | | The constraint is:{bx[0,o1,i,o3,j,o5,c,o7]: c >= (3*(floor(((((2) - (0) ) + (1) ))/3)) +(0) )} | |
| | | | | The separate computation is empty. Thus not added. | |
| | | | | [src/tiramisu_core.cpp:1719 add_schedule_constraint] | |
| | | | | | Adding the following constraints to the range of the schedule : | |
| | | | | | { bx[0, o1, i, o3, j, o5, c, o7] : c <= 2 } | |
| | | | | | The schedule : { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | | Schedule after transformation : | |
| | | | | | { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | The original computation: | |
Dumping the computation "bx" : | |
Iteration domain of the computation "bx" : Dumping the schedule of the computation bx : Expression of the computation : (((input(i, j, c) + input(i, (j + 1), c)) + input(i, (j + 2), c)) / cast(3) ) | |
Access relation of the computation : Time-space domain | |
Computation to be scheduled ? 1 | |
Halide statement: NULL | |
| | | | [src/tiramisu_core.cpp:6434 split_with_lower_bound] | |
| | | | | [src/tiramisu_core.cpp:1869 isl_map_get_static_dim] | |
| | | | | | Getting the constant coefficient of { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } at dimension 0 | |
| | | | | | Dimensions found. Constant = 0 | |
| | | | | | The constant is: 0 | |
| | | | | Original schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | Splitting dimension 6 with split size 3 | |
| | | | | Transformation map : { bx[t29 = 0, t30, t31, t32, t33, t34, t35, t36] -> bx[t29' = 0, t30' = t30, t31' = t31, t32' = t32, t33' = t33, t34' = t34, t26, t27 = 0, t28, t36' = t36] : (-t35 + t28) mod 3 = 0 and -2 + t35 <= 3t26 <= t35 and 0 <= t28 <= 2 } | |
| | | | | Schedule after splitting: { bx[t5, t6, t7] -> bx[t29 = 0, t30 = 0, t31 = t5, t32 = 0, t33 = t6, t34 = 0, t26, t27 = 0, t28, t36 = 0] : (-t7 + t28) mod 3 = 0 and 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 and -2 + t7 <= 3t26 <= t7 and 0 <= t28 <= 2 } | |
| | | | [src/tiramisu_core.cpp:5971 compute_maximal_AST_depth] | |
| | | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | | | [src/tiramisu_core.cpp:7568 gen_time_space_domain] | |
| | | | | | Iteration domain: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | [src/tiramisu_core.cpp:5087 intersect_set_with_context] | |
| | | | | | Iteration domain Intersect context: { bx[i, j, c] : 0 <= i <= 97 and 0 <= j <= 197 and 0 <= c <= 2 } | |
| | | | | | Schedule: { bx[t5, t6, t7] -> bx[t29 = 0, t30 = 0, t31 = t5, t32 = 0, t33 = t6, t34 = 0, t26, t27 = 0, t28, t36 = 0] : (-t7 + t28) mod 3 = 0 and 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 and -2 + t7 <= 3t26 <= t7 and 0 <= t28 <= 2 } | |
| | | | | | Generated time-space domain: { bx[t29 = 0, t30 = 0, t31, t32 = 0, t33, t34 = 0, t26 = 0, t27 = 0, t28, t36 = 0] : 0 <= t31 <= 97 and 0 <= t33 <= 197 and 0 <= t28 <= 2 } | |
| | | | | Getting the maximal AST depth of the set { bx[t30 = 0, t31, t32 = 0, t33, t34 = 0, t26 = 0, t27 = 0, t28, t36 = 0] : 0 <= t31 <= 97 and 0 <= t33 <= 197 and 0 <= t28 <= 2 } | |
| | | | | Setting ISL AST generator options. | |
| | | | | Generating time-space domain. | |
| | | | | Setting the iterator names. | |
| | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | { | |
| | | | | | for (int t31 = 0; t31 <= 97; t31 += 1) | |
| | | | | | for (int t33 = 0; t33 <= 197; t33 += 1) | |
| | | | | | for (int t28 = 0; t28 <= 2; t28 += 1) | |
| | | | | | bx(0, t31, 0, t33, 0, 0, 0, t28, 0); | |
| | | | | | } | |
| | | | | | Computing maximal depth from a for loop. | |
| | | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | | { | |
| | | | | | | for (int t33 = 0; t33 <= 197; t33 += 1) | |
| | | | | | | for (int t28 = 0; t28 <= 2; t28 += 1) | |
| | | | | | | bx(0, t31, 0, t33, 0, 0, 0, t28, 0); | |
| | | | | | | } | |
| | | | | | | Computing maximal depth from a for loop. | |
| | | | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | | | { | |
| | | | | | | | for (int t28 = 0; t28 <= 2; t28 += 1) | |
| | | | | | | | bx(0, t31, 0, t33, 0, 0, 0, t28, 0); | |
| | | | | | | | } | |
| | | | | | | | Computing maximal depth from a for loop. | |
| | | | | | | | [src/tiramisu_core.cpp:5808 compute_recursively_max_AST_depth] | |
| | | | | | | | | Computing maximal AST depth from the following ISL AST node | |
| | | | | | | | | { | |
| | | | | | | | | bx(0, t31, 0, t33, 0, 0, 0, t28, 0); | |
| | | | | | | | | } | |
| | | | | | | | | Reached a user node. | |
| | | | | | | | | Current depth = 1 | |
| | | | | | | | Current depth = 2 | |
| | | | | | | Current depth = 3 | |
| | | | | | Current depth = 4 | |
| | | | | The maximal AST depth is : 4 | |
| | | | Split did not happen. | |
| | | | Cancel splitting. | |
| | | | [src/tiramisu_function.cpp:1777 align_schedules] | |
| | | | | [src/tiramisu_function.cpp:1717 get_max_schedules_range_dim] | |
| | | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | | Input map: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | | | After alignment, map = { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | | Input map: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | | After alignment, map = { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, c = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | | Input map: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | | | | | After alignment, map = { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | | End of function | |
| | | [src/tiramisu_core.cpp:1187 update_names] | |
| | | | Original loop level names: i j c | |
| | | | New names: t12 | |
| | | | Start erasing from: 2 | |
| | | | Number of loop levels to erase: 1 | |
| | | | Original loop level names after erasing loop levels: i j | |
| | | | Original loop level names after inserting the new loop levels: i j t12 | |
| | | | [src/tiramisu_core.cpp:2631 set_loop_level_names] | |
| | | | | Number of loop levels: 3 | |
| | | | | Number of names to be set: 3 | |
| | | | | Setting the name of loop level 0 into i | |
| | | | | Setting the name of loop level 1 into j | |
| | | | | Setting the name of loop level 2 into t12 | |
| | | | | The schedule after renaming: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, t12 = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | Names updated. New names are: | |
| | | | [src/tiramisu_core.cpp:7747 get_loop_level_names] | |
| | | | | Collecting names of loop levels from the range of the schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, t12 = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | Names of loop levels: i j t12 | |
| | | [src/tiramisu_core.cpp:674 tag_unroll_level] | |
| | | [src/tiramisu_core.cpp:2682 set_loop_level_names] | |
| | | | Checking the validity of loop level 2 | |
| | | | Setting the name of loop level 2 into t12 | |
| | | | The schedule after renaming: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, t12 = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | [src/tiramisu_core.cpp:1187 update_names] | |
| | | | Original loop level names: i j c | |
| | | | New names: t13 | |
| | | | Start erasing from: 2 | |
| | | | Number of loop levels to erase: 1 | |
| | | | Original loop level names after erasing loop levels: i j | |
| | | | Original loop level names after inserting the new loop levels: i j t13 | |
| | | | [src/tiramisu_core.cpp:2631 set_loop_level_names] | |
| | | | | Number of loop levels: 3 | |
| | | | | Number of names to be set: 3 | |
| | | | | Setting the name of loop level 0 into i | |
| | | | | Setting the name of loop level 1 into j | |
| | | | | Setting the name of loop level 2 into t13 | |
| | | | | The schedule after renaming: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, t13 = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | Names updated. New names are: | |
| | | | [src/tiramisu_core.cpp:7747 get_loop_level_names] | |
| | | | | Collecting names of loop levels from the range of the schedule: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, t13 = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | Names of loop levels: i j t13 | |
| | | [src/tiramisu_function.cpp:1777 align_schedules] | |
| | | | [src/tiramisu_function.cpp:1717 get_max_schedules_range_dim] | |
| | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | Input map: { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | | After alignment, map = { input[t1, t2, t3] -> input[0, 0, i = t1, 0, j = t2, 0, c = t3, 0] : 0 <= t1 <= 99 and 0 <= t2 <= 199 and 0 <= t3 <= 2 } | |
| | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | Input map: { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, t13 = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | | After alignment, map = { bx[t5, t6, t7] -> bx[0, 0, i = t5, 0, j = t6, 0, t13 = t7, 0] : 0 <= t5 <= 97 and 0 <= t6 <= 197 and 0 <= t7 <= 2 } | |
| | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | | [src/tiramisu_function.cpp:29 isl_map_align_range_dims] | |
| | | | | Input map: { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | | | | After alignment, map = { by[t9, t10, t11] -> by[0, 0, i = t9, 0, j = t10, 0, c = t11, 0] : 0 <= t9 <= 97 and 0 <= t10 <= 197 and 0 <= t11 <= 2 } | |
| | | | [src/tiramisu_core.cpp:2775 name_unnamed_time_space_dimensions] | |
| | | End of function |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment