This section describes the event management functions of the CUDA runtime application programming interface.
Creates an event object for the current device usingcudaEventDefault.
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
See also:
cudaEventCreate ( C++ API),cudaEventCreateWithFlags,cudaEventRecord,cudaEventQuery,cudaEventSynchronize,cudaEventDestroy,cudaEventElapsedTime,cudaStreamWaitEvent,cuEventCreate
Creates an event object for the current device with the specified flags. Valid flags include:
cudaEventDefault: Default event creation flag.
cudaEventBlockingSync: Specifies that event should use blocking synchronization. A host thread that usescudaEventSynchronize() to wait on an event created with this flag will block until the event actually completes.
cudaEventDisableTiming: Specifies that the created event does not need to record timing data. Events created with this flag specified and thecudaEventBlockingSync flag not specified will provide the best performance when used withcudaStreamWaitEvent() andcudaEventQuery().
cudaEventInterprocess: Specifies that the created event may be used as an interprocess event bycudaIpcGetEventHandle().cudaEventInterprocess must be specified along withcudaEventDisableTiming.
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
See also:
cudaEventCreate ( C API),cudaEventSynchronize,cudaEventDestroy,cudaEventElapsedTime,cudaStreamWaitEvent,cuEventCreate
Destroys the event specified byevent.
An event may be destroyed before it is complete (i.e., whilecudaEventQuery() would returncudaErrorNotReady). In this case, the call does not block on completion of the event, and any associated resources will automatically be released asynchronously at completion.
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
Use of the handle after this call is undefined behavior.
ReturnscudaErrorInvalidResourceHandle in the event of being passed NULL as the input event.
See also:
cudaEventCreate ( C API),cudaEventCreateWithFlags,cudaEventQuery,cudaEventSynchronize,cudaEventRecord,cudaEventElapsedTime,cuEventDestroy
cudaSuccess,cudaErrorNotReady,cudaErrorInvalidValue,cudaErrorInvalidResourceHandle,cudaErrorLaunchFailure,cudaErrorUnknown
Computes the elapsed time between two events (in milliseconds with a resolution of around 0.5 microseconds). Note this API is not guaranteed to return the latest errors for pending work. As such this API is intended to serve as a elapsed time calculation only and polling for completion on the events to be compared should be done withcudaEventQuery instead.
If either event was last recorded in a non-NULL stream, the resulting time may be greater than expected (even if both used the same stream handle). This happens because thecudaEventRecord() operation takes place asynchronously and there is no guarantee that the measured latency is actually just between the two events. Any number of other different stream operations could execute in between the two measured events, thus altering the timing in a significant way.
IfcudaEventRecord() has not been called on either event, thencudaErrorInvalidResourceHandle is returned. IfcudaEventRecord() has been called on both events but one or both of them has not yet been completed (that is,cudaEventQuery() would returncudaErrorNotReady on at least one of the events),cudaErrorNotReady is returned. If either event was created with thecudaEventDisableTiming flag, then this function will returncudaErrorInvalidResourceHandle.
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
ReturnscudaErrorInvalidResourceHandle in the event of being passed NULL as the input event.
See also:
cudaEventCreate ( C API),cudaEventCreateWithFlags,cudaEventQuery,cudaEventSynchronize,cudaEventDestroy,cudaEventRecord,cuEventElapsedTime
cudaSuccess,cudaErrorNotReady,cudaErrorInvalidValue,cudaErrorInvalidResourceHandle,cudaErrorLaunchFailure
Queries the status of all work currently captured byevent. SeecudaEventRecord() for details on what is captured by an event.
ReturnscudaSuccess if all captured work has been completed, orcudaErrorNotReady if any captured work is incomplete.
For the purposes of Unified Memory, a return value ofcudaSuccess is equivalent to having calledcudaEventSynchronize().
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
ReturnscudaErrorInvalidResourceHandle in the event of being passed NULL as the input event.
See also:
cudaEventCreate ( C API),cudaEventCreateWithFlags,cudaEventRecord,cudaEventSynchronize,cudaEventDestroy,cudaEventElapsedTime,cuEventQuery
Captures inevent the contents ofstream at the time of this call.event andstream must be on the same CUDA context. Calls such ascudaEventQuery() orcudaStreamWaitEvent() will then examine or wait for completion of the work that was captured. Uses ofstream after this call do not modifyevent. See note on default stream behavior for what is captured in the default case.
cudaEventRecord() can be called multiple times on the same event and will overwrite the previously captured state. Other APIs such ascudaStreamWaitEvent() use the most recently captured state at the time of the API call, and are not affected by later calls tocudaEventRecord(). Before the first call tocudaEventRecord(), an event represents an empty set of work, so for examplecudaEventQuery() would returncudaSuccess.
This function uses standarddefault stream semantics.
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
ReturnscudaErrorInvalidResourceHandle in the event of being passed NULL as the input event.
See also:
cudaEventCreate ( C API),cudaEventCreateWithFlags,cudaEventQuery,cudaEventSynchronize,cudaEventDestroy,cudaEventElapsedTime,cudaStreamWaitEvent,cudaEventRecordWithFlags,cuEventRecord
Captures inevent the contents ofstream at the time of this call.event andstream must be on the same CUDA context. Calls such ascudaEventQuery() orcudaStreamWaitEvent() will then examine or wait for completion of the work that was captured. Uses ofstream after this call do not modifyevent. See note on default stream behavior for what is captured in the default case.
cudaEventRecordWithFlags() can be called multiple times on the same event and will overwrite the previously captured state. Other APIs such ascudaStreamWaitEvent() use the most recently captured state at the time of the API call, and are not affected by later calls tocudaEventRecordWithFlags(). Before the first call tocudaEventRecordWithFlags(), an event represents an empty set of work, so for examplecudaEventQuery() would returncudaSuccess.
flags include:
cudaEventRecordDefault: Default event creation flag.
cudaEventRecordExternal: Event is captured in the graph as an external event node when performing stream capture.
This function uses standarddefault stream semantics.
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
ReturnscudaErrorInvalidResourceHandle in the event of being passed NULL as the input event.
See also:
cudaEventCreate ( C API),cudaEventCreateWithFlags,cudaEventQuery,cudaEventSynchronize,cudaEventDestroy,cudaEventElapsedTime,cudaStreamWaitEvent,cudaEventRecord,cuEventRecord,
Waits until the completion of all work currently captured inevent. SeecudaEventRecord() for details on what is captured by an event.
Waiting for an event that was created with thecudaEventBlockingSync flag will cause the calling CPU thread to block until the event has been completed by the device. If thecudaEventBlockingSync flag has not been set, then the CPU thread will busy-wait until the event has been completed by the device.
Note that this function may also return error codes from previous, asynchronous launches.
Note that this function may also returncudaErrorInitializationError,cudaErrorInsufficientDriver orcudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note that as specified bycudaStreamAddCallback no CUDA function may be called from callback.cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
ReturnscudaErrorInvalidResourceHandle in the event of being passed NULL as the input event.
See also:
cudaEventCreate ( C API),cudaEventCreateWithFlags,cudaEventRecord,cudaEventQuery,cudaEventDestroy,cudaEventElapsedTime,cuEventSynchronize