sycl::info::event_profiling 中的 command_submit 提交整个代码还是仅提交并行?
Posted
技术标签:
【中文标题】sycl::info::event_profiling 中的 command_submit 提交整个代码还是仅提交并行?【英文标题】:The command_submit in the sycl::info::event_profiling, submits the whole code or just the parallel-for? 【发布时间】:2021-05-28 15:52:09 【问题描述】:我尝试分析我的函数在设备上的执行时间。 我读了这个链接: https://docs.oneapi.com/versions/latest/dpcpp/iface/event.html 但是我在文档中没有找到任何关于 sycl::info::event_profiling 的信息,这让我能够理解它们到底对应什么。 我的意思是,command_start、command_end、command_submit。 例如: 这是我的代码,内核的一部分,
auto event = gpuQueue.submit([&](sycl::handler &h)
//local copy of fun
auto f = fun;
sycl::accessor in_accessor(in_buffer, h, sycl::read_only);
sycl::accessor out_accessor(out_buffer, h, sycl::write_only);
h.parallel_for(n_item, [=](sycl::id<1> index)
out_accessor[index] = f(in_accessor[index]);
);
);
event.wait();
auto end_overall = std::chrono::system_clock::now();
cl_ulong submit_time = event.template get_profiling_info<
cl::sycl::info::event_profiling::command_submit>();
cl_ulong start_time = event.template get_profiling_info<
cl::sycl::info::event_profiling::command_start>();
cl_ulong end_time = event.template get_profiling_info<
cl::sycl::info::event_profiling::command_end>();
我想了解cl::sycl::info::event_profiling::command_submit,提交整个代码还是只提交parallel-for?
【问题讨论】:
【参考方案1】:在SYCL 2020 specification上比较清楚一点:
command_submit
是命令组提交到 SYCL 运行时的时间戳。
command_start
是实际并行启动的时间戳
command_end
是并行完成的时间戳
所以,你在设备中的内核执行时间是command_start
- command_end
,
而命令组的总处理时间(即潜在副本、运行时开销等)是command_submit
- command_end
。
【讨论】:
谢谢。你说的对。看了这篇文档但没好好注意以上是关于sycl::info::event_profiling 中的 command_submit 提交整个代码还是仅提交并行?的主要内容,如果未能解决你的问题,请参考以下文章