CudaExtension
CUDA 操作的扩展。
UUID: d63a98fa-7882-11eb-a917-b38f664f399c
版本: 2.0.0
作者: NVIDIA
许可证: LICENSE
nvidia::gxf::CudaStream
持有并提供对原生 cudaStream_t
的访问。
nvidia::gxf::CudaStream
句柄必须由 nvidia::gxf::CudaStreamPool
分配。其生命周期有效,直到通过 nvidia::gxf::CudaStreamPool.releaseStream()
显式回收,或隐式地直到 nvidia::gxf::CudaStreamPool
被停用。
您可以调用 stream()
来获取原生 cudaStream_t
句柄,并提交 GPU 操作。提交后,GPU 将接管输入张量/缓冲区并保持使用状态。为防止主机不小心释放这些正在使用的缓冲区,CUDA Codelet 需要调用 record(event, input_entity, sync_cb)
以延长 input_entity
的生命周期,直到 GPU 完全消耗它。或者,您可以为原生 cudaEvent_t
操作调用 record(event, event_destroy_cb)
,并通过 event_destroy_cb
释放正在使用的资源。
在所有 CUDA 操作之后,图形管道中必须有一个 nvidia::gxf::CudaStreamSync
。有关更多详细信息,请参见 nvidia::gxf::CudaStreamSync
。
组件 ID: 5683d692-7884-11eb-9338-c3be62d576be
定义于: gxf/cuda/cuda_stream.hpp
nvidia::gxf::CudaStreamId
持有 CUDA 流 ID 以推断 nvidia::gxf::CudaStream
句柄。
stream_cid
应该是 nvidia::gxf::CudaStream
组件 ID。
组件 ID: 7982aeac-37f1-41be-ade8-6f00b4b5d47c
定义于: gxf/cuda/cuda_stream_id.hpp
nvidia::gxf::CudaEvent
持有并提供对原生 cudaEvent_t
句柄的访问。
当创建 nvidia::gxf::CudaEvent
时,您需要通过 init(flags, dev_id)
初始化原生 cudaEvent_t
,或者通过 initWithEvent(event, dev_id, free_fnc)
设置第三方事件。事件保持有效,直到显式调用 deinit
,否则在析构函数中回收。
组件 ID: f5388d5c-a709-47e7-86c4-171779bc64f3
定义于: gxf/cuda/cuda_event.hpp
nvidia::gxf::CudaStreamPool
CudaStream
分配。
您必须显式调用 allocateStream()
以获取有效的 nvidia::gxf::CudaStream
句柄。此组件将持有其所有已分配的 nvidia::gxf::CudaStream
实体,直到显式调用 releaseStream(stream)
或 CudaStreamPool
组件被停用。
组件 ID: 6733bf8b-ba5e-4fae-b596-af2d1269d0e7
基类型: nvidia::gxf::Allocator
参数
dev_id
GPU 设备 ID。
标志: GXF_PARAMETER_FLAGS_NONE
类型: GXF_PARAMETER_TYPE_INT32
默认值: 0
stream_flags
用于创建 CUDA 流的标志值。
标志: GXF_PARAMETER_FLAGS_NONE
类型: GXF_PARAMETER_TYPE_INT32
默认值: 0
stream_priority
用于创建 CUDA 流的优先级值。
标志: GXF_PARAMETER_FLAGS_NONE
类型: GXF_PARAMETER_TYPE_INT32
默认值: 0
reserved_size
用户指定的文件名,不带扩展名。
标志: GXF_PARAMETER_FLAGS_NONE
类型: GXF_PARAMETER_TYPE_INT32
默认值: 1
max_size
最大流大小。
标志: GXF_PARAMETER_FLAGS_NONE
类型: GXF_PARAMETER_TYPE_INT32
默认值: 0,无限制。
nvidia::gxf::CudaStreamSync
同步消息实体携带的所有 CUDA 流。
此代码小组件需要在所有 CUDA 操作代码小组件之后的图形管道中连接。当收到消息实体时,它会找到该消息中的所有 nvidia::gxf::CudaStreamId
,并提取每个 nvidia::gxf::CudaStream
。对于每个 CudaStream
句柄,它同步所有之前的 nvidia::gxf::CudaStream.record()
事件,以及此点之前提交的所有 GPU 操作。
当使用 nvidia::gxf::CudaStream.record()
时,必须在图中设置 CudaStreamSync
,否则可能会导致内存泄漏。
组件 ID: 0d1d8142-6648-485d-97d5-277eed00129c
基类型: nvidia::gxf::Codelet
参数
rx
接收器,用于接收所有携带 nvidia::gxf::CudaStreamId
的消息。
标志: GXF_PARAMETER_FLAGS_NONE
类型: GXF_PARAMETER_TYPE_HANDLE
句柄类型: nvidia::gxf::Receiver
tx
发射器,用于将消息发送到下游。
标志: GXF_PARAMETER_FLAGS_OPTIONAL
类型: GXF_PARAMETER_TYPE_HANDLE
句柄类型: nvidia::gxf::Transmitter