@specs-feup/kadabra
Version:
A Java source-to-source compiler written in Typescript
141 lines • 6.08 kB
TypeScript
import { Class, Constructor, Field, Joinpoint, Method, Statement } from "../../Joinpoints.js";
import { Algorithm, AlgorithmWithKnob, SimpleAlgorithm } from "./Algorithm.js";
import { Measurer } from "./Measurers.js";
import { Configuration, PrimitiveRange } from "./Configs.js";
/******
* Algorithms Autotuner
*******/
/**
* Class defining the instance of an autotuner
*/
export declare class Autotuner {
name: string;
$targetField: Field | undefined;
$classContainer: Class;
autotunerClass: AutotunerClass;
autotunerType: string;
$tuner: Field;
/**
* Static variables
*/
static readonly PACKAGE = "autotuner.";
static readonly MANAGER_PACKAGE: string;
static readonly KNOB_MANAGER_PACKAGE: string;
constructor(autotunerClass: AutotunerClass, $targetField: Field | undefined, $classContainer: Class | undefined, numWarmup: number, numRuns: number);
init(numWarmup: number, numRuns: number): void;
newField($targetClass: Class, numWarmup: number, numRuns: number, modifiers?: string[]): void;
getAlgorithmType(): string;
getAlgorithm(key: string): string;
getBest(key: string): string;
updateBefore(key: string, $stmt: Statement): ($stmt: Statement, $stmtEnd: Statement) => void;
updateAfter(key: string, $stmt: Statement): ($stmt: Statement, $stmtEnd: Statement) => void;
measure(key: string, $stmt: Statement, $stmtEnd?: Statement): void;
measureWithVar(varName: string, $stmt: Statement, $stmtEnd?: Statement): void;
updateAndMeasure(key: string, $stmt: Statement, $stmtEnd: Statement): this;
inBestMode(key: string): string;
isSampling(key: string): string;
}
export declare function measurerProvider(autotuner: Autotuner, ref: string): ($stmt: Statement, $stmtEnd: Statement) => void;
export declare class AutotunerClass {
$class: Class;
builder: AutotunerBuilder;
measurer: Measurer | undefined;
constructor($class: Class, builder: AutotunerBuilder);
newInstance($targetField: Joinpoint, numWarmup: number, numRuns: number): Autotuner;
}
/**
* Class defining the builder of an autotuner
*/
export declare class AutotunerBuilder {
name: string;
datasetType: string;
algorithmType: string;
measurementType: string;
algorithms: Algorithm[];
default: SimpleAlgorithm | string | null;
package: string | undefined;
distanceMethod: string | null;
measurer: Measurer | undefined;
configuration: string | undefined;
constructor(name: string, datasetType: string, algorithmType: string, measurementType: string);
generate(packageName?: string): AutotunerClass;
/**
* Adds a simple algorithm
*/
addAlgorithm(algorithm: string | Method | SimpleAlgorithm | AlgorithmWithKnob, id?: string): this;
/**
* Adds an algorithm containing a knob
*/
addAlgorithmWithKnob(algorithm: string, id: string, configuration: Configuration): this;
addAdaptiveAlg(id: string, targetMethod: Method, templateName: string, provider: string): this;
addGenerativeAlg(id: string, $interface: Method, templateName: string, provider: string, providerType: string, extraArg: string): this;
pushAlgorithm(algorithm: Algorithm): this;
/**
* Set the algorithms sampling in a random order
*/
randomSampling(): this;
/**
* Set the algorithms sampling in the order they are defined
*/
normalSampling(): this;
/**
* Define the code that provides a new algorithm measurer (e.g. weaver.kadabra.control...measurers.AvgLongMeasurer )
*/
setMeasurer(measurer: Measurer): this;
}
export declare function GenerateTuner(tuner: AutotunerBuilder): Class;
export declare function InitCode(algProvidersCode: string): string;
export declare function ReplaceMethodCode($method: Constructor, code: string): void;
/******
* Knobs Autotuner
*******/
/**
* Class defining the builder of an autotuner
*/
export declare class ControlPointBuilder extends AutotunerBuilder {
knobs: Field | Field[];
knobType: string;
config: Configuration | undefined;
configId: string | undefined;
default: string | null;
applyKnob: string | undefined;
concurrent: boolean;
constructor(name: string, datasetType: string, knobs: Field | Field[], measurementType: string);
generate(packageName?: string): AutotunerClass;
setDefault(code: string): this;
setConcurrent(conc: boolean): this;
/**
* Adds a simple algorithm
*/
setConfig(config: Configuration, id?: string): this;
withConfig(configFunction: (knobs: Field | Field[], ranges: PrimitiveRange | PrimitiveRange[]) => Configuration, ranges: PrimitiveRange | PrimitiveRange[], id?: string): this;
around(ranges: PrimitiveRange | PrimitiveRange[], id?: string): this;
range(ranges: PrimitiveRange | PrimitiveRange[], id?: string): this;
linear(ranges: PrimitiveRange | PrimitiveRange[], id?: string): this;
random(ranges: PrimitiveRange | PrimitiveRange[], id?: string): this;
}
export declare function getKnobType(knobs: Field | Field[]): string;
export declare function GenerateKnobTuner(tuner: ControlPointBuilder): Class;
/******
* Algorithms Autotuner
*******/
/**
* Class defining the instance of an autotuner
*/
export declare class ControlPoint extends Autotuner {
autotunerClass: ControlPointClass;
constructor(autotunerClass: ControlPointClass, $classContainer: Class | undefined, numWarmup: number, numRuns: number);
getKnobType(): string;
getKnob(key: string): string;
updateBefore(key: string, $stmt: Statement): ($stmt: Statement, $stmtEnd: Statement) => void;
updateAfter(key: string, $stmt: Statement): ($stmt: Statement, $stmtEnd: Statement) => void;
}
/**
* Class defining the class of an autotuner
*/
export declare class ControlPointClass extends AutotunerClass {
builder: ControlPointBuilder;
constructor($class: Class, builder: ControlPointBuilder);
newInstance($targetClass: Joinpoint, numWarmup: number, numRuns: number): Autotuner;
}
//# sourceMappingURL=Autotuner.d.ts.map