Skip to content

Conversation

@EuphoricThinking
Copy link
Contributor

This PR is a continuation of #20969 and uses the macros introduced there.

Modifications allow for running tests with different queue submission
modes, either specified by the user or provided by default. This is
made possible through the introduced macros:
- UUR_INSTANTIATE_DEVICE_TEST_SUITE_MULTI_QUEUE(FIXTURE):
instantiates the provided FIXTURE with the submission modes:
UR_QUEUE_FLAG_SUBMISSION_BATCHED and UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE
- UUR_MULTI_QUEUE_TYPE_TEST_SUITE_WITH_PARAM(FIXTURE, VALUES,
PRINTER): similarly instantiates the FIXTURE with either batched or
immediate submission modes, but additionally accepts parameters
- UUR_DEVICE_TEST_SUITE_WITH_QUEUE_TYPES(FIXTURE, MODES):
instantiates the provided FIXTURE with queue submission modes
provided by the user
- UUR_DEVICE_TEST_SUITE_WITH_DEFAULT_QUEUE(FIXTURE): provides only
one default submission mode (specified as 0); the exact mode is chosen
by the device
- UUR_DEVICE_TEST_SUITE_WITH_QUEUE_TYPES_PRINTER(FIXTURE, MODES,
PRINTER): similar to UUR_DEVICE_TEST_SUITE_WITH_QUEUE_TYPES, but
the user also provides the PRINTER function
- UUR_DEVICE_TEST_SUITE_WITH_QUEUE_TYPES_AND_PARAM(FIXTURE, VALUES,
MODES, PRINTER): similar to UUR_MULTI_QUEUE_TYPE_TEST_SUITE_WITH_PARAM,
but the user also provides queue submission modes

At this moment, UUR_DEVICE_TEST_SUITE_WITH_QUEUE_TYPES_AND_PARAM is
not used in any test. As a helper intended for parametrized tests,
this macro is complementary to UUR_DEVICE_TEST_SUITE_WITH_QUEUE_TYPES,
which enables the user to specify queue submission modes
for unparametrized tests. Example usage:

UUR_DEVICE_TEST_SUITE_WITH_QUEUE_TYPES_AND_PARAM(
urEnqueueMemBufferFillTest,
testing::ValuesIn(test_cases),
testing::ValuesIn(UR_QUEUE_FLAG_SUBMISSION_BATCHED,
               UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE),
uur::printFillTestStringMultiQueueType<urEnqueueMemBufferFillTest>);

Tests that do not use any queue (like most of the urProgramTests,
except for urProgramSetSpecializationConstantsTest) are instantiated using
UUR_DEVICE_TEST_SUITE_WITH_DEFAULT_QUEUE. There might be more tests
that do not need a queue, since the heuristic for determining whether
the given test needs a queue consisted of checking whether the queue
defined in the test class is mentioned in the test file (not checked
per derived test class).

This patch introduces equivalents for urQueueTest for unparametrized
tests and urQueueTestWithParam, which are urMultiQueueTypeTest and
urMultiQueueTypeTestWithParam, respectively. Parametrized tests use
a new parameter type: MultiQueueParam (std::tuple<T, ur_queue_flag_t>).
Similarly, the previously unparametrized tests, which were eventually
parametrized with the DeviceTuple, now use std::tuple<DeviceTuple,
ur_queue_flag_t> as their parameter type.

Additionally, urCommandBufferCommandExpTest is removed since it is not
referenced anywhere.
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