NVIDIA Holoscan SDK v2.9.0

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

上一个 GXF Core C APIs
下一个 MultimediaExtension
© 版权所有 2022-2024, NVIDIA。 最后更新于 2025 年 1 月 27 日。