UNPKG

@specs-feup/kadabra

Version:

A Java source-to-source compiler written in Typescript

141 lines 6.08 kB
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