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

Creating reusable command buffers in stream->hal lowering. #18100

Merged
merged 1 commit into from
Aug 7, 2024

Conversation

benvanik
Copy link
Collaborator

@benvanik benvanik commented Aug 5, 2024

An extremely naive "analysis" is used to create binding tables. This will need to improve in the future for more complex programs but seems to be sufficient today. Dynamic push constants currently disable reuse until future changes move those into uniform buffers.

This is disabled by default and requires opting in via the --iree-hal-indirect-command-buffers=true and
--iree-hal-memoization=true flags. As testing progresses the flags will flip to default but remain present in order to allow debugging target-specific issues with reusable/indirect command buffers. There should be no significant changes with the flags disabled.

Progress on #17875.

@benvanik benvanik added the compiler/dialects Relating to the IREE compiler dialects (flow, hal, vm) label Aug 5, 2024
@benvanik benvanik requested a review from ScottTodd August 5, 2024 16:23
Base automatically changed from users/benvanik/binding-layout to main August 5, 2024 16:49
@benvanik benvanik force-pushed the users/benvanik/indirect-cmd branch 2 times, most recently from b687063 to 15cebb3 Compare August 5, 2024 17:04
@benvanik benvanik force-pushed the users/benvanik/indirect-cmd branch 2 times, most recently from 0415728 to 37c3384 Compare August 5, 2024 17:36
@benvanik
Copy link
Collaborator Author

benvanik commented Aug 6, 2024

Failures here are from the Vulkan HAL not managing descriptor sets properly. I'm going to see if I can get back to a single set for now until Vulkan can be reworked (#18121).

An extremely naive "analysis" is used to create binding tables. This
will need to improve in the future for more complex programs but seems
to be sufficient today. Dynamic push constants currently disable reuse
until future changes move those into uniform buffers.

This is disabled by default and requires opting in via the
`--iree-hal-indirect-command-buffers=true` and
`--iree-hal-memoization=true` flags. As testing progresses the flags
will flip to default but remain present in order to allow debugging
target-specific issues with reusable/indirect command buffers. There
should be no significant changes with the flags disabled.

Progress on #17875.
@benvanik benvanik force-pushed the users/benvanik/indirect-cmd branch from 37c3384 to 7d16be4 Compare August 7, 2024 14:53
@benvanik benvanik marked this pull request as ready for review August 7, 2024 15:13
@benvanik benvanik merged commit de679c9 into main Aug 7, 2024
47 checks passed
@benvanik benvanik deleted the users/benvanik/indirect-cmd branch August 7, 2024 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler/dialects Relating to the IREE compiler dialects (flow, hal, vm)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants