cleanEvaluate / cleanEvaluateSync
cleanEvaluate() evaluates one or more result evaluators while cleaning up intermediate GPUDataEvaluator dependencies that are no longer needed. GPUVectorEvaluator roots are also supported.
cleanEvaluateSync() is the synchronous counterpart for call sites that must
stay synchronous.
This is most useful when you build a lazy operation graph inline and only want to keep the final output evaluators alive.
Usage​
import {GPUDataEvaluator, add, cleanEvaluate} from '@luma.gl/graph/gpu-simple-graph';
const positions = GPUDataEvaluator.fromArray(
new Float32Array([
0, 0, 0,
1, 0, 0
]),
{size: 3}
);
const offset = GPUDataEvaluator.fromConstant([1, 2, 3]);
const translated = add(positions, offset);
await cleanEvaluate(device, {translated});
const values = await translated.readValue();
translated.destroy();
Sync usage​
import {GPUDataEvaluator, add, cleanEvaluateSync} from '@luma.gl/graph/gpu-simple-graph';
const positions = GPUDataEvaluator.fromArray(
new Float32Array([
0, 0, 0,
1, 0, 0
]),
{size: 3}
);
const offset = GPUDataEvaluator.fromConstant([1, 2, 3]);
const translated = add(positions, offset);
cleanEvaluateSync(device, {translated});
translated.destroy();
Signature​
cleanEvaluate(device, result): Promise<ResultT>​
function cleanEvaluate<
ResultT extends GPUDataEvaluator | GPUVectorEvaluator | Array<GPUDataEvaluator | GPUVectorEvaluator> | Record<string, unknown>
>(device: Device, result: ResultT): Promise<ResultT>;
cleanEvaluateSync(device, result): ResultT​
function cleanEvaluateSync<
ResultT extends GPUDataEvaluator | GPUVectorEvaluator | Array<GPUDataEvaluator | GPUVectorEvaluator> | Record<string, unknown>
>(device: Device, result: ResultT): ResultT;
Parameters​
| Parameter | Type | Description |
|---|---|---|
device | Device | The device used to evaluate the returned tables. |
result | GPUDataEvaluator | GPUVectorEvaluator | Array<GPUDataEvaluator | GPUVectorEvaluator> | Record<string, unknown> | The final evaluator or evaluators that should remain alive after evaluation. |
Behavior​
cleanEvaluate() and cleanEvaluateSync():
- finds all
GPUDataEvaluatorandGPUVectorEvaluatorinstances directly referenced byresult - evaluates those root evaluators
- walks their dependency graph through
source - destroys dependency evaluators whose GPU buffers are not also used by the root evaluators
- returns the original
resultobject
This lets you keep a compact final result shape while avoiding manual cleanup of intermediate dependency evaluators.
Remarks​
cleanEvaluate()only looks at evaluators directly contained in the provided result value. If you pass a record, non-evaluator properties are ignored.cleanEvaluateSync()evaluates the same root shapes, but throws immediately if backend lookup or dependency materialization would require async work.- Returned root evaluators are not destroyed automatically. Call
destroy()on them when you are done.