记录Event时间戳
在Event的创建与销毁章节中创建的Event可用于统计Stream上计算任务的耗时,代码示例如下。该示例仅用于说明Event使用方法,不可以直接拷贝编译运行。完整样例代码请参见Link。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | uint64_t time = 0; float useTime = 0; // 创建Stream aclrtStream stream; aclrtCreateStream(&stream); aclrtEvent startEvent; aclrtEvent endEvent; // 创建Event,接口传入ACL_EVENT_TIME_LINE参数,表示创建的Event用于记录 aclrtCreateEventExWithFlag(&startEvent, ACL_EVENT_TIME_LINE); aclrtCreateEventExWithFlag(&endEvent, ACL_EVENT_TIME_LINE); // 插入startEvent aclrtRecordEvent(startEvent, stream); // 在Stream中下发计算任务 kernel<<< grid, block, 0, stream>>>(...); // 插入endEvent aclrtRecordEvent(endEvent, stream); aclrtSynchronizeStream(stream); // 获取时间戳并计算耗时 aclrtEventElapsedTime(&useTime, startEvent, endEvent); |
父主题: 基于Event同步