Closed fknorr closed 2 months ago
Check-perf-impact results: (7b849de16ff11660b98988ab0b032db7)
:question: No new benchmark data submitted. :question:
Please re-run the microbenchmarks and include the results if your commit could potentially affect performance.
Changes Missing Coverage | Covered Lines | Changed/Added Lines | % | ||
---|---|---|---|---|---|
include/print_utils.h | 16 | 18 | 88.89% | ||
src/backend/sycl_backend.cc | 111 | 116 | 95.69% | ||
src/utils.cc | 12 | 17 | 70.59% | ||
src/live_executor.cc | 282 | 314 | 89.81% | ||
<!-- | Total: | 509 | 553 | 92.04% | --> |
Files with Coverage Reduction | New Missed Lines | % | ||
---|---|---|---|---|
include/thread_queue.h | 1 | 85.53% | ||
src/task.cc | 1 | 92.06% | ||
<!-- | Total: | 2 | --> |
Totals | |
---|---|
Change from base Build 10007312093: | -0.2% |
Covered Lines: | 7753 |
Relevant Lines: | 8064 |
This PR adds the last major components necessary for the switch to IDAG scheduling.
Executors spawn their own thread which receives instructions and outbound pilots from the scheduler thread as well as runtime state such as user-provided allocation pointers through a
double_buffered_queue
.The
executor
interface has two implementations,live_executor
(for normal execution) anddry_run_executor
for dry runs. Thelive_executor
maintains the state persistent between instructions, such as memory allocations, but delegates all state management complexity toout_of_order_engine
andreceive_arbiter
.backend
is an abstract interface for executing any operation that might touch backend-allocated memory. The interface itself is independent of SYCL, and the tie-in happens with thesycl_backend
derived class. Backend specialization for CUDA nd-copies is achieved by instantiating either asycl_generic_backend
or asycl_cuda_backend
.Most of the backend and executor code is covered by explicit unit tests, with the exception of issuing receive instructions (would be annoying to test, and is mostly covered by
receive_arbiter_tests
and bounds-checking messages (will be automatically covered byruntime_tests
after the big switch).