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.cpp 第 60 行定义.
◆ ~Sequence()
| eve::gpgpu::Sequence::~Sequence | ( | ) |
在文件 Sequence.cpp 第 61 行定义.
引用了 eve::gpgpu::Sequence::Impl::v , 以及 eve::gpgpu::vulkanSequenceDestroy().
◆ Sequence() [2/2]
|
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=()
◆ 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().
◆ 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().
该类的文档由以下文件生成:
- src/modules/gpgpu/Sequence.h
- src/modules/gpgpu/Sequence.cpp