nndeploy C++ API  0.2.0
nndeploy C++ API
Public Member Functions | Protected Attributes | List of all members
nndeploy::device::Stream Class Reference

流类 More...

#include <device.h>

Inheritance diagram for nndeploy::device::Stream:
[legend]
Collaboration diagram for nndeploy::device::Stream:
[legend]

Public Member Functions

template<typename T >
T * as ()
 类型转换模板函数 More...
 
virtual DevicegetDevice () const
 获取关联设备 More...
 
virtual base::DeviceType getDeviceType () const
 获取设备类型 More...
 
virtual void * getNativeStream ()
 获取原生流对象 More...
 
virtual base::Status onExecutionContextSetup ()
 执行上下文设置 More...
 
virtual base::Status onExecutionContextTeardown ()
 执行上下文清理 More...
 
virtual base::Status recordEvent (Event *event)
 在流中记录事件 More...
 
 Stream (Device *device)
 构造函数 More...
 
 Stream (Device *device, void *stream)
 构造函数(从现有流) More...
 
virtual base::Status synchronize ()
 同步流 More...
 
virtual base::Status waitEvent (Event *event)
 等待事件完成 More...
 
virtual ~Stream ()
 析构函数 More...
 
- Public Member Functions inherited from nndeploy::base::NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
NonCopyableoperator= (NonCopyable &&)=delete
 

Protected Attributes

Devicedevice_
 关联的设备 More...
 
bool is_external_ = false
 是否为外部流 More...
 

Detailed Description

流类

管理设备上的执行流,用于异步操作和同步控制

Definition at line 387 of file device.h.

Constructor & Destructor Documentation

◆ Stream() [1/2]

nndeploy::device::Stream::Stream ( Device device)

构造函数

Parameters
device关联的设备

◆ Stream() [2/2]

nndeploy::device::Stream::Stream ( Device device,
void *  stream 
)

构造函数(从现有流)

Parameters
device关联的设备
stream现有的原生流

◆ ~Stream()

virtual nndeploy::device::Stream::~Stream ( )
virtual

析构函数

Member Function Documentation

◆ as()

template<typename T >
T* nndeploy::device::Stream::as ( )
inline

类型转换模板函数

Template Parameters
T目标类型
Returns
T* 转换后的指针

Definition at line 499 of file device.h.

◆ getDevice()

virtual Device* nndeploy::device::Stream::getDevice ( ) const
virtual

获取关联设备

Returns
Device* 设备指针

◆ getDeviceType()

virtual base::DeviceType nndeploy::device::Stream::getDeviceType ( ) const
virtual

获取设备类型

Returns
base::DeviceType 设备类型

◆ getNativeStream()

virtual void* nndeploy::device::Stream::getNativeStream ( )
virtual

获取原生流对象

Returns
void* 原生流指针

◆ onExecutionContextSetup()

virtual base::Status nndeploy::device::Stream::onExecutionContextSetup ( )
virtual

执行上下文设置

Returns
base::Status 设置结果状态

◆ onExecutionContextTeardown()

virtual base::Status nndeploy::device::Stream::onExecutionContextTeardown ( )
virtual

执行上下文清理

Returns
base::Status 清理结果状态

◆ recordEvent()

virtual base::Status nndeploy::device::Stream::recordEvent ( Event event)
virtual

在流中记录事件

在当前流的执行位置记录一个事件,可用于后续的同步操作。

示例:

Stream *stream = device->createStream();
Event *event = device->createEvent();
// 执行一些操作
kernel1<<<...>>>(stream->getNativeStream());
// 在当前位置记录事件
stream->recordEvent(event);
// 继续执行其他操作
kernel2<<<...>>>(stream->getNativeStream());
Stream(Device *device)
构造函数
Parameters
event要记录的事件对象指针
Returns
base::Status 操作状态,成功返回kStatusCodeOk

◆ synchronize()

virtual base::Status nndeploy::device::Stream::synchronize ( )
virtual

同步流

Returns
base::Status 同步结果状态

◆ waitEvent()

virtual base::Status nndeploy::device::Stream::waitEvent ( Event event)
virtual

等待事件完成

让当前流等待指定事件完成后再继续执行后续操作。

示例:

Stream *stream1 = device->createStream();
Stream *stream2 = device->createStream();
Event *event = device->createEvent();
// 在stream1中执行操作并记录事件
kernel1<<<...>>>(stream1->getNativeStream());
stream1->recordEvent(event);
// stream2等待stream1中的event完成后才执行
stream2->waitEvent(event);
kernel2<<<...>>>(stream2->getNativeStream());
Parameters
event要等待的事件对象指针
Returns
base::Status 操作状态,成功返回kStatusCodeOk

Member Data Documentation

◆ device_

Device* nndeploy::device::Stream::device_
protected

关联的设备

Definition at line 505 of file device.h.

◆ is_external_

bool nndeploy::device::Stream::is_external_ = false
protected

是否为外部流

Definition at line 504 of file device.h.


The documentation for this class was generated from the following file: