Event Timestamp Recording
The event created in Event Creation and Destruction can be used to collect statistics on the time consumed by compute tasks in a stream. The sample code is as follows: This sample code is used only to describe how to use events and cannot be directly copied for compilation or running. For the complete sample code, click here.
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; // Create a stream. aclrtStream stream; aclrtCreateStream(&stream); aclrtEvent startEvent; aclrtEvent endEvent; // Create an event. Pass the ACL_EVENT_TIME_LINE parameter to the API, indicating that the created event is used for recording. aclrtCreateEventExWithFlag(&startEvent, ACL_EVENT_TIME_LINE); aclrtCreateEventExWithFlag(&endEvent, ACL_EVENT_TIME_LINE); // Insert startEvent. aclrtRecordEvent(startEvent, stream); // Deliver compute tasks to the stream. kernel<<< grid, block, 0, stream>>>(...); // Insert endEvent. aclrtRecordEvent(endEvent, stream); aclrtSynchronizeStream(stream); // Obtain the timestamp and calculate the time consumed. aclrtEventElapsedTime(&useTime, startEvent, endEvent); |
Parent topic: Event-based synchronization