Open SergeyKopienko opened 1 week ago
Couldn't we simply increase the timeout in our CI? One downside I noticed in this approach is the increased CI time (13 vs. 10 minutes for DPCPP backend on Linux and 18 vs. 13 minutes on Windows).
Couldn't we simply increase the timeout in our CI? One downside I noticed in this approach is the increased CI time (13 vs. 10 minutes for DPCPP backend on Linux and 18 vs. 13 minutes on Windows).
For me - it's out of my scope (to increased CI time). But when I had deal with tests I understood that the best situation - the we have one test for one algorithm. So I prefer to split tests and never write so big tests like this set.
@dmitriy-sobolev what do you think about increate test timeout in CI system?
Honestly, the amount of changes is terrifying, and because of that I need to take a closer look at the PR, even though these are mechanical changes.
@SergeyKopienko, I have no strong preference between yours or Julian's suggestions. Julian's one is focused in solving the issue with the timeout, and would be really good if it was enough to raise the timeout value not too much, e.g. from 6 to 9 minutes per test and agree what is the upper bound for the timeout to avoid future unjustified increases. However, you've already done a lot of work and you've also addressed a design issue with many cases in one single test file, so it might be better to continue.
To add more context, the timeout issue started occurring since https://github.com/oneapi-src/oneDPL/pull/1653.
I have some questions:
zip_iterator
test has the same structure. Perhaps, the cases from this large file may moved the the newly created per-algorithm files.Meanwhile, @MikeDvorskiy, thought about refactoring the whole test system and this issue was a motivation. Perhaps, he might also comment and suggest a better solution if he knows any.
2. What is a motivation to preserve the backend type names in the tests? I suppose it might be removed as non-necessary now.
I too am confused by our redundancy here of sycl_iterator_*
vs other tests for the same algorithms (sycl_iterator_sort.pass vs sort.pass for example).
I believe sycl_iterator_
is meant to describe the data type rather than the backend type (although in this case one implies the other inherently). These tests use sycl::buffer
and oneapi::dpl::begin
and oneapi::dpl::end
to test sycl_iterator
inputs to these algorithms. It should be mentioned that they also test USM data inputs both shared and device. I know we use sycl_iterator_*
tests to be a skeleton crew test for dpcpp backends in per-commit CI and validation, to provide decent coverage without calling all tests. If we were to reorganize these tests, we would need another system to provide that. It could be done, but would require work.
Now that we have the input_data_sweep_*
tests which isolate our input data processing for combinations of input types including sycl_iterator
, usm
, etc. and different combinations of those base types wrapped in our iterator types, I do wonder how important it is to have coverage for each algorithm to be tested with multiple input data types. I'm not necessarily arguing to remove large chunks of coverage, but it is worth considering as we think about such large changes to the tests.
Edit:
In theory, the input_data_sweep_
tests check read and write ability for a large sweep of possible inputs to sycl kernels. That set of tests should allow us to be more confident that if data of one input type functions in a pattern / API, then other valid input types to oneDPL would function equivalently, and we don't need to test every pattern with every base data type.
2. What is a motivation to preserve the backend type names in the tests? I suppose it might be removed as non-necessary now.
@dmitriy-sobolev C
2. What is a motivation to preserve the backend type names in the tests? I suppose it might be removed as non-necessary now.
All new test files has been renamed: now their names are shortly.
I think the main issue motivating this PR was the test timeouts observed in https://github.com/oneapi-src/oneDPL/pull/1653. These had nothing to do with the test setup but was a bug introduced in the patch. This was addressed in https://github.com/oneapi-src/oneDPL/pull/1667. Thus, I think we can close this PR.
I agree with @danhoeflinger that we might want an offline discussion about restructuring our per-commit CI tests.
@timmiesmith is this PR not required anymore for us?
In this PR we split sycl_iterator tests to separate tests: one test in one file. The goal - to avoid timeout errors in CI system for these tests.
This info has been collected from https://github.com/oneapi-src/oneDPL/actions/runs/9764889560 and from https://github.com/oneapi-src/oneDPL/actions/runs/9778104870?pr=1660
UPD: after applying the PR https://github.com/oneapi-src/oneDPL/pull/1667 from Julian, probably this PR isn't required anymore. But may be somebody know another reasons to apply it?