You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sycl::info::event_profiling的command_submit提交的是全部代码还是仅parallel-for?

关于SYCL事件profiling时间戳的范围说明

你提到的cl::sycl::info::event_profiling::command_submit获取的是时间戳而非时长,它对应的是SYCL runtime将完整的命令组(你传入submit方法的lambda所对应的设备任务包)提交到设备命令队列的时间点,和你回调块内的主机侧代码无关。

三个profiling时间戳的具体对应范围如下:

  • command_submit:主机端已经完成命令组的所有预处理逻辑(包括你在回调内写的变量拷贝、accessor创建、内核参数绑定等主机侧执行的代码),正式将打包好的设备任务提交到设备队列的时间点。回调块内的主机代码是在submit方法调用时在主机侧同步执行完成的,不属于提交给设备的任务范围。
  • command_start:设备端调度到该命令组,开始执行对应的计算任务(也就是你写的parallel_for内核)的时间点。
  • command_end:设备端完成该命令组的所有操作(包括内核执行完毕、所有buffer写入操作完成)的时间点。

补充说明:
如果你需要统计内核实际在设备上的执行时长,使用 end_time - start_time 即可;如果需要统计任务从提交到设备到执行完成的总耗时,使用 end_time - submit_time 即可。
另外需要注意:创建队列时必须显式启用profiling属性,否则无法获取合法的profiling信息,队列构造示例如下:

sycl::queue gpuQueue{sycl::gpu_selector_v, sycl::property::queue::enable_profiling{}};

内容的提问来源于stack exchange,提问作者saharsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 07:45:02