ppljs-ppl-core
Version:
ppljs network inference framework core module
386 lines (371 loc) • 11.4 kB
TypeScript
declare abstract class Buffer {
constructor(size: number, offset: number);
setSize(s: number): void;
setOffset(o: number): void;
getSize(): number;
getOffset(): number;
size_: number;
offset_: number;
}
interface OpNode {
props: OpProps;
attrs: OpAttrs;
inputs: OpEdge[];
outputs: OpEdge[];
hostDataOffset: number;
data: OpData;
}
interface OpEdge {
name: string;
tensorInfo: tensorInfo;
}
interface OpAttrs {
[key: string]: any;
}
interface OpProps {
type: string;
name: string;
}
interface OpData {
[key: string]: opDataInfo;
}
interface tensorInfo {
name: string;
shape: number[];
precision: number;
hostData?: number[] | Float32Array;
deviceData?: Buffer;
}
interface opDataInfo {
size: number;
precision: number;
hostData?: number[] | Float32Array;
deviceData?: Buffer;
}
interface Model {
ops: OpNode[];
}
interface ModelConfig {
modelPath: string;
modelName?: string;
binaryDataName?: string;
}
declare enum backend {
Backend_WebGPU = 0
}
interface backend_config {
backend_: backend;
precision_: number;
modelData_: Model;
debug?: boolean;
}
type _interface_OpNode = OpNode;
type _interface_OpEdge = OpEdge;
type _interface_OpAttrs = OpAttrs;
type _interface_OpProps = OpProps;
type _interface_OpData = OpData;
type _interface_tensorInfo = tensorInfo;
type _interface_opDataInfo = opDataInfo;
type _interface_Model = Model;
type _interface_ModelConfig = ModelConfig;
type _interface_backend = backend;
declare const _interface_backend: typeof backend;
type _interface_backend_config = backend_config;
declare namespace _interface {
export {
_interface_OpNode as OpNode,
_interface_OpEdge as OpEdge,
_interface_OpAttrs as OpAttrs,
_interface_OpProps as OpProps,
_interface_OpData as OpData,
_interface_tensorInfo as tensorInfo,
_interface_opDataInfo as opDataInfo,
_interface_Model as Model,
_interface_ModelConfig as ModelConfig,
_interface_backend as backend,
_interface_backend_config as backend_config,
};
}
declare class Executer {
protected modeConfig_: backend_config;
ret: number;
constructor(config: backend_config);
prepare(): Promise<any>;
forward(ifGetOutput?: boolean): any | Promise<ArrayBuffer[]>;
release(): void;
setInputByArrayBuffer(data: ArrayBuffer[]): number;
setInputByArray(data: any[] | Array<any>): number;
setInputByPath(firstName: string, ...restName: string[]): number;
getArrayBufferOutput(): Promise<ArrayBuffer[]>;
getInputShapeByIndex(idx: number): any;
getOutputShapeByIndex(idx: number): any;
getInputCount(): number;
getOutputCount(): number;
finishWork(): Promise<undefined[]>;
}
declare function get_row(): number;
declare function numToString(data: number[]): string;
declare function ppl_res_check(res: number, info: string): void;
declare function ppl_debug(ifDebug: boolean, ...optionalParams: any[]): void;
declare function check_if_undefined(obj: any, info: string): number;
declare function ppl_diff(src: ArrayBuffer, dst: ArrayBuffer, shape: number[]): boolean;
declare const log_get_row: typeof get_row;
declare const log_numToString: typeof numToString;
declare const log_ppl_res_check: typeof ppl_res_check;
declare const log_ppl_debug: typeof ppl_debug;
declare const log_check_if_undefined: typeof check_if_undefined;
declare const log_ppl_diff: typeof ppl_diff;
declare namespace log {
export {
log_get_row as get_row,
log_numToString as numToString,
log_ppl_res_check as ppl_res_check,
log_ppl_debug as ppl_debug,
log_check_if_undefined as check_if_undefined,
log_ppl_diff as ppl_diff,
};
}
declare function registerBackend(backend: string, backendInstance: any): void;
declare abstract class Tensor {
private tensorInfo_;
private producerCount_;
private consumerCount_;
constructor(t: tensorInfo);
dimCount(): number;
dim(index: number): number;
shape(): number[];
byteLength(): number;
abstract mallocTensorBuffer(): number;
abstract releaseTensorBuffer(): number;
abstract data(): any;
precision(): number;
get name(): string;
set name(name_: string);
get buffer(): Buffer;
set buffer(buffer_: Buffer);
getname(): string;
setname(name_: string): void;
getbuffer(): Buffer;
setbuffer(buffer_: Buffer): void;
producerCount(): number;
consumerCount(): number;
incProducerCount(): void;
incConsumerCount(): void;
}
declare abstract class Kernel {
protected name_: string;
protected type_: string;
data_: OpData;
protected param_: OpAttrs;
protected inTensors_: Tensor[];
protected outTensors_: Tensor[];
protected tmpTensor_: Tensor;
protected inShape_: number[][];
protected outShape_: number[][];
constructor(opNode: OpNode);
abstract releaseKernelResource(): number;
abstract initKernelParam(): number;
abstract forward(): number;
abstract tempBufferSize(): number;
setTmpTensor(data: Tensor): number;
set name(name: string);
set kernelType(kernelType: string);
get name(): string;
get kernelType(): string;
addInTensor(t: Tensor): number;
addInShape(t: number[]): number;
addOutTensor(t: Tensor): number;
addOutShape(t: number[]): number;
getInTensorCount(): number;
getOutTensorCount(): number;
getInTensor(index: number): Tensor;
getInShape(index: number): number[];
getOutTensor(index: number): Tensor;
getOutShape(index: number): number[];
}
declare abstract class Graph {
protected totalOpNode_: OpNode[];
protected totalKernel_: Kernel[];
protected inputTensor_: Tensor[];
protected outputTensor_: Tensor[];
protected tmpBufferTensor_: Tensor;
protected inputData: ArrayBuffer[];
protected ifDebug: boolean;
protected inputChanged_: boolean;
constructor(model: Model);
abstract buildGraph(): number;
abstract prepareGraph(): number;
abstract runGraph(): number;
abstract finish(): Promise<undefined[]>;
abstract getArrayBufferOutput(): Promise<ArrayBuffer[]>;
setIfDebug(ifDebug: boolean): void;
getIfDebug(): boolean;
abstract createTensor(info: tensorInfo, isInput: boolean, isOutput: boolean): any;
assignTensorToKernel(): number;
assignMemoryToTensor(): number;
setInputFromArrayBuffer(inData: ArrayBuffer[]): number;
getInputTensorCount(): number;
getInputTensor(i: number): Tensor;
getOutputTensorCount(): number;
getOutputTensor(i: number): Tensor;
getKernelCount(): number;
getKernel(i: number): Kernel;
getInputTensorShape(idx: number): any;
getOutputTensorShape(idx: number): any;
releaseResources(): number;
}
declare abstract class Runtime {
protected graph_: Graph;
constructor();
abstract createGraph(config: backend_config): any;
abstract prepare(): Promise<number>;
abstract forward(ifGetOutput?: boolean): any | Promise<ArrayBuffer[]>;
abstract release(): any;
setInputByArrayBuffer(data: ArrayBuffer[]): number;
getArrayBufferOutput(): Promise<ArrayBuffer[]>;
getInputShapeByIndex(idx: number): any;
getOutputShapeByIndex(idx: number): any;
getInputCount(): number;
getOutputCount(): number;
finishWork(): Promise<undefined[]>;
}
declare class ModelLoader {
modelConfig_: ModelConfig;
isLocalPath: boolean;
constructor(modelConfig: ModelConfig);
LoadModel(): Promise<Model>;
readData(modelPath: string): Promise<unknown>;
ParseJsonModel(): Promise<Model>;
ReadModelData(): Promise<Float32Array>;
AssignData(opModel_: Model, dataArray: Float32Array): void;
}
interface BatchnormParam {
use_global: boolean;
moving_average_fraction: number;
eps: number;
}
interface ConvolutionParam {
bias_term: boolean;
dilations: number[];
kernel_shape: number[];
pads: number[];
strides: number[];
group: number;
reluFuseType: number;
}
interface ScaleParam {
axis: number;
num_axis: number;
bias: boolean;
}
interface SoftmaxParam {
axis: number;
}
interface ElewiseParam {
coeff: number[];
mode: number;
}
interface PoolingParam {
window: number[];
pads: number[];
stride: number[];
global_pooling: boolean;
pooling_mode: number;
ceil_mode: boolean;
}
interface FcParam {
num_output: number;
axis: number;
bias_term: boolean;
}
interface ChannelShuffleParam {
group: number;
}
interface SliceParam {
slice_point: number[];
axis: number;
}
interface ConcatParam {
axis: number;
concat_dim: number;
}
interface PReLUParam {
channel_shared: boolean;
}
interface SubpixelUpParam {
upsample: number;
backend: number;
}
interface SubpixelDownParam {
downsample: number;
backend: number;
}
interface TileParam {
axis: number;
tiles: number;
}
interface ReflectionPadParam {
pad_h: number;
pad_w: number;
}
interface InterpParam {
interp_width: number;
interp_height: number;
zoom_factor: number;
shrink_factor: number;
pad_beg: number;
pad_end: number;
align_corners: number;
mode: number;
backend: number;
}
interface LogParam {
base: number;
scale: number;
shift: number;
}
interface ClipParam {
max: number;
min: number;
}
type opParam_BatchnormParam = BatchnormParam;
type opParam_ConvolutionParam = ConvolutionParam;
type opParam_ScaleParam = ScaleParam;
type opParam_SoftmaxParam = SoftmaxParam;
type opParam_ElewiseParam = ElewiseParam;
type opParam_PoolingParam = PoolingParam;
type opParam_FcParam = FcParam;
type opParam_ChannelShuffleParam = ChannelShuffleParam;
type opParam_SliceParam = SliceParam;
type opParam_ConcatParam = ConcatParam;
type opParam_PReLUParam = PReLUParam;
type opParam_SubpixelUpParam = SubpixelUpParam;
type opParam_SubpixelDownParam = SubpixelDownParam;
type opParam_TileParam = TileParam;
type opParam_ReflectionPadParam = ReflectionPadParam;
type opParam_InterpParam = InterpParam;
type opParam_LogParam = LogParam;
type opParam_ClipParam = ClipParam;
declare namespace opParam {
export {
opParam_BatchnormParam as BatchnormParam,
opParam_ConvolutionParam as ConvolutionParam,
opParam_ScaleParam as ScaleParam,
opParam_SoftmaxParam as SoftmaxParam,
opParam_ElewiseParam as ElewiseParam,
opParam_PoolingParam as PoolingParam,
opParam_FcParam as FcParam,
opParam_ChannelShuffleParam as ChannelShuffleParam,
opParam_SliceParam as SliceParam,
opParam_ConcatParam as ConcatParam,
opParam_PReLUParam as PReLUParam,
opParam_SubpixelUpParam as SubpixelUpParam,
opParam_SubpixelDownParam as SubpixelDownParam,
opParam_TileParam as TileParam,
opParam_ReflectionPadParam as ReflectionPadParam,
opParam_InterpParam as InterpParam,
opParam_LogParam as LogParam,
opParam_ClipParam as ClipParam,
};
}
export { Buffer, Executer, Graph, Kernel, ModelLoader, Runtime, Tensor, _interface as interfaces, log, opParam as opParams, registerBackend };