载入中...
搜索中...
未找到
eve::gpgpu::Sequence类 参考

EVENGINE_API_WORLD public API. 更多...

#include <Sequence.h>

类

struct  Impl
 

Public 成员函数

 Sequence ()
 Sequence.
 
 ~Sequence ()
 Sequence.
 
 Sequence (const Sequence &)=delete
 
Sequence & operator= (const Sequence &)=delete
 
bool isAvailable () const
 True when available.
 
void begin ()
 Begins begin.
 
void recordUpload (GpuBuffer *dst, const void *src, uint64_t nbytes, uint64_t dstOffset=0)
 Record upload.
 
void recordDownload (GpuBuffer *src, GpuBuffer *staging, uint64_t nbytes, uint64_t srcOffset=0)
 Record download.
 
void recordDispatch (ComputeShader *shader, int groupsX, int groupsY=1, int groupsZ=1)
 Record dispatch.
 
void submit ()
 Submit.
 
SequenceStatus submitAsync ()
 Submit without waiting for GPU completion. @lifetime Buffers and shaders referenced by recorded work must remain alive until poll() or wait() returns Complete/Failed. begin() rejects pending work.
 
SequenceStatus poll ()
 Non-blocking completion query; also retires completed backend resources.
 
SequenceStatus wait ()
 Wait for pending work and retire its backend resources.
 
SequenceStatus getStatus () const
 Current lifecycle state without driving backend event processing.
 
std::string getStatusName () const
 Stable script/debug name for getStatus().
 

详细描述

EVENGINE_API_WORLD public API.

Kompute-style GPU command sequence.

Records storage-buffer transfers and compute dispatches into a single command buffer, then submits everything once. This turns an inference graph (placeholder uploads -> N fused kernel dispatches -> output download) from N+2 separate record/submit/wait round trips into one GPU submission.

Typical usage:

seq->begin();
seq->recordUpload(inputBuffer, inputData, nbytes);
seq->recordDispatch(shaderA, groupsA);   // shader bindings/push
seq->recordDispatch(shaderB, groupsB);   // constants already set
seq->recordDownload(outputBuffer, staging, nbytes);
seq->submit();                            // one submit, waits once
// or submitAsync() + poll()/wait() to overlap unrelated CPU work
staging->downloadBytes(dst, nbytes);      // host-visible memcpy

A Sequence is reusable after synchronous submit(), or after an asynchronous submission reaches Complete/Failed. Shaders keep their bindings between records; pending work retains no C++ owners, so callers must keep referenced shaders and buffers alive until completion.

在文件 Sequence.h 第 41 行定义.

构造及析构函数说明

◆ Sequence() [1/2]

eve::gpgpu::Sequence::Sequence ( )

Sequence.

在文件 Sequence.cpp 第 60 行定义.

◆ ~Sequence()

eve::gpgpu::Sequence::~Sequence ( )

◆ Sequence() [2/2]

eve::gpgpu::Sequence::Sequence ( const Sequence &  )
delete

成员函数说明

◆ begin()

void eve::gpgpu::Sequence::begin ( )

Begins begin.

Start recording. Safe to call again after submit() to reuse.

在文件 Sequence.cpp 第 75 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceBegin().

被这些函数引用 eve::tensor::GpuProgram::run().

◆ getStatus()

SequenceStatus eve::gpgpu::Sequence::getStatus ( ) const

Current lifecycle state without driving backend event processing.

在文件 Sequence.cpp 第 97 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceStatus().

被这些函数引用 getStatusName().

◆ getStatusName()

std::string eve::gpgpu::Sequence::getStatusName ( ) const

Stable script/debug name for getStatus().

在文件 Sequence.cpp 第 105 行定义.

引用了 eve::gpgpu::Complete, eve::gpgpu::Failed, getStatus(), eve::gpgpu::Idle, eve::gpgpu::Recording , 以及 eve::gpgpu::Submitted.

◆ isAvailable()

bool eve::gpgpu::Sequence::isAvailable ( ) const

True when available.

True when the active Vulkan or WebGPU backend supports command recording.

在文件 Sequence.cpp 第 66 行定义.

引用了 eve::gpgpu::VulkanSequence::ensureReady(), eve::gpgpu::VulkanSequence::ready() , 以及 eve::gpgpu::Sequence::Impl::v.

被这些函数引用 eve::physics::ClothGPU::ClothGPU().

◆ operator=()

Sequence & eve::gpgpu::Sequence::operator= ( const Sequence &  )
delete

◆ poll()

SequenceStatus eve::gpgpu::Sequence::poll ( )

Non-blocking completion query; also retires completed backend resources.

在文件 Sequence.cpp 第 95 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequencePoll().

◆ recordDispatch()

void eve::gpgpu::Sequence::recordDispatch ( ComputeShader *  shader,
int  groupsX,
int  groupsY = 1,
int  groupsZ = 1 
)

Record dispatch.

Record a compute dispatch using the shader's current bindings/push constants.

在文件 Sequence.cpp 第 87 行定义.

引用了 shader, eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceRecordDispatch().

被这些函数引用 eve::tensor::GpuProgram::Impl::recordGroup().

◆ recordDownload()

void eve::gpgpu::Sequence::recordDownload ( GpuBuffer *  src,
GpuBuffer *  staging,
uint64_t  nbytes,
uint64_t  srcOffset = 0 
)

Record download.

Record a device->host copy into staging (a "staging" usage buffer). Read the staging buffer after submit().

在文件 Sequence.cpp 第 82 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceRecordDownload().

被这些函数引用 eve::tensor::GpuProgram::run().

◆ recordUpload()

void eve::gpgpu::Sequence::recordUpload ( GpuBuffer *  dst,
const void *  src,
uint64_t  nbytes,
uint64_t  dstOffset = 0 
)

Record upload.

Record a host->device copy. src is memcpy'd into an internal host-visible staging buffer immediately, so it only needs to stay valid until this call returns.

在文件 Sequence.cpp 第 77 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceRecordUpload().

被这些函数引用 eve::tensor::GpuProgram::run().

◆ submit()

void eve::gpgpu::Sequence::submit ( )

Submit.

End recording, submit the whole sequence once, and wait for completion.

在文件 Sequence.cpp 第 92 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceSubmit().

被这些函数引用 eve::tensor::GpuProgram::run().

◆ submitAsync()

SequenceStatus eve::gpgpu::Sequence::submitAsync ( )

Submit without waiting for GPU completion. @lifetime Buffers and shaders referenced by recorded work must remain alive until poll() or wait() returns Complete/Failed. begin() rejects pending work.

在文件 Sequence.cpp 第 94 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceSubmitAsync().

◆ wait()

SequenceStatus eve::gpgpu::Sequence::wait ( )

Wait for pending work and retire its backend resources.

在文件 Sequence.cpp 第 96 行定义.

引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceWait().


该类的文档由以下文件生成: