CudaExtension#
用于 CUDA 操作的扩展。
UUID: d63a98fa-7882-11eb-a917-b38f664f399c
版本: 2.6.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
nvidia::gxf::CudaAllocator#
RMMAllocator 和 StreamOrderedAllocator/ 的基类。
组件 ID: cac15f93-6438-4ed3-bc61-b5dba25b6f91
基类型: nvidia::gxf::Allocator
定义于: gxf/cuda/cuda_allocator.hpp
nvidia::gxf::StreamOrderedAllocator#
具有 GPU 设备上流顺序内存分配的内存分配器。
组件 ID: 63d1d168-13d7-11ef-931a-0be4a6378384
基类型: nvidia::gxf::CudaAllocator
参数#
gpu_device
从中分配 CUDA 内存的 GPU 设备资源。
标志: GXF_PARAMETER_FLAGS_NONE
类型: GXF_PARAMETER_TYPE_HANDLE
句柄类型: nvidia::gxf::GPUDevice
device_memory_initial_size
设备内存资源使用的初始内存池大小。该大小指定为一个字符串,其中包含数字和(可选)单位。如果未给出单位,则假定该值以字节为单位。支持的单位为:B、KB、MB、GB、TB。
标志: GXF_PARAMETER_FLAGS_NONE
类型:
GXF_PARAMETER_TYPE_STRING
默认值: “16MB”(非 Jetson 机器)或 “8MB”(Jetson 机器)
device_memory_max_size
设备内存资源使用的最大内存池大小。该大小指定为一个字符串,其中包含数字和(可选)单位。如果未给出单位,则假定该值以字节为单位。支持的单位为:B、KB、MB、GB、TB。
标志: GXF_PARAMETER_FLAGS_NONE
类型:
GXF_PARAMETER_TYPE_STRING
默认值: “32MB”(非 Jetson 机器)或 “16MB”(Jetson 机器)
release_threshold
释放阈值指定池缓存的最大内存量。该大小指定为一个字符串,其中包含数字和(可选)单位。如果未给出单位,则假定该值以字节为单位。支持的单位为:B、KB、MB、GB、TB。
标志: GXF_PARAMETER_FLAGS_NONE
类型:
GXF_PARAMETER_TYPE_STRING
默认值: 0