|
14 | 14 | import pytest |
15 | 15 | from helpers.graph_kernels import compile_common_kernels |
16 | 16 |
|
17 | | -from cuda.core import Device, DeviceMemoryResource, LaunchConfig, LegacyPinnedMemoryResource |
| 17 | +from cuda.core import Device, DeviceMemoryResource, EventOptions, LaunchConfig, LegacyPinnedMemoryResource |
18 | 18 | from cuda.core._memory._synchronous_memory_resource import _SynchronousMemoryResource |
19 | 19 | from cuda.core._utils._weak_handles import weak_handle |
20 | 20 | from cuda.core._utils.cuda_utils import CUDAError, driver, handle_return |
@@ -96,36 +96,27 @@ def _update_executable_case(graph, case): |
96 | 96 |
|
97 | 97 |
|
98 | 98 | def _event_record_case(device): |
99 | | - """Keep the selected event pending to identify each exec's record target.""" |
100 | | - original = device.create_event() |
101 | | - replacement = device.create_event() |
102 | | - invalid_replacement = device.create_event() |
| 99 | + """Identify each exec's record target after completion.""" |
| 100 | + event_options = EventOptions(timing_enabled=True) |
| 101 | + original = device.create_event(options=event_options) |
| 102 | + replacement = device.create_event(options=event_options) |
| 103 | + invalid_replacement = device.create_event(options=event_options) |
103 | 104 | invalid_replacement.close() |
104 | 105 |
|
105 | | - callback_started = threading.Event() |
106 | | - callback_release = threading.Event() |
107 | | - |
108 | | - def blocking_callback(): |
109 | | - callback_started.set() |
110 | | - callback_release.wait(timeout=30) |
111 | | - |
112 | 106 | graph_def = GraphDefinition() |
113 | | - callback_node = graph_def.callback(blocking_callback) |
114 | | - node = callback_node.record(original) |
| 107 | + node = graph_def.record(original) |
115 | 108 |
|
116 | 109 | def assert_exec_uses(graph, expected): |
117 | | - callback_started.clear() |
118 | | - callback_release.clear() |
119 | 110 | stream = device.create_stream() |
| 111 | + reference = stream.record(options=event_options) |
| 112 | + stream.sync() |
| 113 | + |
| 114 | + with pytest.raises(RuntimeError, match=r"^Both Events must be recorded"): |
| 115 | + expected - reference |
| 116 | + |
120 | 117 | graph.launch(stream) |
121 | | - try: |
122 | | - assert callback_started.wait(timeout=5) |
123 | | - assert expected.is_done is False |
124 | | - unexpected = replacement if expected is original else original |
125 | | - assert unexpected.is_done is True |
126 | | - finally: |
127 | | - callback_release.set() |
128 | | - stream.sync() |
| 118 | + stream.sync() |
| 119 | + assert isinstance(expected - reference, float) |
129 | 120 |
|
130 | 121 | return _DefinitionUpdateCase( |
131 | 122 | graph_def=graph_def, |
|
0 commit comments