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

[SYCL][E2E] Add functionality to split build and run of e2e tests #16016

Draft
wants to merge 7 commits into
base: sycl
Choose a base branch
from

Conversation

ayylol
Copy link
Contributor

@ayylol ayylol commented Nov 7, 2024

Adds functionality to split the compilation and execution of e2e tests across separate machines.

This functionality is enabled via two new lit features run-mode and build-mode. By default both of these are enabled and tests run just as they have before. We can call lit with the flag --param split-mode= with either build or run to set these features. The feature unsplit-mode is added for convenience for when both build and run mode are set.

When using split-mode=build only the build-mode feature is added. In this mode all tests that can be built on the system will be built. When running a lit test in this mode two key things change:

  • All RUN: lines will be executed unless they contain %{run}, %{run-unfiltered-devices} or %if run-mode.
  • Unsupported and requires statements are ignored. Currently the only way to mark tests as unsupported in build only mode is to include unsplit-mode or TEMPORARY_DISABLED in a requires statement.

When using split-mode=run only the run-mode is set. In this case tests are not built, they are only executed. Deciding whether a test is supported in this mode works the same way as when the split-mode parameter is not set. To only execute the tests we ignore all lit RUN: lines unless they contain %{run}, %{run-unfiltered-devices} or %if run-mode. Since we do not build the tests in this mode, for any test to pass we must have ran the tests in either build or non-split mode previously.

Some notes/current limitations:

  • Currently only the spir64 triple is supported for the build only mode.
  • If a test is able to build, but fails during running we need to mark it as XFAILS: run-mode so that it does not XPASS when in build only mode.
  • The build only mode can be ran manually on CI with the SYCL E2E action, selecting the "Linux, build" runner, and adding --param split-mode=build to LIT_OPTS. This pr does not have the needed CI changes to be able to use the run only mode.

@ayylol
Copy link
Contributor Author

ayylol commented Nov 7, 2024

@uditagarwal97 @sarnex @aelovikov-intel

Closed #15728 and reopened in this pr so that it is not a sycl-devops-pr and runs unnecessary checks.

Going to leave this marked as draft until you guys review and are ok with the changes in format.py and lit.cfg.py, then mark as open so that it pings the tests owners after

https://github.com/intel/llvm/actions/runs/11725963631 is the latest dry-run of build only

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

Successfully merging this pull request may close these issues.

1 participant