Throws if any GPU-resident operand belongs to a device other than the one
the routine was called with.
A GPUBuffer is bound to the device that created it, and WebGPU has no way
to share one across devices. Handing a routine a GpuMatrix from device A
while passing device B fails deep inside bind-group creation as a
GPUValidationError with no indication that two devices are involved —
this turns it into a named, actionable error at the call boundary.
Scalars, plain typed arrays and undefined entries are ignored, so callers
can pass their whole operand set without filtering.
Parameters
device: GPUDevice
the device the routine will dispatch on
routine: string
routine name, for the error message
operands: Record<string,unknown>
operand name -> value
Returns void
Throws
if an operand is GPU-resident on a different device
Throws if any GPU-resident operand belongs to a device other than the one the routine was called with.
A
GPUBufferis bound to the device that created it, and WebGPU has no way to share one across devices. Handing a routine aGpuMatrixfrom device A while passing device B fails deep inside bind-group creation as aGPUValidationErrorwith no indication that two devices are involved — this turns it into a named, actionable error at the call boundary.Scalars, plain typed arrays and
undefinedentries are ignored, so callers can pass their whole operand set without filtering.