tiny.accy.preparation.shape
Defined in preparation.
API (13)
Actions
Public operations.
ShapeLayoutAnalysis.deinitShapeLayoutAnalysis.getShapeLayoutAnalysis.initTensorInfo.hasStaticLayoutTensorInfo.rankgetShapeLayoutAnalysisshapeLayoutPropagationPass
Types and contracts
Public types and contracts.
Values and defaults
Public values and defaults.
shape_layout_analysis_descriptorshape_layout_analysis_nameshape_layout_pass_descriptionshape_layout_pass_name
Source
Source: lib/accy/src/preparation/shape/pass.zig:38
zig
pub const ShapeLayoutAnalysis = struct { allocator: std.mem.Allocator, tensors: std.AutoHashMap(*ir.Value, TensorInfo), tensor_value_count: usize = 0, accy_op_count: usize = 0, pub fn init(allocator: std.mem.Allocator) ShapeLayoutAnalysis { return .{ .allocator = allocator, .tensors = std.AutoHashMap(*ir.Value, TensorInfo).init(allocator), }; } pub fn deinit(self: *ShapeLayoutAnalysis) void { var iter = self.tensors.valueIterator(); while (iter.next()) |info| { info.deinit(self.allocator); } self.tensors.deinit(); self.* = undefined; } pub fn get(self: *const ShapeLayoutAnalysis, value: *ir.Value) ?TensorInfo { return self.tensors.get(value); } fn recordValue(self: *ShapeLayoutAnalysis, value: *ir.Value) !void { const info = try tensorInfoFromType(self.allocator, value.type) orelse return; errdefer { var mutable = info; mutable.deinit(self.allocator); } self.tensors.putAssumeCapacityNoClobber(value, info); self.tensor_value_count += 1; }};Source: lib/accy/src/preparation/shape/pass.zig:17
zig
pub const TensorInfo = struct { dtype: choir_abi.DType, dims: []i64, element_count: ?u64, row_major_strides: ?[]u64, pub fn rank(self: TensorInfo) usize { return self.dims.len; } pub fn hasStaticLayout(self: TensorInfo) bool { return self.element_count != null and self.row_major_strides != null; } fn deinit(self: *TensorInfo, allocator: std.mem.Allocator) void { allocator.free(self.dims); if (self.row_major_strides) |strides| allocator.free(strides); self.* = undefined; }};Source: lib/accy/src/preparation/shape/pass.zig:166
zig
pub fn getShapeLayoutAnalysis( pass_ctx: *passes.PassContext, op: *ir.Operation,) !*ShapeLayoutAnalysis { return ShapeLayoutAnalysisRegistration.get(pass_ctx, op);}Source: lib/accy/src/preparation/shape/pass.zig:173
zig
pub fn shapeLayoutPropagationPass() passes.Pass { return .{ .name = shape_layout_pass_name, .description = shape_layout_pass_description, .run_fn = runShapeLayoutPropagationPass, .work_contract = .{ .identity = .{ .name = shape_layout_pass_name, .version = 1 }, .estimate = propagationWork, }, };}Source: lib/accy/src/preparation/shape/pass.zig:12
zig
pub const shape_layout_analysis_name = "accy-choir-shape-layout";Source: lib/accy/src/preparation/shape/pass.zig:14
zig
pub const shape_layout_pass_description = "Decode Accy Choir tensor shape and row-major layout facts";Source: lib/accy/src/preparation/shape/pass.zig:164
zig
pub const shape_layout_analysis_descriptor = ShapeLayoutAnalysisRegistration.descriptor;Source: lib/accy/src/preparation/root.zig:22
zig
pub const shape = @import("shape/root.zig");Source: lib/accy/src/preparation/shape/root.zig
zig
const pass = @import("pass.zig");pub const shape_layout_analysis_name = pass.shape_layout_analysis_name;pub const shape_layout_pass_name = pass.shape_layout_pass_name;pub const shape_layout_pass_description = pass.shape_layout_pass_description;pub const TensorInfo = pass.TensorInfo;pub const ShapeLayoutAnalysis = pass.ShapeLayoutAnalysis;pub const shape_layout_analysis_descriptor = pass.shape_layout_analysis_descriptor;pub const getShapeLayoutAnalysis = pass.getShapeLayoutAnalysis;pub const shapeLayoutPropagationPass = pass.shapeLayoutPropagationPass;Audit
| Definitions | 13 |
|---|---|
| Public names | 13 |
| Members | 8 |
| Version | 26.7.0 |
| Revision | daab053ee433 |