CUDA

CUDA supports NvSciSync by enabling applications to signal and wait for them on a CUDA stream. (Signaling an NvSciSync is similar to cudaEventRecord and waiting for an NvSciSync is similar to issuing cudaStreamWaitEvent). CUDA treats NvSciSync as an external semaphore object of type cudaExternalSemaphoreHandleType, which can be imported into the CUDA address space. The application can use existing cudaExternalSemaphore API to build dependencies between an NvSciSync object and CUDA streams, and vice-versa. Since cudaExternalSemaphore APIs are treated as regular stream operations, CUDA-NvSciSync interop follows regular stream semantics.