|
9 | 9 | get_params, skipif |
10 | 10 | ) |
11 | 11 | from devito import ( # noqa |
12 | | - NODE, Abs, ConditionalDimension, Constant, DefaultDimension, Derivative, Dimension, |
13 | | - Eq, Function, Ge, Grid, Inc, Lt, Operator, SparseTimeFunction, SubDimension, |
14 | | - TimeFunction, configuration, cos, dimensions, div, exp, first_derivative, floor, grad, |
15 | | - norm, sin, solve, sqrt, switchconfig, transpose |
| 12 | + NODE, Abs, Buffer, ConditionalDimension, Constant, DefaultDimension, Derivative, |
| 13 | + Dimension, Eq, Function, Ge, Grid, Inc, Lt, Operator, SparseTimeFunction, |
| 14 | + SubDimension, TimeFunction, configuration, cos, dimensions, div, exp, |
| 15 | + first_derivative, floor, grad, norm, sin, solve, sqrt, switchconfig, transpose |
16 | 16 | ) |
17 | 17 | from devito.exceptions import InvalidArgument, InvalidOperator |
18 | 18 | from devito.ir import ( |
@@ -58,6 +58,26 @@ def test_scheduling_after_rewrite(): |
58 | 58 | assert all(trees[1].root.dim is tree.root.dim for tree in trees[1:]) |
59 | 59 |
|
60 | 60 |
|
| 61 | +def test_scheduling_no_deriv(): |
| 62 | + grid = Grid((11, 11, 11)) |
| 63 | + x, y, z = grid.dimensions |
| 64 | + |
| 65 | + image_vs = Function(name='image_vs', grid=grid, space_order=1, staggered=NODE) |
| 66 | + p_back_xy = TimeFunction(name='p_back_xy', grid=grid, staggered=(x, y), |
| 67 | + space_order=4, time_order=1, save=Buffer(1)) |
| 68 | + |
| 69 | + eqns = [Eq(image_vs, p_back_xy + image_vs), |
| 70 | + Eq(p_back_xy.backward, p_back_xy)] |
| 71 | + |
| 72 | + op = Operator(eqns) |
| 73 | + |
| 74 | + assert_structure( |
| 75 | + op, |
| 76 | + ['t,x0_blk0,y0_blk0,x,y,z', 't,x1_blk0,y1_blk0,x,y,z'], |
| 77 | + 'tx0_blk0y0_blk0xyzx1_blk0y1_blk0xyz' |
| 78 | + ) |
| 79 | + |
| 80 | + |
61 | 81 | @pytest.mark.parametrize('expr,expected', [ |
62 | 82 | ('2*fa[x] + fb[x]', '2*fa[x] + fb[x]'), |
63 | 83 | ('fa[x]**2', 'fa[x]*fa[x]'), |
|
0 commit comments