//--- hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream) { std::call_once(hip_initialized, ihipInit); ihipEvent_t *eh = event._handle; if (eh && eh->_state != hipEventStatusUnitialized) { eh->_stream = stream; if (stream == NULL) { // If stream == NULL, wait on all queues. // Behavior matches "use standard default semantics". // TODO-HCC fix this - conservative or use device timestamps? // TODO-HCC can we use barrier or event marker to implement better solution? ihipDevice_t *device = ihipGetTlsDefaultDevice(); device->locked_syncDefaultStream(true); eh->_timestamp = hc::get_system_ticks(); eh->_state = hipEventStatusRecorded; return ihipLogStatus(hipSuccess); } else { eh->_state = hipEventStatusRecording; // Clear timestamps eh->_timestamp = 0; eh->_marker = stream->_av.create_marker(); eh->_copy_seq_id = stream->locked_lastCopySeqId(); return ihipLogStatus(hipSuccess); } } else { return ihipLogStatus(hipErrorInvalidResourceHandle); } }