Skip to main content

Crate nxpu_opt

Crate nxpu_opt 

Source
Expand description

IR optimization passes for NxPU.

Provides a Pass trait, a PassManager with fixed-point iteration, and built-in optimization passes (constant folding, FMA fusion, dead code elimination).

Re-exports§

pub use calibrate::CalibrationDataset;
pub use calibrate::CalibrationError;
pub use calibrate::CalibrationMethod;
pub use calibrate::CalibrationResult;
pub use calibrate::HistogramCollector;
pub use calibrate::TensorHistogram;
pub use calibrate::calibrate;
pub use calibrate::calibrate_kl_divergence;
pub use calibrate::calibrate_minmax;
pub use calibrate::calibrate_percentile;
pub use calibrate::per_channel_quantize;
pub use calibrate::run_calibration;
pub use fusion::OperatorFusion;
pub use layout::LayoutTransform;
pub use layout::TransposeInsertion;
pub use layout::TransposeRecord;
pub use layout::layout_permutation;
pub use layout::reorder_dims;
pub use memory::LiveInterval;
pub use memory::MemoryPlanning;
pub use memory::plan_memory;
pub use quantize::CalibrationData;
pub use quantize::F32ToBf16;
pub use quantize::F32ToF16;
pub use quantize::F32ToInt8;
pub use quantize::MixedPrecisionPass;
pub use quantize::MixedPrecisionPolicy;
pub use quantize::PerChannelQuantParams;
pub use quantize::QuantizationParams;
pub use schedule::Schedule;
pub use schedule::SchedulePass;
pub use schedule::ScheduleSlot;
pub use schedule::compute_schedules;
pub use schedule::format_schedule;
pub use shape::ShapeInference;
pub use tiling::Conv2DShape as TilingConv2DShape;
pub use tiling::MatMulShape as TilingMatMulShape;
pub use tiling::TileConfig;
pub use tiling::TilingDefaults;
pub use tiling::TilingPass;
pub use tiling::TilingPlan;
pub use tiling::tile_conv2d;
pub use tiling::tile_matmul;
pub use vectorize::VectorWidth;
pub use vectorize::VectorizationHint;
pub use vectorize::VectorizationPass;
pub use vectorize::analyze_vectorization;
pub use workgroup::OccupancyResult;
pub use workgroup::WorkgroupHwParams;
pub use workgroup::WorkgroupOptimization;
pub use workgroup::calculate_occupancy;
pub use workgroup::optimize_workgroup_size;

Modules§

calibrate
Calibration pipeline for quantization.
fusion
Operator fusion pass.
layout
Memory layout optimization pass.
memory
Memory planning and buffer allocation pass.
quantize
Precision conversion passes for NPU quantization.
schedule
Operation scheduling pass.
shape
Shape inference pass.
tiling
Loop tiling and cache blocking.
vectorize
SIMD vectorization hints.
workgroup
Workgroup size optimization.

Structs§

BufferAllocation
A buffer allocation for a single tensor.
CommonSubexprElimination
Common subexpression elimination pass.
ConstantFolding
Folds constant expressions (literal operands) at compile time.
DeadCodeElimination
Removes unused Emit statements and unreferenced local variables from function bodies.
FmaFusion
Fuses multiply-add patterns into fma math operations.
IrValidation
Validates IR structural invariants. Returns false (never modifies the module).
MemoryPlan
The result of memory planning: buffer assignments and peak usage.
PassManager
Runs passes in sequence with fixed-point iteration.
TensorId
A unique identifier for a tensor in the memory plan.
ValidationWarning
A validation warning describing a structural issue in the IR.

Enums§

OptLevel
Optimization level.

Traits§

Pass
An optimization pass that transforms an IR module.

Functions§

collect_warnings
Collect all validation warnings for a module without logging.
optimize
Convenience function: runs O1 optimization passes on a module.