/** * WebGPU Tensor Implementation * GPU-backed tensor class for efficient numerical computations */ export type TensorDType = 'f32' | 'f16' | 'i32' | 'u32'; export interface TensorOptions { dtype?: TensorDType; label?: string; pooled?: boolean; } /** * Compute the total number of elements from shape */ export declare function shapeToSize(shape: number[]): number; /** * Compute strides for a contiguous tensor */ export declare function shapeToStrides(shape: number[]): number[]; /** * GPU Tensor class */ export declare class Tensor { readonly shape: number[]; readonly strides: number[]; readonly size: number; readonly dtype: TensorDType; readonly label: string; private buffer; private readonly pooled; private destroyed; /** * Create a tensor with the given shape and buffer */ constructor(shape: number[], buffer: GPUBuffer, options?: TensorOptions); /** * Get the number of dimensions */ get ndim(): number; /** * Get the total byte size */ get byteSize(): number; /** * Get the underlying GPU buffer */ getBuffer(): GPUBuffer; /** * Read tensor data to CPU */ toArray(): Promise; /** * Read tensor data as a nested array (for easier debugging) */ toNestedArray(): Promise; /** * Write data to tensor from CPU */ fromArray(data: Float32Array | number[]): Promise; /** * Create a view with a different shape (same underlying buffer) */ reshape(newShape: number[]): Tensor; /** * Release GPU memory */ destroy(): void; /** * Check if tensor is destroyed */ isDestroyed(): boolean; /** * Create an empty tensor with given shape */ static empty(shape: number[], options?: TensorOptions): Tensor; /** * Create a tensor from data */ static fromData(data: Float32Array | number[], shape: number[], options?: TensorOptions): Tensor; /** * Create a tensor filled with zeros */ static zeros(shape: number[], options?: TensorOptions): Tensor; /** * Create a tensor filled with ones */ static ones(shape: number[], options?: TensorOptions): Tensor; /** * Create a tensor with random values in [0, 1) */ static random(shape: number[], options?: TensorOptions): Tensor; /** * Create a tensor with values from a range */ static arange(start: number, end: number, step?: number, options?: TensorOptions): Tensor; /** * Create an identity matrix */ static eye(n: number, options?: TensorOptions): Tensor; } /** * Utility to run multiple operations and clean up intermediate tensors */ export declare function withTensors(tensors: Tensor[], fn: () => T): T; //# sourceMappingURL=tensor.d.ts.map