Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regent: __demand(__index_launch) ast.typed.expr.Cast has no field 'value' (in lookup) #1343

Closed
syamajala opened this issue Oct 26, 2022 · 6 comments
Assignees
Labels

Comments

@syamajala
Copy link
Contributor

The following fails to build:

import "regent"

__demand(__inline)
task is_rank1d(color : int3d)
  var proc_grid_size = int3d{2, 2, 2}
  return color.x + proc_grid_size.x*(color.y + proc_grid_size.z*color.z)
end

task compute_inverse(lr_sigma : region(ispace(int2d), double))
where
  writes(lr_sigma)
do

  for idx in lr_sigma.ispace do
    lr_sigma[idx] = 0
  end

end


task main()
  var global_grid_size = int3d{64, 64, 64}
  var is_grid = ispace(int3d, global_grid_size)

  var proc_grid_size = int3d{2, 2, 2}
  var blocking_factor = global_grid_size / proc_grid_size

  var is_bounds = is_grid.bounds
  var is_rank = ispace(int3d, int3d{
                         (((is_bounds.hi.x - is_bounds.lo.x) + blocking_factor.x) / blocking_factor.x),
                         (((is_bounds.hi.y - is_bounds.lo.y) + blocking_factor.y) / blocking_factor.y),
                         (((is_bounds.hi.z - is_bounds.lo.z) + blocking_factor.z) / blocking_factor.z)},
                       int3d{0, 0, 0})

  var iz_rank1d = ispace(int1d, proc_grid_size.x*proc_grid_size.y*proc_grid_size.z)

  var ranks = is_rank.volume
  var r_dim = 20

  var t2d : transform(2, 1)
  t2d[{0, 0}] = r_dim
  t2d[{1, 0}] = r_dim

  var e2d = rect2d{ int2d{0, 0}, int2d{r_dim - 1, r_dim - 1} }

  var lr_Sigma = region(ispace(int2d, int2d{r_dim * ranks, r_dim * ranks}), double)
  var lp_Sigma_rank = restrict(disjoint, complete, lr_Sigma, t2d, e2d, iz_rank1d)

  __demand(__index_launch)
  for color in is_rank do
    compute_inverse(lp_Sigma_rank[is_rank1d(color)])
  end

end

regentlib.start(main)

and results in the following error:

...dbo/legion/language/src/regent/optimize_index_launches.t:388: ast.typed.expr.Cast has no field 'value' (in lookup)
stack traceback:
        [C]: in function 'error'
        .../vsyamaj/legion_s3d_dbo/legion/language/src/common/ast.t:47: in function '__index'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:388: in function 'analyze_expr_noninterference_self'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:397: in function 'analyze_expr_noninterference_self'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:488: in function 'analyze_index_noninterference_self'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:505: in function 'analyze_noninterference_self'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:1200: in function 'optimize_loop_body'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:1757: in function 'map_node_postorder'
        .../vsyamaj/legion_s3d_dbo/legion/language/src/common/ast.t:514: in function 'map_node_postorder'
        .../vsyamaj/legion_s3d_dbo/legion/language/src/common/ast.t:505: in function 'map_node_postorder'
        .../vsyamaj/legion_s3d_dbo/legion/language/src/common/ast.t:505: in function 'top_task'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:1845: in function <...dbo/legion/language/src/regent/optimize_index_launches.t:1839>
        ...legion_s3d_dbo/legion/language/src/regent/passes_hooks.t:41: in function 'optimize'
        ...yamaj/legion_s3d_dbo/legion/language/src/regent/passes.t:52: in function <...yamaj/legion_s3d_dbo/legion/language/src/regent/passes.t:48>
        test.rg:21: in main chunk
@elliottslaughter
Copy link
Contributor

Should be fixed in master.

@syamajala
Copy link
Contributor Author

Hitting a new error after pulling these changes:

...dbo/legion/language/src/regent/optimize_index_launches.t:1429: assertion failed!
stack traceback:
        [C]: in function 'assert'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:1429: in function 'insert_dynamic_check'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:1797: in function 'map_node_postorder'
        .../vsyamaj/legion_s3d_dbo/legion/language/src/common/ast.t:514: in function 'map_node_postorder'
        .../vsyamaj/legion_s3d_dbo/legion/language/src/common/ast.t:505: in function 'map_node_postorder'
        .../vsyamaj/legion_s3d_dbo/legion/language/src/common/ast.t:505: in function 'top_task'
        ...dbo/legion/language/src/regent/optimize_index_launches.t:1846: in function <...dbo/legion/language/src/regent/optimize_index_launches.t:1840>
        ...legion_s3d_dbo/legion/language/src/regent/passes_hooks.t:41: in function 'optimize'
        ...yamaj/legion_s3d_dbo/legion/language/src/regent/passes.t:52: in function <...yamaj/legion_s3d_dbo/legion/language/src/regent/passes.t:48>
        test.rg:28: in main chunk

Here is a reproducer:

import "regent"

fspace SigmaFields
{
  S : double,
  SInv : double
}

__demand(__inline)
task is_rank1d(color : int3d)
  var proc_grid_size = int3d{2, 2, 2}
  return color.x + proc_grid_size.x*(color.y + proc_grid_size.z*color.z)
end

task compute_inverse(lr_sigma : region(ispace(int2d), SigmaFields))
where
  reads (lr_sigma.{S}),
  reads writes(lr_sigma.{SInv})
do

  for idx in lr_sigma.ispace do
    lr_sigma[idx].SInv = lr_sigma[idx].S
  end

end


task main()
  var global_grid_size = int3d{64, 64, 64}
  var is_grid = ispace(int3d, global_grid_size)

  var proc_grid_size = int3d{2, 2, 2}
  var blocking_factor = global_grid_size / proc_grid_size

  var is_bounds = is_grid.bounds
  var is_rank = ispace(int3d, int3d{
                         (((is_bounds.hi.x - is_bounds.lo.x) + blocking_factor.x) / blocking_factor.x),
                         (((is_bounds.hi.y - is_bounds.lo.y) + blocking_factor.y) / blocking_factor.y),
                         (((is_bounds.hi.z - is_bounds.lo.z) + blocking_factor.z) / blocking_factor.z)},
                       int3d{0, 0, 0})

  var iz_rank1d = ispace(int1d, proc_grid_size.x*proc_grid_size.y*proc_grid_size.z)

  var ranks = is_rank.volume
  var r_dim = 20

  var t2d : transform(2, 1)
  t2d[{0, 0}] = r_dim
  t2d[{1, 0}] = r_dim

  var e2d = rect2d{ int2d{0, 0}, int2d{r_dim - 1, r_dim - 1} }

  var lr_Sigma = region(ispace(int2d, int2d{r_dim * ranks, r_dim * ranks}), SigmaFields)
  var lp_Sigma_rank = restrict(disjoint, complete, lr_Sigma, t2d, e2d, iz_rank1d)

  fill(lr_Sigma.{S}, 2.0)
  fill(lr_Sigma.{SInv}, 1/2)

  __demand(__index_launch)
  for color in is_rank do
    compute_inverse(lp_Sigma_rank[is_rank1d(color)])
  end

end

regentlib.start(main)

@elliottslaughter
Copy link
Contributor

I'll look at fixing this, but you should be able to work around for now with -findex-launch-dynamic 0 -foverride-demand-index-launch 1.

@syamajala
Copy link
Contributor Author

That works but Im running into this issue: #1298

@elliottslaughter
Copy link
Contributor

The dynamic projection functor issue should be fixed in master with 1aa0346. I'll deal with the other bug in its own issue.

@syamajala
Copy link
Contributor Author

Seems to be working now. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants