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