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