diff --git a/sycl/source/detail/queue_impl.cpp b/sycl/source/detail/queue_impl.cpp index b9af432a7f57..881f7bba8888 100644 --- a/sycl/source/detail/queue_impl.cpp +++ b/sycl/source/detail/queue_impl.cpp @@ -492,6 +492,7 @@ event queue_impl::submitMemOpHelper(const std::shared_ptr &Self, { NestedCallsTracker tracker; ur_event_handle_t UREvent = nullptr; + EventImpl->setSubmissionTime(); MemOpFunc(MemOpArgs..., getUrEvents(ExpandedDepEvents), &UREvent); EventImpl->setHandle(UREvent); EventImpl->setEnqueued(); diff --git a/sycl/test-e2e/Basic/submit_time.cpp b/sycl/test-e2e/Basic/submit_time.cpp index 88b2995e9522..7bee5946985e 100644 --- a/sycl/test-e2e/Basic/submit_time.cpp +++ b/sycl/test-e2e/Basic/submit_time.cpp @@ -8,18 +8,22 @@ // Test fails on hip flakily, disable temprorarily. // UNSUPPORTED: hip +#include +#include #include #include #include int main(void) { + constexpr size_t n = 16; sycl::queue q({sycl::property::queue::enable_profiling{}}); - int *data = sycl::malloc_host(1024, q); + int *data = sycl::malloc_host(n, q); + int *dest = sycl::malloc_host(n, q); - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 5; i++) { auto event = q.submit([&](sycl::handler &cgh) { cgh.parallel_for( - sycl::range<1>(1024), [=](sycl::id<1> idx) { data[idx] = idx; }); + sycl::range<1>(n), [=](sycl::id<1> idx) { data[idx] = idx; }); }); event.wait(); @@ -30,8 +34,42 @@ int main(void) { auto end_time = event.get_profiling_info(); + // Print for debugging + std::cout << "Kernel Event - Submit: " << submit_time + << ", Start: " << start_time << ", End: " << end_time + << std::endl; + + assert(submit_time != 0 && "Submit time should not be zero"); assert((submit_time <= start_time) && (start_time <= end_time)); } + + // All shortcut memory operations use queue_impl::submitMemOpHelper. + // This test covers memcpy as a representative, extend if other operations + // diverge. + for (int i = 0; i < 5; i++) { + auto memcpy_event = q.memcpy(dest, data, sizeof(int) * n); + memcpy_event.wait(); + + auto submit_time = + memcpy_event + .get_profiling_info(); + auto start_time = + memcpy_event + .get_profiling_info(); + auto end_time = + memcpy_event + .get_profiling_info(); + + // Print for debugging + std::cout << "Memcpy Event - Submit: " << submit_time + << ", Start: " << start_time << ", End: " << end_time + << std::endl; + + assert(submit_time != 0 && "Submit time should not be zero"); + assert((submit_time <= start_time) && (start_time <= end_time)); + } + sycl::free(data, q); + sycl::free(dest, q); return 0; }