Skip to documentation
SLOP

tiny.accy.kernel.library.catalog

Reference tiny.accy kernel library catalog

Defined in kernel.library.

API (153)

Actions

Public operations.

Types and contracts

Public types and contracts.

Values and defaults

Public values and defaults.

No direct callersNo direct callskernel.librarycatalog
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/accy/src/choir/activation.zig:3

zig
pub const Kind = enum {    gelu,    relu,    silu,    pub fn fromName(name: []const u8) ?Kind {        inline for (            @typeInfo(Kind).@"enum".field_names,            @typeInfo(Kind).@"enum".field_values,        ) |field_name, field_name_value| {            const field = .{ .name = field_name, .value = field_name_value };            if (std.mem.eql(u8, name, field.name)) return @fromBackingInt(@intCast(field.value));        }        return null;    }};

Source: lib/accy/src/kernel/library/catalog/artifact/model.zig:6

zig
pub const OwnedKernelCallArtifactRegistry = struct {    allocator: std.mem.Allocator,    artifacts: []kernel.OwnedKernelCallArtifact = &.{},    entries: []artifact_product.KernelCallArtifact = &.{},    index: artifact_product.KernelCallRegistryIndex = .{},    pub fn registry(self: *const OwnedKernelCallArtifactRegistry) artifact_product.KernelCallRegistry {        return .{            .entries = self.entries,            .index = self.index,        };    }    pub fn deinit(self: *OwnedKernelCallArtifactRegistry) void {        artifact_product.deinitKernelCallRegistryIndex(self.allocator, self.index);        for (self.artifacts) |*artifact| artifact.deinit();        if (self.artifacts.len != 0) self.allocator.free(self.artifacts);        if (self.entries.len != 0) self.allocator.free(self.entries);        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/artifact/model.zig:28

zig
pub const OwnedKernelCallPipelinePackage = struct {    allocator: std.mem.Allocator,    artifacts: []kernel.OwnedKernelCallArtifact = &.{},    entries: []artifact_product.KernelCallArtifact = &.{},    index: artifact_product.KernelCallRegistryIndex = .{},    pipeline: artifact_product.OwnedKernelCallPipeline,    pub fn registry(self: *const OwnedKernelCallPipelinePackage) artifact_product.KernelCallRegistry {        return .{            .entries = self.entries,            .index = self.index,        };    }    pub fn deinit(self: *OwnedKernelCallPipelinePackage) void {        artifact_product.deinitKernelCallRegistryIndex(self.allocator, self.index);        for (self.artifacts) |*artifact| artifact.deinit();        if (self.artifacts.len != 0) self.allocator.free(self.artifacts);        if (self.entries.len != 0) self.allocator.free(self.entries);        self.pipeline.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/descriptor.zig:3

zig
pub const Descriptor = struct {    name: []const u8,    metadata: entry.Metadata,};

Source: lib/accy/src/kernel/library/catalog/descriptor.zig:8

zig
pub const OwnedDescriptor = struct {    descriptor: Descriptor,    specialization: ?entry.OwnedSpecialization = null,    pub fn deinit(self: *OwnedDescriptor) void {        if (self.specialization) |*specialization| specialization.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/filter.zig:13

zig
pub const FilterCandidateDescriptors = struct {    count: usize = 0,    items: [8]OwnedDescriptor = undefined,    pub fn slice(self: *const FilterCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *FilterCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/gather.zig:13

zig
pub const GatherCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const GatherCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *GatherCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/histogram.zig:13

zig
pub const HistogramCandidateDescriptors = struct {    count: usize = 0,    items: [2 * geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const HistogramCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *HistogramCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/image.zig:14

zig
pub const ImageCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const ImageCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *ImageCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/linalg/matrix.zig:15

zig
pub const MatrixProductCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const MatrixProductCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *MatrixProductCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/random/candidate.zig:6

zig
pub const RandomCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const RandomCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *RandomCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/scan/prefix.zig:12

zig
pub const PrefixSumCandidateDescriptors = struct {    count: usize = 0,    items: [8]OwnedDescriptor = undefined,    pub fn slice(self: *const PrefixSumCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *PrefixSumCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/scatter/add.zig:13

zig
pub const ScatterAddCandidateDescriptors = struct {    count: usize = 0,    items: [2 * geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const ScatterAddCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *ScatterAddCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/scatter/scatter.zig:13

zig
pub const ScatterCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const ScatterCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *ScatterCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/segmented.zig:13

zig
pub const SegmentSumCandidateDescriptors = struct {    count: usize = 0,    items: [2 * geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const SegmentSumCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *SegmentSumCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/sparse/candidate.zig:8

zig
pub const SparseCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const SparseCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *SparseCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/spatial.zig:13

zig
pub const SpatialCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const SpatialCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *SpatialCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/family/stencil.zig:14

zig
pub const StencilWindowCandidateDescriptors = struct {    count: usize = 0,    items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,    pub fn slice(self: *const StencilWindowCandidateDescriptors) []const OwnedDescriptor {        return self.items[0..self.count];    }    pub fn deinit(self: *StencilWindowCandidateDescriptors) void {        for (self.items[0..self.count]) |*descriptor| descriptor.deinit();        self.* = undefined;    }};

Source: lib/accy/src/kernel/library/catalog/query.zig:38

zig
pub const ActivationQuery = struct {    dtype: choir_abi.DType,    kind: ActivationKind,    extent: u64,};

Source: lib/accy/src/kernel/library/catalog/query.zig:501

zig
pub const ArtifactRequest = struct {    target: []const u8,    version: u32 = 1,    options: entry.ArtifactOptions,};

Source: lib/accy/src/kernel/library/catalog/query.zig:50

zig
pub const AttentionQuery = struct {    dtype: choir_abi.DType,    kind: AttentionKind,    query_indices: []const u8,    key_indices: []const u8,    value_indices: []const u8,    output_indices: []const u8,    query_dims: []const i64,    key_dims: []const i64,    value_dims: []const i64,    output_dims: []const i64,    schedule: ?AttentionSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:46

zig
pub const AttentionSchedule = union(enum) {    thread_blocks: entry.Threads3D,};

Source: lib/accy/src/kernel/library/catalog/query.zig:166

zig
pub const BatchedMatrixProductQuery = struct {    dtype: choir_abi.DType,    lhs_indices: []const u8,    rhs_indices: []const u8,    output_indices: []const u8,    lhs_dims: []const i64,    rhs_dims: []const i64,    output_dims: []const i64,    schedule: ?BatchedMatrixProductSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:118

zig
pub const BatchedMatrixProductSchedule = union(enum) {    thread_blocks: entry.Threads3D,};

Source: lib/accy/src/kernel/library/catalog/query.zig:253

zig
pub const CompactionPredicateKind = enum {    nonzero,    greater_than,};

Source: lib/accy/src/kernel/library/catalog/query.zig:376

zig
pub const FactorKind = union(enum) {    batched_cholesky: struct { n: u32, batch: u64 },    batched_cholesky_solve: struct { n: u32, batch: u64 },    batched_inverse: struct { n: u32, batch: u64 },};

Source: lib/accy/src/kernel/library/catalog/query.zig:392

zig
/// A caller fills this request to get a batched Cholesky factorization, Cholesky solve or matrix/// inverse from the kernel library. The request names the element type, the operation with its/// matrix size `n` and batch count, the buffer layout, and an optional thread-block count. `layout`/// states how the matrices sit in the device buffer, row by row or interleaved across the batch./// Because the layout changes where each element is read, it is part of which kernel the request/// names, and it enters the kernel's name.pub const FactorQuery = struct {    dtype: choir_abi.DType,    kind: FactorKind,    layout: FactorTileLayout = .row_major,    schedule: ?FactorSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:382

zig
pub const FactorSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:371

zig
pub const FactorTileLayout = enum {    row_major,    interleaved,};

Source: lib/accy/src/kernel/library/catalog/query.zig:262

zig
pub const FilterQuery = struct {    dtype: choir_abi.DType,    predicate: CompactionPredicateKind = .nonzero,    extent: u64,    schedule: ?FilterSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:258

zig
pub const FilterSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:82

zig
pub const FusedLinalgEpilogue = union(enum) {    bias_activation: ActivationKind,};

Source: lib/accy/src/kernel/library/catalog/query.zig:86

zig
pub const FusedMatrixProductQuery = struct {    dtype: choir_abi.DType,    epilogue: FusedLinalgEpilogue,    lhs_indices: []const u8,    rhs_indices: []const u8,    bias_indices: []const u8,    output_indices: []const u8,    lhs_dims: []const i64,    rhs_dims: []const i64,    bias_dims: []const i64,    output_dims: []const i64,    schedule: ?MatrixProductSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:100

zig
pub const FusedMatrixVectorProductQuery = struct {    dtype: choir_abi.DType,    epilogue: FusedLinalgEpilogue,    matrix_indices: []const u8,    vector_indices: []const u8,    bias_indices: []const u8,    output_indices: []const u8,    matrix_dims: []const i64,    vector_dims: []const i64,    bias_dims: []const i64,    output_dims: []const i64,    schedule: ?MatrixVectorProductSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:64

zig
pub const FusedQuery = union(enum) {    vector: FusedVectorQuery,    matrix_product: FusedMatrixProductQuery,    matrix_vector_product: FusedMatrixVectorProductQuery,    row_normalization: FusedRowNormalizationQuery,};

Source: lib/accy/src/kernel/library/catalog/query.zig:130

zig
pub const FusedRowNormalizationKind = union(enum) {    residual: RowNormalizationKind,};

Source: lib/accy/src/kernel/library/catalog/query.zig:134

zig
pub const FusedRowNormalizationQuery = struct {    dtype: choir_abi.DType,    kind: FusedRowNormalizationKind,    rows: u64,    cols: u64,    schedule: ?RowNormalizationSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:71

zig
pub const FusedVectorKind = union(enum) {    bias_activation: ActivationKind,    gated_activation: ActivationKind,};

Source: lib/accy/src/kernel/library/catalog/query.zig:76

zig
pub const FusedVectorQuery = struct {    dtype: choir_abi.DType,    kind: FusedVectorKind,    extent: u64,};

Source: lib/accy/src/kernel/library/catalog/query.zig:244

zig
pub const GatherQuery = struct {    dtype: choir_abi.DType,    outer: u64 = 1,    axis_size: u64,    gathered: u64,    inner: u64 = 1,    schedule: ?GatherSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:240

zig
pub const GatherSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:303

zig
pub const HistogramQuery = struct {    dtype: choir_abi.DType,    bins: u64,    count: u64,    binning: HistogramBinningPolicy = .lower_inclusive_upper_exclusive,    schedule: ?HistogramSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:296

zig
pub const HistogramSchedule = union(enum) {    thread_blocks: u32,    shared_bins: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:448

zig
pub const ImageKind = union(enum) {    blur_pass: struct {        radius: u32 = 1,        axis: library.image.Axis,    },    resize_bilinear: struct {        src_width: u64,        src_height: u64,    },};

Source: lib/accy/src/kernel/library/catalog/query.zig:463

zig
pub const ImageQuery = struct {    dtype: choir_abi.DType,    kind: ImageKind,    width: u64,    height: u64,    schedule: ?ImageSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:459

zig
pub const ImageSchedule = union(enum) {    thread_blocks: entry.Threads2D,};

Source: lib/accy/src/kernel/library/catalog/query.zig:144

zig
pub const LayoutQuery = struct {    dtype: choir_abi.DType,    kind: LayoutKind,    input_indices: []const u8,    output_indices: []const u8,    input_dims: []const i64,    output_dims: []const i64,};

Source: lib/accy/src/kernel/library/catalog/query.zig:155

zig
pub const MatrixProductQuery = struct {    dtype: choir_abi.DType,    lhs_indices: []const u8,    rhs_indices: []const u8,    output_indices: []const u8,    lhs_dims: []const i64,    rhs_dims: []const i64,    output_dims: []const i64,    schedule: ?MatrixProductSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:114

zig
pub const MatrixProductSchedule = union(enum) {    thread_blocks: entry.Threads2D,};

Source: lib/accy/src/kernel/library/catalog/query.zig:177

zig
pub const MatrixVectorProductQuery = struct {    dtype: choir_abi.DType,    matrix_indices: []const u8,    vector_indices: []const u8,    output_indices: []const u8,    matrix_dims: []const i64,    vector_dims: []const i64,    output_dims: []const i64,    schedule: ?MatrixVectorProductSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:122

zig
pub const MatrixVectorProductSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:188

zig
pub const OuterProductQuery = struct {    dtype: choir_abi.DType,    lhs_indices: []const u8,    rhs_indices: []const u8,    output_indices: []const u8,    lhs_dims: []const i64,    rhs_dims: []const i64,    output_dims: []const i64,    schedule: ?OuterProductSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:126

zig
pub const OuterProductSchedule = union(enum) {    thread_blocks: entry.Threads2D,};

Source: lib/accy/src/kernel/library/catalog/query.zig:8

zig
pub const Query = union(enum) {    activation: ActivationQuery,    attention: AttentionQuery,    batched_matrix_product: BatchedMatrixProductQuery,    fused: FusedQuery,    gather: GatherQuery,    layout: LayoutQuery,    matrix_product: MatrixProductQuery,    matrix_vector_product: MatrixVectorProductQuery,    filter: FilterQuery,    outer_product: OuterProductQuery,    random: RandomQuery,    reduction: ReductionQuery,    row_normalization: RowNormalizationQuery,    row_sparse_cross_entropy: RowSparseCrossEntropyQuery,    scan: ScanQuery,    sort: SortQuery,    sparse: SparseQuery,    spatial: SpatialQuery,    image: ImageQuery,    factor: FactorQuery,    scatter: ScatterQuery,    scatter_add: ScatterAddQuery,    histogram: HistogramQuery,    segmented: SegmentedQuery,    stencil: StencilQuery,};

Source: lib/accy/src/kernel/library/catalog/query.zig:269

zig
pub const RandomAlgorithm = enum {    philox,    threefry,    squares,};

Source: lib/accy/src/kernel/library/catalog/query.zig:279

zig
pub const RandomQuery = struct {    dtype: choir_abi.DType,    algorithm: RandomAlgorithm = .philox,    count: u64,    rounds: u32 = 0,    schedule: ?RandomSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:275

zig
pub const RandomSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:201

zig
pub const ReductionOperand = struct {    indices: []const u8,    dims: []const i64,};

Source: lib/accy/src/kernel/library/catalog/query.zig:206

zig
pub const ReductionQuery = struct {    dtype: choir_abi.DType,    kind: ReductionKind,    inputs: []const ReductionOperand,    output_indices: []const u8,    output_dims: []const i64,};

Source: lib/accy/src/kernel/library/catalog/query.zig:221

zig
pub const RowNormalizationQuery = struct {    dtype: choir_abi.DType,    kind: RowNormalizationKind,    rows: u64,    cols: u64,    schedule: ?RowNormalizationSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:217

zig
pub const RowNormalizationSchedule = union(enum) {    thread_blocks: entry.Threads2D,};

Source: lib/accy/src/kernel/library/catalog/query.zig:233

zig
pub const RowSparseCrossEntropyQuery = struct {    dtype: choir_abi.DType,    rows: u64,    classes: u64,    schedule: ?RowSparseCrossEntropySchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:229

zig
pub const RowSparseCrossEntropySchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:335

zig
pub const ScanQuery = struct {    dtype: choir_abi.DType,    kind: ScanKind,    extent: u64,    schedule: ?ScanSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:331

zig
pub const ScanSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:311

zig
pub const ScatterAddQuery = struct {    dtype: choir_abi.DType,    outer: u64 = 1,    axis_size: u64,    updates: u64,    inner: u64 = 1,    schedule: ?ScatterAddSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:291

zig
pub const ScatterAddSchedule = union(enum) {    thread_blocks: u32,    shared_bins: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:320

zig
pub const ScatterQuery = struct {    dtype: choir_abi.DType,    outer: u64 = 1,    axis_size: u64,    updates: u64,    inner: u64 = 1,    schedule: ?ScatterSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:287

zig
pub const ScatterSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:478

zig
pub const SegmentedQuery = struct {    dtype: choir_abi.DType,    kind: SegmentedKind,    segments: u64,    total: u64,    schedule: ?SegmentedSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:473

zig
pub const SegmentedSchedule = union(enum) {    thread_blocks: u32,    warp_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:362

zig
/// A caller fills this request to get a sort kernel from the kernel library, the package's/// hand-written kernel families, chosen by a typed request. The request names the element type, the/// sort operation, the number of elements, and `k` for the operations that keep only the first `k`/// results. `structure` picks one way to carry out the sort, such as a radix pass or a bitonic/// block, and `schedule` picks a thread-block size. Setting `structure` or `schedule` changes how/// the sort is built and leaves the sort that is computed the same.pub const SortQuery = struct {    dtype: choir_abi.DType,    kind: SortKind,    extent: u64,    k: u64 = 0,    structure: ?SortStructure = null,    schedule: ?SortSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:344

zig
pub const SortSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:348

zig
pub const SortStructure = enum {    radix_split,    radix_digit,    bitonic_block,    top_k_block,    top_k_block_pairs,};

Source: lib/accy/src/kernel/library/catalog/query.zig:406

zig
pub const SparseKind = union(enum) {    coo_spmv: struct { rows: u64, nnz: u64, x_extent: u64 },    csr_spmv: struct { rows: u64, nnz: u64, x_extent: u64 },    csr_spmm: struct { rows: u64, columns: u64, nnz: u64, x_extent: u64 },    ell_spmv: struct { rows: u64, slots: u64, x_extent: u64 },    sell_spmv: struct { rows: u64, slice_size: u64, values_size: u64, x_extent: u64 },};

Source: lib/accy/src/kernel/library/catalog/query.zig:419

zig
pub const SparseQuery = struct {    dtype: choir_abi.DType,    kind: SparseKind,    structure: ?SparseStructure = null,    schedule: ?SparseSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:414

zig
pub const SparseSchedule = union(enum) {    thread_blocks: u32,    thread_blocks_2d: entry.Threads2D,};

Source: lib/accy/src/kernel/library/catalog/query.zig:399

zig
pub const SparseStructure = enum {    element_thread,    row_thread,    row_warp,    row_column_thread,};

Source: lib/accy/src/kernel/library/catalog/query.zig:426

zig
pub const SpatialKind = union(enum) {    grid_cells,    grid_count: struct { cells: u32 },    grid_neighbor_count: struct { cells: u32, stride: u32 },};

Source: lib/accy/src/kernel/library/catalog/query.zig:441

zig
/// A caller fills this request to get a grid kernel for points in the plane, such as assigning/// points to cells or counting neighbors. The request names the element type, the grid operation,/// the number of points, and an optional thread-block count. Each operation also carries the sizes/// fixed when the kernel is compiled, such as the cell count and, for neighbor counting, the/// stride, beside the point count, which is given at run time.pub const SpatialQuery = struct {    dtype: choir_abi.DType,    kind: SpatialKind,    count: u64,    schedule: ?SpatialSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:432

zig
pub const SpatialSchedule = union(enum) {    thread_blocks: u32,};

Source: lib/accy/src/kernel/library/catalog/query.zig:492

zig
pub const StencilQuery = struct {    dtype: choir_abi.DType,    kind: StencilKind,    rows: u64,    cols: u64,    radius: u32 = 1,    schedule: ?StencilSchedule = null,};

Source: lib/accy/src/kernel/library/catalog/query.zig:488

zig
pub const StencilSchedule = union(enum) {    thread_blocks: entry.Threads2D,};

Source: lib/accy/src/kernel/library/histogram/family/binning.zig:3

zig
pub const Policy = enum(u64) {    lower_inclusive_upper_exclusive = 0,};
Called byCallsNo direct callstest sourcelib.accy.src.choir.activationtest: activation kind parses canonica...choir.ActivationKindfromName
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/accy/src/kernel/library/catalog/artifact/owned.zig:15

zig
pub fn createOwnedKernelCallArtifact(    allocator: std.mem.Allocator,    handle: kernel.BackendHandle,    descriptor: OwnedDescriptor,    options: entry.ArtifactOptions,) !kernel.OwnedKernelCallArtifact {    return request_mod.createKernelCallArtifact(allocator, handle, .{        .target = descriptor.descriptor.metadata.target,        .version = descriptor.descriptor.metadata.version,        .options = options,    }) catch |err| switch (err) {        error.UnknownKernelLibraryEntry => try specialized.createSpecializedKernelCallArtifact(allocator, handle, descriptor, options),        else => err,    };}
Called byCallsNo direct callskernel.librarycreateOwnedKernelCallArtifactRegistrytest sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog rejects ...test sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog rejects ...test sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog rejects ...test sourcelib.accy.src.kernel.library.catalog.test.scan...test: kernel library catalog device s...+5 morekernel.librarycreateOwnedKernelCallArtifact
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/artifact/owned.zig:31

zig
pub fn createOwnedKernelCallArtifactRegistry(    allocator: std.mem.Allocator,    handle: kernel.BackendHandle,    descriptors: []const OwnedDescriptor,    options: entry.ArtifactOptions,) !OwnedKernelCallArtifactRegistry {    if (descriptors.len == 0) return .{ .allocator = allocator };    const artifacts = try allocator.alloc(kernel.OwnedKernelCallArtifact, descriptors.len);    var artifact_count: usize = 0;    errdefer {        for (artifacts[0..artifact_count]) |*artifact| artifact.deinit();        allocator.free(artifacts);    }    const entries = try allocator.alloc(artifact_product.KernelCallArtifact, descriptors.len);    errdefer allocator.free(entries);    for (descriptors, 0..) |descriptor, index| {        artifacts[index] = try createOwnedKernelCallArtifact(allocator, handle, descriptor, options);        artifact_count += 1;        entries[index] = artifacts[index].entry();    }    const index = try artifact_product.buildKernelCallRegistryIndex(allocator, entries);    errdefer artifact_product.deinitKernelCallRegistryIndex(allocator, index);    return .{        .allocator = allocator,        .artifacts = artifacts,        .entries = entries,        .index = index,    };}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog builds f...test sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog builds h...test sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog builds i...test sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog builds s...test sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog builds s...+12 morekernel.librarycreateOwnedKernelCallArtifactkernel.librarycreateOwnedKernelCallArtifactRegistry
Static calls · unresolved targets: 0 · external targets: 5.

Source: lib/accy/src/kernel/library/catalog/artifact/pipeline.zig:16

zig
pub fn createOwnedKernelCallPipelinePackage(    allocator: std.mem.Allocator,    handle: kernel.BackendHandle,    descriptor: OwnedDescriptor,    options: entry.ArtifactOptions,) !?OwnedKernelCallPipelinePackage {    const metadata = descriptor.descriptor.metadata;    return switch (metadata.category) {        .scan => try createDeviceScanPipelinePackage(allocator, handle, metadata, options),        .sort => try createRadixSortPipelinePackage(allocator, handle, metadata, options),        else => null,    };}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.test.scan...test: kernel library catalog dispatch...test sourcelib.accy.src.kernel.library.catalog.test.sort...test: kernel library catalog selects ...test sourcelib.accy.src.kernel.library.catalog.test.sort...test: kernel library catalog selects ...private sourcelib.accy.src.kernel.library.catalog.artifact....createDeviceScanPipelinePackageprivate sourcelib.accy.src.kernel.library.catalog.artifact....createRadixSortPipelinePackagekernel.librarycreateOwnedKernelCallPipelinePackage
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/accy/src/kernel/library/catalog/artifact/request.zig:9

zig
pub fn createKernelCallArtifact(    allocator: std.mem.Allocator,    handle: kernel.BackendHandle,    request: ArtifactRequest,) !kernel.OwnedKernelCallArtifact {    inline for (registry.entries) |EntryType| {        if (EntryType.version == request.version and std.mem.eql(u8, EntryType.target, request.target)) {            return try EntryType.createKernelCallArtifact(allocator, handle, request.options);        }    }    return error.UnknownKernelLibraryEntry;}

Source: lib/accy/src/kernel/library/catalog/family/factor.zig:12

zig
pub fn selectFactor(backing_allocator: std.mem.Allocator, query: FactorQuery) !?OwnedDescriptor {    if (query.dtype != .f32) return null;    const threads = factorQueryThreads(query) orelse return null;    switch (query.kind) {        .batched_cholesky => |facts| {            const instance = factor_mod.BatchedCholesky{                .batch = facts.batch,                .n = facts.n,                .threads = threads,                .layout = factorInstanceLayout(query.layout),            };            if (!factor_mod.batchedCholeskyInstanceValid(instance)) return null;            var specialization = try factor_mod.batchedCholeskyFamilySpecialization(backing_allocator, instance);            errdefer specialization.deinit();            const lifetime_allocator = specialization.allocator();            const descriptor = Descriptor{                .name = try factor_mod.batchedCholeskyFamilyEntryName(lifetime_allocator, instance),                .metadata = .{                    .target = try factor_mod.batchedCholeskyFamilyTarget(lifetime_allocator, instance),                    .version = factor_mod.batched_cholesky_family_version,                    .layer = .logical,                    .category = .linalg,                    .specialization = specialization.value,                },            };            if (!match_mod.factorDescriptorMatches(descriptor, query)) {                specialization.deinit();                return null;            }            return .{ .descriptor = descriptor, .specialization = specialization };        },        .batched_cholesky_solve => |facts| {            const instance = factor_mod.BatchedCholeskySolve{                .batch = facts.batch,                .n = facts.n,                .threads = threads,                .layout = factorInstanceLayout(query.layout),            };            if (!factor_mod.batchedCholeskySolveInstanceValid(instance)) return null;            var specialization = try factor_mod.batchedCholeskySolveFamilySpecialization(backing_allocator, instance);            errdefer specialization.deinit();            const lifetime_allocator = specialization.allocator();            const descriptor = Descriptor{                .name = try factor_mod.batchedCholeskySolveFamilyEntryName(lifetime_allocator, instance),                .metadata = .{                    .target = try factor_mod.batchedCholeskySolveFamilyTarget(lifetime_allocator, instance),                    .version = factor_mod.batched_cholesky_solve_family_version,                    .layer = .logical,                    .category = .linalg,                    .specialization = specialization.value,                },            };            if (!match_mod.factorDescriptorMatches(descriptor, query)) {                specialization.deinit();                return null;            }            return .{ .descriptor = descriptor, .specialization = specialization };        },        .batched_inverse => |facts| {            const instance = factor_mod.BatchedInverse{                .batch = facts.batch,                .n = facts.n,                .threads = threads,                .layout = factorInstanceLayout(query.layout),            };            if (!factor_mod.batchedInverseInstanceValid(instance)) return null;            var specialization = try factor_mod.batchedInverseFamilySpecialization(backing_allocator, instance);            errdefer specialization.deinit();            const lifetime_allocator = specialization.allocator();            const descriptor = Descriptor{                .name = try factor_mod.batchedInverseFamilyEntryName(lifetime_allocator, instance),                .metadata = .{                    .target = try factor_mod.batchedInverseFamilyTarget(lifetime_allocator, instance),                    .version = factor_mod.batched_inverse_family_version,                    .layer = .logical,                    .category = .linalg,                    .specialization = specialization.value,                },            };            if (!match_mod.factorDescriptorMatches(descriptor, query)) {                specialization.deinit();                return null;            }            return .{ .descriptor = descriptor, .specialization = specialization };        },    }}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.family.fa...test: catalog factor selection covers...private sourcelib.accy.src.kernel.library.catalog.family.fa...factorInstanceLayoutprivate sourcelib.accy.src.kernel.library.catalog.family.fa...factorQueryThreadskernel.libraryselectOwnedFactor
Static calls · unresolved targets: 0 · external targets: 15.

Source: lib/accy/src/kernel/library/catalog/family/filter.zig:33

zig
pub fn selectFilterCandidates(    backing_allocator: std.mem.Allocator,    query: FilterQuery,) !FilterCandidateDescriptors {    var result = FilterCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalFilter(query)) return result;    if (query.schedule != null) {        if (try selectFilter(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const thread_candidates = compaction.filterThreadCandidatesForExtent(query.extent);    for (thread_candidates.slice()) |threads| {        const instance = compaction.Filter{            .extent = query.extent,            .dtype = query.dtype,            .predicate = filterInstancePredicate(query.predicate),            .threads = threads,        };        if (try filterDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.fi...canonicalFilterprivate sourcelib.accy.src.kernel.library.catalog.family.fi...filterDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.fi...filterInstancePredicateprivate sourcelib.accy.src.kernel.library.catalog.family.fi...selectFilterkernel.library.compactionfilterThreadCandidatesForExtentkernel.libraryselectOwnedFilterCandidates
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/family/gather.zig:33

zig
pub fn selectGatherCandidates(    backing_allocator: std.mem.Allocator,    query: GatherQuery,) !GatherCandidateDescriptors {    var result = GatherCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalGather(query)) return result;    if (query.schedule != null) {        if (try selectGather(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const total = query.outer * query.gathered * query.inner;    const thread_candidates = indexing.gatherThreadCandidatesForTotal(total);    for (thread_candidates.slice()) |threads| {        const instance = indexing.Gather{            .outer = query.outer,            .axis_size = query.axis_size,            .gathered = query.gathered,            .inner = query.inner,            .dtype = query.dtype,            .threads = threads,        };        if (try gatherDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.ga...canonicalGatherprivate sourcelib.accy.src.kernel.library.catalog.family.ga...gatherDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.ga...selectGatherkernel.library.indexinggatherThreadCandidatesForTotalkernel.libraryselectOwnedGatherCandidates
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/family/histogram.zig:33

zig
pub fn selectHistogramCandidates(    backing_allocator: std.mem.Allocator,    query: HistogramQuery,) !HistogramCandidateDescriptors {    var result = HistogramCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalHistogram(query)) return result;    if (query.schedule != null) {        if (try selectHistogram(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const thread_candidates = histogram_mod.histogramThreadCandidatesForCount(query.count);    const variants = [_]histogram_mod.HistogramVariant{ .direct, .shared_bins };    for (variants) |variant| {        for (thread_candidates.slice()) |threads| {            const instance = histogram_mod.Histogram{                .bins = query.bins,                .count = query.count,                .dtype = query.dtype,                .binning = query.binning,                .variant = variant,                .threads = threads,            };            if (!histogram_mod.histogramInstanceValid(instance)) continue;            if (result.count >= result.items.len) break;            if (try histogramDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {                result.items[result.count] = descriptor;                result.count += 1;            }        }    }    return result;}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.family.hi...test: catalog histogram candidates en...private sourcelib.accy.src.kernel.library.catalog.family.hi...canonicalHistogramprivate sourcelib.accy.src.kernel.library.catalog.family.hi...histogramDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.hi...selectHistogramkernel.libraryselectOwnedHistogramCandidates
Static calls · unresolved targets: 0 · external targets: 4.

Source: lib/accy/src/kernel/library/catalog/family/image.zig:34

zig
pub fn selectImageCandidates(    backing_allocator: std.mem.Allocator,    query: ImageQuery,) !ImageCandidateDescriptors {    var result = ImageCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalImage(query)) return result;    if (query.schedule != null) {        if (try selectImage(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const thread_candidates = image.imageThreadCandidatesForExtents(query.width, query.height);    for (thread_candidates.slice()) |threads| {        if (result.count >= result.items.len) break;        if (try imageDescriptorForThreads(backing_allocator, query, threads)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.imagecanonicalImageprivate sourcelib.accy.src.kernel.library.catalog.family.imageimageDescriptorForThreadsprivate sourcelib.accy.src.kernel.library.catalog.family.imageselectImagekernel.library.imageimageThreadCandidatesForExtentskernel.libraryselectOwnedImageCandidates
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/family/linalg/matrix.zig:37

zig
pub fn selectMatrixProductCandidates(    backing_allocator: std.mem.Allocator,    query: MatrixProductQuery,) !MatrixProductCandidateDescriptors {    var result = MatrixProductCandidateDescriptors{};    errdefer result.deinit();    const accumulation_dtype = linalg.matrixProductAccumulationDType(query.dtype) orelse return result;    if (!match_mod.canonicalMatrixProduct(query)) return result;    const shape = match_mod.matrixProductShape(query.lhs_dims, query.rhs_dims, query.output_dims) orelse return result;    if (query.schedule != null) {        if (try selectMatrixProduct(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const thread_candidates = linalg.matrixProductThreadCandidatesForExtents(shape.m, shape.n);    for (thread_candidates.slice()) |threads| {        const instance = linalg.MatrixProduct{            .m = shape.m,            .n = shape.n,            .k = shape.k,            .dtype = query.dtype,            .accumulation_dtype = accumulation_dtype,            .threads = threads,        };        if (try matrixProductDescriptorForInstance(backing_allocator, instance, shape, null, query.dtype)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.li...matrixProductDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.li...selectMatrixProductkernel.library.linalgmatrixProductAccumulationDTypekernel.library.linalgmatrixProductThreadCandidatesForExten...kernel.libraryselectOwnedMatrixProductCandidates
Static calls · unresolved targets: 0 · external targets: 4.

Source: lib/accy/src/kernel/library/catalog/family/random/root.zig:27

zig
pub fn selectRandomCandidates(    backing_allocator: std.mem.Allocator,    query: RandomQuery,) !RandomCandidateDescriptors {    var result = RandomCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalRandom(query)) return result;    if (query.schedule != null) {        if (try selectRandom(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    switch (query.algorithm) {        .philox => try philox.appendCandidates(backing_allocator, query, &result),        .threefry => try threefry.appendCandidates(backing_allocator, query, &result),        .squares => try squares.appendCandidates(backing_allocator, query, &result),    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.ra...appendCandidatesprivate sourcelib.accy.src.kernel.library.catalog.family.ra...canonicalRandomprivate sourcelib.accy.src.kernel.library.catalog.family.ra...selectRandomprivate sourcelib.accy.src.kernel.library.catalog.family.ra...appendCandidatesprivate sourcelib.accy.src.kernel.library.catalog.family.ra...appendCandidateskernel.libraryselectOwnedRandomCandidates
Static calls · unresolved targets: 0 · external targets: 1.

Source: lib/accy/src/kernel/library/catalog/family/scan/prefix.zig:38

zig
pub fn selectPrefixSumCandidates(    backing_allocator: std.mem.Allocator,    query: ScanQuery,) !PrefixSumCandidateDescriptors {    var result = PrefixSumCandidateDescriptors{};    errdefer result.deinit();    if (query.schedule != null) {        if (try selectPrefixSum(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    if (canonicalPrefixSum(query)) {        const thread_candidates = scan.prefixSumThreadCandidatesForExtent(query.extent);        for (thread_candidates.slice()) |threads| {            const instance = scan.PrefixSum{                .extent = query.extent,                .dtype = query.dtype,                .mode = scan.PrefixSumMode.fromOperation(query.kind),                .threads = threads,            };            if (try prefixSumDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {                result.items[result.count] = descriptor;                result.count += 1;            }        }        return result;    }    if (canonicalDeviceScan(query)) {        const thread_candidates = scan.deviceScanThreadCandidatesForExtent(query.extent);        for (thread_candidates.slice()) |threads| {            const instance = scan.DeviceScan{                .extent = query.extent,                .dtype = query.dtype,                .mode = scan.PrefixSumMode.fromOperation(query.kind),                .threads = threads,            };            if (try deviceScanDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {                result.items[result.count] = descriptor;                result.count += 1;            }        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.sc...canonicalDeviceScanprivate sourcelib.accy.src.kernel.library.catalog.family.sc...canonicalPrefixSumprivate sourcelib.accy.src.kernel.library.catalog.family.sc...deviceScanDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.sc...prefixSumDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.sc...selectPrefixSum+3 morekernel.libraryselectOwnedPrefixSumCandidates
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/family/scatter/add.zig:33

zig
pub fn selectScatterAddCandidates(    backing_allocator: std.mem.Allocator,    query: ScatterAddQuery,) !ScatterAddCandidateDescriptors {    var result = ScatterAddCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalScatterAdd(query)) return result;    if (query.schedule != null) {        if (try selectScatterAdd(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const query_total = scatterAddQueryTotal(query) orelse return result;    const thread_candidates = indexing.scatterAddThreadCandidatesForTotal(query_total);    const variants = [_]indexing.ScatterAddVariant{ .direct, .shared_bins };    for (variants) |variant| {        for (thread_candidates.slice()) |threads| {            const instance = indexing.ScatterAdd{                .outer = query.outer,                .axis_size = query.axis_size,                .updates = query.updates,                .inner = query.inner,                .dtype = query.dtype,                .variant = variant,                .threads = threads,            };            if (!indexing.scatterAddInstanceValid(instance)) continue;            if (result.count >= result.items.len) break;            if (try scatterAddDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {                result.items[result.count] = descriptor;                result.count += 1;            }        }    }    return result;}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.family.sc...test: catalog scatter add candidates ...test sourcelib.accy.src.kernel.library.catalog.family.sc...test: catalog scatter add family cand...private sourcelib.accy.src.kernel.library.catalog.family.sc...canonicalScatterAddprivate sourcelib.accy.src.kernel.library.catalog.family.sc...scatterAddDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.sc...scatterAddQueryTotalprivate sourcelib.accy.src.kernel.library.catalog.family.sc...selectScatterAddkernel.library.indexingscatterAddInstanceValidkernel.library.indexingscatterAddThreadCandidatesForTotalkernel.libraryselectOwnedScatterAddCandidates
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/family/scatter/scatter.zig:33

zig
pub fn selectScatterCandidates(    backing_allocator: std.mem.Allocator,    query: ScatterQuery,) !ScatterCandidateDescriptors {    var result = ScatterCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalScatter(query)) return result;    if (query.schedule != null) {        if (try selectScatter(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const total = query.outer * query.axis_size * query.inner;    const thread_candidates = indexing.scatterThreadCandidatesForTotal(total);    for (thread_candidates.slice()) |threads| {        const instance = indexing.Scatter{            .outer = query.outer,            .axis_size = query.axis_size,            .updates = query.updates,            .inner = query.inner,            .dtype = query.dtype,            .threads = threads,        };        if (try scatterDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.sc...canonicalScatterprivate sourcelib.accy.src.kernel.library.catalog.family.sc...scatterDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.sc...selectScatterkernel.library.indexingscatterThreadCandidatesForTotalkernel.libraryselectOwnedScatterCandidates
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/family/segmented.zig:33

zig
pub fn selectSegmentSumCandidates(    backing_allocator: std.mem.Allocator,    query: SegmentedQuery,) !SegmentSumCandidateDescriptors {    var result = SegmentSumCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalSegmentSum(query)) return result;    if (query.schedule != null) {        if (try selectSegmentSum(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const thread_candidates = segmented.segmentSumThreadCandidatesForSegments(query.segments);    for (thread_candidates.slice()) |threads| {        const instance = segmented.SegmentSum{            .segments = query.segments,            .total = query.total,            .dtype = query.dtype,            .threads = threads,        };        if (try segmentSumDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    const warp_extent = query.segments * segmented.segment_sum_warp_size;    const warp_candidates = segmented.segmentSumThreadCandidatesForSegments(warp_extent);    for (warp_candidates.slice()) |threads| {        if (!segmented.segmentSumGranularityValid(.warp, threads)) continue;        const instance = segmented.SegmentSum{            .segments = query.segments,            .total = query.total,            .dtype = query.dtype,            .granularity = .warp,            .threads = threads,        };        if (try segmentSumDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.se...canonicalSegmentSumprivate sourcelib.accy.src.kernel.library.catalog.family.se...segmentSumDescriptorForInstanceprivate sourcelib.accy.src.kernel.library.catalog.family.se...selectSegmentSumkernel.library.segmentedsegmentSumGranularityValidkernel.library.segmentedsegmentSumThreadCandidatesForSegmentskernel.libraryselectOwnedSegmentSumCandidates
Static calls · unresolved targets: 0 · external targets: 3.

Source: lib/accy/src/kernel/library/catalog/family/sort/radix.zig:14

zig
pub fn selectRadixSortWithTuning(    backing_allocator: std.mem.Allocator,    query: SortQuery,    reader: tuning_mod.FamilyTuningReader,) !?OwnedDescriptor {    if (query.structure != null) return selectRadixSort(backing_allocator, query);    if (query.dtype != .i32 or query.kind != .radix_ascending) return null;    const threads = sort_mod.radixSplitThreadsForExtent(query.extent) orelse return null;    var instance = sort_mod.RadixSplit{ .extent = query.extent, .threads = threads };    if (query.schedule) |requested| {        switch (requested) {            .thread_blocks => |requested_threads| instance.threads = requested_threads,        }    }    const resolved = try sort_mod.resolveRadixSplitStructure(backing_allocator, reader, instance);    var tuned = query;    tuned.structure = if (resolved) |structure| switch (structure) {        .radix_split => .radix_split,        .radix_digit => .radix_digit,    } else null;    return selectRadixSort(backing_allocator, tuned);}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.test.sort...test: kernel library catalog consults...private sourcelib.accy.src.kernel.library.catalog.family.so...selectRadixSortkernel.library.catalogselectRadixSortWithTuning
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/family/sparse/selection.zig:17

zig
pub fn selectSparse(backing_allocator: std.mem.Allocator, query: SparseQuery) !?OwnedDescriptor {    if (!structure_mod.canonicalSparse(query)) return null;    const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return null;    switch (query.kind) {        .coo_spmv => |facts| {            const structure = structure_mod.sparseResolvedCooStructure(query) orelse return null;            const coo_accumulation_dtype = sparse_mod.spmvCooAccumulationDTypeForStructure(structure, query.dtype) orelse return null;            const threads = thread_mod.sparseQueryCooThreads(query, facts.rows, facts.nnz, structure) orelse return null;            return try descriptor_build.spmvCooDescriptorForInstance(backing_allocator, query, .{                .rows = facts.rows,                .nnz = facts.nnz,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = coo_accumulation_dtype,                .threads = threads,                .structure = structure,            });        },        .csr_spmv => |facts| {            const structure = structure_mod.sparseResolvedSpmvStructure(query) orelse return null;            const threads = thread_mod.sparseQuerySpmvThreads(query, facts.rows, structure) orelse return null;            return try descriptor_build.spmvCsrDescriptorForInstance(backing_allocator, query, .{                .rows = facts.rows,                .nnz = facts.nnz,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });        },        .ell_spmv => |facts| {            const structure = structure_mod.sparseResolvedEllStructure(query) orelse return null;            const threads = thread_mod.sparseQueryEllThreads(query, facts.rows) orelse return null;            return try descriptor_build.spmvEllDescriptorForInstance(backing_allocator, query, .{                .rows = facts.rows,                .slots = facts.slots,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });        },        .sell_spmv => |facts| {            const structure = structure_mod.sparseResolvedSellStructure(query) orelse return null;            const threads = thread_mod.sparseQuerySellThreads(query, facts.rows) orelse return null;            return try descriptor_build.spmvSellDescriptorForInstance(backing_allocator, query, .{                .rows = facts.rows,                .slice_size = facts.slice_size,                .values_size = facts.values_size,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });        },        .csr_spmm => |facts| {            const structure = structure_mod.sparseResolvedSpmmStructure(query) orelse return null;            const threads = thread_mod.sparseQuerySpmmThreads(query, facts) orelse return null;            return try descriptor_build.spmmCsrDescriptorForInstance(backing_allocator, query, .{                .rows = facts.rows,                .columns = facts.columns,                .nnz = facts.nnz,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });        },    }}
Called byCallsNo direct callskernel.libraryselectOwnedSparseCandidateskernel.library.catalogselectSparseWithTuningtest sourcelib.accy.src.kernel.library.catalog.test.spar...test: catalog sparse selection resolv...kernel.libraryselectOwnedSparse
Static calls · unresolved targets: 0 · external targets: 18.

Source: lib/accy/src/kernel/library/catalog/family/sparse/selection.zig:92

zig
pub fn selectSparseCandidates(    backing_allocator: std.mem.Allocator,    query: SparseQuery,) !SparseCandidateDescriptors {    var result = SparseCandidateDescriptors{};    errdefer result.deinit();    if (!structure_mod.canonicalSparse(query)) return result;    switch (query.kind) {        .coo_spmv => {            if (query.structure != null) {                if (try selectSparse(backing_allocator, query)) |descriptor| {                    result.items[result.count] = descriptor;                    result.count += 1;                }                return result;            }            const structures = [_]query_mod.SparseStructure{ .element_thread, .row_thread };            for (structures) |structure| {                var candidate = query;                candidate.structure = structure;                if (try selectSparse(backing_allocator, candidate)) |descriptor| {                    result.items[result.count] = descriptor;                    result.count += 1;                }            }            return result;        },        .csr_spmv => {            if (query.structure != null) {                if (try selectSparse(backing_allocator, query)) |descriptor| {                    result.items[result.count] = descriptor;                    result.count += 1;                }                return result;            }            const structures = [_]query_mod.SparseStructure{ .row_thread, .row_warp };            for (structures) |structure| {                var candidate = query;                candidate.structure = structure;                if (try selectSparse(backing_allocator, candidate)) |descriptor| {                    result.items[result.count] = descriptor;                    result.count += 1;                }            }            return result;        },        .ell_spmv => |facts| {            if (query.structure != null or query.schedule != null) {                if (try selectSparse(backing_allocator, query)) |descriptor| {                    result.items[result.count] = descriptor;                    result.count += 1;                }                return result;            }            if (try selectSparse(backing_allocator, query)) |descriptor| {                result.items[result.count] = descriptor;                result.count += 1;            }            const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return result;            const structure = structure_mod.sparseResolvedEllStructure(query) orelse return result;            const thread_candidates = sparse_mod.spmvEllThreadCandidatesForRows(facts.rows);            for (thread_candidates.slice()) |threads| {                var candidate = sparse_mod.SpmvEll{                    .rows = facts.rows,                    .slots = facts.slots,                    .x_extent = facts.x_extent,                    .dtype = query.dtype,                    .accumulation_dtype = accumulation_dtype,                    .threads = threads,                    .structure = structure,                };                candidate.threads = sparse_mod.spmvEllRepresentableThreads(candidate) orelse continue;                var scheduled = query;                scheduled.schedule = .{ .thread_blocks = candidate.threads };                if (try descriptor_build.spmvEllDescriptorForInstance(backing_allocator, scheduled, candidate)) |descriptor_owned| {                    var descriptor = descriptor_owned;                    if (candidate_mod.sparseCandidateTargetsContain(result.slice(), descriptor.descriptor.metadata.target)) {                        descriptor.deinit();                        continue;                    }                    result.items[result.count] = descriptor;                    result.count += 1;                }            }            return result;        },        .sell_spmv => |facts| {            if (query.structure != null or query.schedule != null) {                if (try selectSparse(backing_allocator, query)) |descriptor| {                    result.items[result.count] = descriptor;                    result.count += 1;                }                return result;            }            if (try selectSparse(backing_allocator, query)) |descriptor| {                result.items[result.count] = descriptor;                result.count += 1;            }            const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return result;            const structure = structure_mod.sparseResolvedSellStructure(query) orelse return result;            const thread_candidates = sparse_mod.spmvSellThreadCandidatesForRows(facts.rows);            for (thread_candidates.slice()) |threads| {                var candidate = sparse_mod.SpmvSell{                    .rows = facts.rows,                    .slice_size = facts.slice_size,                    .values_size = facts.values_size,                    .x_extent = facts.x_extent,                    .dtype = query.dtype,                    .accumulation_dtype = accumulation_dtype,                    .threads = threads,                    .structure = structure,                };                candidate.threads = sparse_mod.spmvSellRepresentableThreads(candidate) orelse continue;                var scheduled = query;                scheduled.schedule = .{ .thread_blocks = candidate.threads };                if (try descriptor_build.spmvSellDescriptorForInstance(backing_allocator, scheduled, candidate)) |descriptor_owned| {                    var descriptor = descriptor_owned;                    if (candidate_mod.sparseCandidateTargetsContain(result.slice(), descriptor.descriptor.metadata.target)) {                        descriptor.deinit();                        continue;                    }                    result.items[result.count] = descriptor;                    result.count += 1;                }            }            return result;        },        .csr_spmm => |facts| {            if (query.structure != null or query.schedule != null) {                if (try selectSparse(backing_allocator, query)) |descriptor| {                    result.items[result.count] = descriptor;                    result.count += 1;                }                return result;            }            if (try selectSparse(backing_allocator, query)) |descriptor| {                result.items[result.count] = descriptor;                result.count += 1;            }            const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return result;            const structure = structure_mod.sparseResolvedSpmmStructure(query) orelse return result;            const thread_candidates = sparse_mod.spmmCsrThreadCandidatesForExtents(facts.rows, facts.columns);            for (thread_candidates.slice()) |threads| {                var candidate = sparse_mod.SpmmCsr{                    .rows = facts.rows,                    .columns = facts.columns,                    .nnz = facts.nnz,                    .x_extent = facts.x_extent,                    .dtype = query.dtype,                    .accumulation_dtype = accumulation_dtype,                    .threads = threads,                    .structure = structure,                };                candidate.threads = sparse_mod.spmmCsrRepresentableThreads(candidate) orelse continue;                var scheduled = query;                scheduled.schedule = .{ .thread_blocks_2d = candidate.threads };                if (try descriptor_build.spmmCsrDescriptorForInstance(backing_allocator, scheduled, candidate)) |descriptor_owned| {                    var descriptor = descriptor_owned;                    if (candidate_mod.sparseCandidateTargetsContain(result.slice(), descriptor.descriptor.metadata.target)) {                        descriptor.deinit();                        continue;                    }                    result.items[result.count] = descriptor;                    result.count += 1;                }            }            return result;        },    }}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.test.spar...test: catalog sparse candidates enume...kernel.libraryselectOwnedSparsekernel.libraryselectOwnedSparseCandidates
Static calls · unresolved targets: 0 · external targets: 19.

Source: lib/accy/src/kernel/library/catalog/family/sparse/selection.zig:264

zig
pub fn selectSparseWithTuning(    backing_allocator: std.mem.Allocator,    query: SparseQuery,    reader: tuning_mod.FamilyTuningReader,) !?OwnedDescriptor {    if (!structure_mod.canonicalSparse(query)) return null;    if (query.structure != null) return selectSparse(backing_allocator, query);    switch (query.kind) {        .coo_spmv => |facts| {            const structure = structure_mod.sparseResolvedCooStructure(query) orelse return null;            const accumulation_dtype = sparse_mod.spmvCooAccumulationDTypeForStructure(structure, query.dtype) orelse return null;            const threads = thread_mod.sparseQueryCooThreads(query, facts.rows, facts.nnz, structure) orelse return null;            const resolved = try sparse_mod.resolveSpmvCooStructure(backing_allocator, reader, .{                .rows = facts.rows,                .nnz = facts.nnz,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });            var tuned = query;            tuned.structure = if (resolved) |resolved_structure| switch (resolved_structure) {                .element_thread => .element_thread,                .row_thread => .row_thread,            } else return selectSparse(backing_allocator, query);            return selectSparse(backing_allocator, tuned);        },        .csr_spmv => |facts| {            const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return null;            const structure = structure_mod.sparseResolvedSpmvStructure(query) orelse return null;            const threads = thread_mod.sparseQuerySpmvThreads(query, facts.rows, structure) orelse return null;            const resolved = try sparse_mod.resolveSpmvCsrStructure(backing_allocator, reader, .{                .rows = facts.rows,                .nnz = facts.nnz,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });            var tuned = query;            tuned.structure = if (resolved) |resolved_structure| switch (resolved_structure) {                .row_thread => .row_thread,                .row_warp => .row_warp,            } else return selectSparse(backing_allocator, query);            return selectSparse(backing_allocator, tuned);        },        .ell_spmv => |facts| {            if (query.schedule != null) return selectSparse(backing_allocator, query);            const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return null;            const structure = structure_mod.sparseResolvedEllStructure(query) orelse return null;            const threads = thread_mod.sparseQueryEllThreads(query, facts.rows) orelse return null;            const resolved = try sparse_mod.resolveSpmvEllThreads(backing_allocator, reader, .{                .rows = facts.rows,                .slots = facts.slots,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });            var tuned = query;            tuned.schedule = if (resolved) |resolved_threads|                .{ .thread_blocks = resolved_threads }            else                return selectSparse(backing_allocator, query);            return selectSparse(backing_allocator, tuned);        },        .sell_spmv => |facts| {            if (query.schedule != null) return selectSparse(backing_allocator, query);            const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return null;            const structure = structure_mod.sparseResolvedSellStructure(query) orelse return null;            const threads = thread_mod.sparseQuerySellThreads(query, facts.rows) orelse return null;            const resolved = try sparse_mod.resolveSpmvSellThreads(backing_allocator, reader, .{                .rows = facts.rows,                .slice_size = facts.slice_size,                .values_size = facts.values_size,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });            var tuned = query;            tuned.schedule = if (resolved) |resolved_threads|                .{ .thread_blocks = resolved_threads }            else                return selectSparse(backing_allocator, query);            return selectSparse(backing_allocator, tuned);        },        .csr_spmm => |facts| {            if (query.schedule != null) return selectSparse(backing_allocator, query);            const accumulation_dtype = sparse_mod.sparseAccumulationDType(query.dtype) orelse return null;            const structure = structure_mod.sparseResolvedSpmmStructure(query) orelse return null;            const threads = thread_mod.sparseQuerySpmmThreads(query, facts) orelse return null;            const resolved = try sparse_mod.resolveSpmmCsrThreads(backing_allocator, reader, .{                .rows = facts.rows,                .columns = facts.columns,                .nnz = facts.nnz,                .x_extent = facts.x_extent,                .dtype = query.dtype,                .accumulation_dtype = accumulation_dtype,                .threads = threads,                .structure = structure,            });            var tuned = query;            tuned.schedule = if (resolved) |resolved_threads|                .{ .thread_blocks_2d = resolved_threads }            else                return selectSparse(backing_allocator, query);            return selectSparse(backing_allocator, tuned);        },    }}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.test.spar...test: catalog sparse selection consul...test sourcelib.accy.src.kernel.library.catalog.test.spar...test: catalog sparse selection consul...test sourcelib.accy.src.kernel.library.catalog.test.spar...test: catalog sparse selection consul...test sourcelib.accy.src.kernel.library.catalog.test.spar...test: catalog sparse selection consul...test sourcelib.accy.src.kernel.library.catalog.test.spar...test: catalog sparse selection consul...kernel.libraryselectOwnedSparsekernel.library.catalogselectSparseWithTuning
Static calls · unresolved targets: 0 · external targets: 18.

Source: lib/accy/src/kernel/library/catalog/family/spatial.zig:27

zig
pub fn selectSpatial(backing_allocator: std.mem.Allocator, query: SpatialQuery) !?OwnedDescriptor {    if (!canonicalSpatial(query)) return null;    const threads = spatialQueryThreads(query) orelse return null;    return try spatialDescriptorForThreads(backing_allocator, query, threads);}
Called byCallskernel.libraryselectOwnedSpatialCandidatestest sourcelib.accy.src.kernel.library.catalog.family.sp...test: catalog spatial selection cover...private sourcelib.accy.src.kernel.library.catalog.family.sp...canonicalSpatialprivate sourcelib.accy.src.kernel.library.catalog.family.sp...spatialDescriptorForThreadsprivate sourcelib.accy.src.kernel.library.catalog.family.sp...spatialQueryThreadskernel.libraryselectOwnedSpatial
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/accy/src/kernel/library/catalog/family/spatial.zig:33

zig
pub fn selectSpatialCandidates(    backing_allocator: std.mem.Allocator,    query: SpatialQuery,) !SpatialCandidateDescriptors {    var result = SpatialCandidateDescriptors{};    errdefer result.deinit();    if (!canonicalSpatial(query)) return result;    if (query.schedule != null) {        if (try selectSpatial(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const thread_candidates = spatial_mod.spatialThreadCandidatesForCount(query.count);    for (thread_candidates.slice()) |threads| {        if (result.count >= result.items.len) break;        if (try spatialDescriptorForThreads(backing_allocator, query, threads)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallstest sourcelib.accy.src.kernel.library.catalog.family.sp...test: catalog spatial selection cover...private sourcelib.accy.src.kernel.library.catalog.family.sp...canonicalSpatialkernel.libraryselectOwnedSpatialprivate sourcelib.accy.src.kernel.library.catalog.family.sp...spatialDescriptorForThreadskernel.libraryselectOwnedSpatialCandidates
Static calls · unresolved targets: 0 · external targets: 3.

Source: lib/accy/src/kernel/library/catalog/family/stencil.zig:35

zig
pub fn selectStencilWindowCandidates(    backing_allocator: std.mem.Allocator,    query: StencilQuery,) !StencilWindowCandidateDescriptors {    var result = StencilWindowCandidateDescriptors{};    errdefer result.deinit();    const accumulation_dtype = stencil.windowAccumulationDType(query.dtype) orelse return result;    if (!canonicalStencilWindow(query)) return result;    if (query.schedule != null) {        if (try selectStencilWindow(backing_allocator, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }        return result;    }    const thread_candidates = stencil.windowThreadCandidatesForExtents(query.rows, query.cols);    for (thread_candidates.slice()) |threads| {        const instance = stencil.Window{            .rows = query.rows,            .cols = query.cols,            .radius = query.radius,            .dtype = query.dtype,            .accumulation_dtype = accumulation_dtype,            .threads = threads,        };        if (try stencilWindowDescriptorForInstance(backing_allocator, instance, query)) |descriptor| {            result.items[result.count] = descriptor;            result.count += 1;        }    }    return result;}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.family.st...canonicalStencilWindowprivate sourcelib.accy.src.kernel.library.catalog.family.st...selectStencilWindowprivate sourcelib.accy.src.kernel.library.catalog.family.st...stencilWindowDescriptorForInstancekernel.library.stencilwindowAccumulationDTypekernel.library.stencilwindowThreadCandidatesForExtentskernel.libraryselectOwnedStencilWindowCandidates
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/accy/src/kernel/library/catalog/registry.zig:63

zig
pub const descriptors = buildDescriptors(entries);

Source: lib/accy/src/kernel/library/catalog/registry.zig:20

zig
pub const entries = .{    attention.ScaledDotProductAttention2x2x3x2x2F32,    elementwise.VectorAdd8F32,    elementwise.Axpy8F32,    elementwise.Gelu8F32,    elementwise.Relu8F32,    elementwise.Silu8F32,    elementwise.AuthoredScale8F32,    fused.BiasGelu8F32,    fused.BiasRelu8F32,    fused.BiasSilu8F32,    fused.GeGlu8F32,    fused.ReGlu8F32,    fused.SwiGlu8F32,    fused.MatrixProductBiasGelu2x3x4F32,    fused.MatrixProductBiasGelu2x3x4ThreadBlocks1x2F32,    fused.MatrixProductBiasRelu2x3x4F32,    fused.MatrixProductBiasSilu2x3x4F32,    fused.MatrixVectorProductBiasGelu4x8F32,    fused.MatrixVectorProductBiasRelu4x8F32,    fused.MatrixVectorProductBiasSilu4x8F32,    normalization.RowResidualRmsNorm2x4F32,    layout.Transpose8x16F32,    reduction.Sum8F32,    reduction.Dot8F32,    normalization.RowSoftmax2x4F32,    normalization.RowSoftmax2x4ThreadBlocks2x2F32,    normalization.RowLogSoftmax2x4F32,    normalization.RowRmsNorm2x4F32,    normalization.RowLayerNorm2x4F32,    normalization.RowAffineLayerNorm2x4F32,    linalg.MatrixProduct4x16x8F32,    linalg.MatrixProduct4x16x8ThreadBlocks4x2F32,    stencil.Window2x3R1F32,    indexing.Gather8F32,    indexing.Scatter8F32,    compaction.Filter8F32,    random.Philox8F32,    random.Threefry8F32,    segmented.SegmentSum4F32,    scan.PrefixSum8F32,};

Source: lib/accy/src/kernel/library/catalog/registry.zig:80

zig
pub fn findEntry(target: []const u8, version: u32) ?Descriptor {    for (descriptors) |descriptor| {        if (descriptor.metadata.version != version) continue;        if (!std.mem.eql(u8, descriptor.metadata.target, target)) continue;        return descriptor;    }    return null;}
Called byCallsNo direct callstest sourcelib.accy.src.kernel.library.catalog.test.arti...test: kernel library catalog builds s...test sourcelib.accy.src.kernel.library.catalog.test.regi...test: kernel library catalog exposes ...kernel.libraryfindEntry
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/accy/src/kernel/library/catalog/select/root.zig:13

zig
pub fn select(query: Query) ?Descriptor {    return static.select(query);}

Source: lib/accy/src/kernel/library/catalog/select/root.zig:17

zig
pub fn selectOwned(backing_allocator: std.mem.Allocator, query: Query) !?OwnedDescriptor {    return owned.selectOwned(backing_allocator, query);}
Called byCallsNo direct callersprivate sourcelib.accy.src.kernel.library.catalog.select.ownedselectOwnedkernel.libraryselectOwned
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/accy/src/kernel/library/catalog/root.zig

zig
const artifact_mod = @import("artifact/root.zig");const descriptor_mod = @import("descriptor.zig");const query_mod = @import("query.zig");const registry_mod = @import("registry.zig");const family_mod = @import("family/root.zig");const select_mod = @import("select/root.zig");pub const Descriptor = descriptor_mod.Descriptor;pub const OwnedDescriptor = descriptor_mod.OwnedDescriptor;pub const OwnedKernelCallArtifactRegistry = artifact_mod.OwnedKernelCallArtifactRegistry;pub const OwnedKernelCallPipelinePackage = artifact_mod.OwnedKernelCallPipelinePackage;pub const Query = query_mod.Query;pub const ActivationKind = query_mod.ActivationKind;pub const ActivationQuery = query_mod.ActivationQuery;pub const AttentionKind = query_mod.AttentionKind;pub const AttentionSchedule = query_mod.AttentionSchedule;pub const AttentionQuery = query_mod.AttentionQuery;pub const FusedQuery = query_mod.FusedQuery;pub const FusedVectorKind = query_mod.FusedVectorKind;pub const FusedVectorQuery = query_mod.FusedVectorQuery;pub const FusedLinalgEpilogue = query_mod.FusedLinalgEpilogue;pub const FusedMatrixProductQuery = query_mod.FusedMatrixProductQuery;pub const FusedMatrixVectorProductQuery = query_mod.FusedMatrixVectorProductQuery;pub const MatrixProductSchedule = query_mod.MatrixProductSchedule;pub const BatchedMatrixProductSchedule = query_mod.BatchedMatrixProductSchedule;pub const MatrixVectorProductSchedule = query_mod.MatrixVectorProductSchedule;pub const OuterProductSchedule = query_mod.OuterProductSchedule;pub const FusedRowNormalizationKind = query_mod.FusedRowNormalizationKind;pub const FusedRowNormalizationQuery = query_mod.FusedRowNormalizationQuery;pub const LayoutKind = query_mod.LayoutKind;pub const LayoutQuery = query_mod.LayoutQuery;pub const TransposeQuery = query_mod.TransposeQuery;pub const MatrixProductQuery = query_mod.MatrixProductQuery;pub const MatrixProductCandidateDescriptors = family_mod.MatrixProductCandidateDescriptors;pub const BatchedMatrixProductQuery = query_mod.BatchedMatrixProductQuery;pub const MatrixVectorProductQuery = query_mod.MatrixVectorProductQuery;pub const OuterProductQuery = query_mod.OuterProductQuery;pub const ReductionKind = query_mod.ReductionKind;pub const ReductionOperand = query_mod.ReductionOperand;pub const ReductionQuery = query_mod.ReductionQuery;pub const RowNormalizationParameterization = query_mod.RowNormalizationParameterization;pub const RowNormalizationKind = query_mod.RowNormalizationKind;pub const RowNormalizationSchedule = query_mod.RowNormalizationSchedule;pub const RowNormalizationQuery = query_mod.RowNormalizationQuery;pub const RowSparseCrossEntropyQuery = query_mod.RowSparseCrossEntropyQuery;pub const RowSparseCrossEntropySchedule = query_mod.RowSparseCrossEntropySchedule;pub const GatherSchedule = query_mod.GatherSchedule;pub const GatherQuery = query_mod.GatherQuery;pub const GatherCandidateDescriptors = family_mod.GatherCandidateDescriptors;pub const ScanKind = query_mod.ScanKind;pub const ScanSchedule = query_mod.ScanSchedule;pub const ScanQuery = query_mod.ScanQuery;pub const SortKind = query_mod.SortKind;pub const SortQuery = query_mod.SortQuery;pub const SortSchedule = query_mod.SortSchedule;pub const SortStructure = query_mod.SortStructure;pub const PrefixSumCandidateDescriptors = family_mod.PrefixSumCandidateDescriptors;pub const CompactionPredicateKind = query_mod.CompactionPredicateKind;pub const FilterSchedule = query_mod.FilterSchedule;pub const FilterQuery = query_mod.FilterQuery;pub const FilterCandidateDescriptors = family_mod.FilterCandidateDescriptors;pub const RandomAlgorithm = query_mod.RandomAlgorithm;pub const RandomSchedule = query_mod.RandomSchedule;pub const RandomQuery = query_mod.RandomQuery;pub const RandomCandidateDescriptors = family_mod.RandomCandidateDescriptors;pub const ScatterSchedule = query_mod.ScatterSchedule;pub const ScatterQuery = query_mod.ScatterQuery;pub const ScatterCandidateDescriptors = family_mod.ScatterCandidateDescriptors;pub const ScatterAddSchedule = query_mod.ScatterAddSchedule;pub const ScatterAddQuery = query_mod.ScatterAddQuery;pub const ScatterAddCandidateDescriptors = family_mod.ScatterAddCandidateDescriptors;pub const HistogramSchedule = query_mod.HistogramSchedule;pub const HistogramBinningPolicy = query_mod.HistogramBinningPolicy;pub const HistogramQuery = query_mod.HistogramQuery;pub const HistogramCandidateDescriptors = family_mod.HistogramCandidateDescriptors;pub const FactorKind = query_mod.FactorKind;pub const FactorTileLayout = query_mod.FactorTileLayout;pub const FactorSchedule = query_mod.FactorSchedule;pub const FactorQuery = query_mod.FactorQuery;pub const SparseKind = query_mod.SparseKind;pub const SparseStructure = query_mod.SparseStructure;pub const SparseSchedule = query_mod.SparseSchedule;pub const SparseQuery = query_mod.SparseQuery;pub const SparseCandidateDescriptors = family_mod.SparseCandidateDescriptors;pub const SpatialKind = query_mod.SpatialKind;pub const SpatialSchedule = query_mod.SpatialSchedule;pub const SpatialQuery = query_mod.SpatialQuery;pub const SpatialCandidateDescriptors = family_mod.SpatialCandidateDescriptors;pub const ImageKind = query_mod.ImageKind;pub const ImageSchedule = query_mod.ImageSchedule;pub const ImageQuery = query_mod.ImageQuery;pub const ImageCandidateDescriptors = family_mod.ImageCandidateDescriptors;pub const SegmentedKind = query_mod.SegmentedKind;pub const SegmentedSchedule = query_mod.SegmentedSchedule;pub const SegmentedQuery = query_mod.SegmentedQuery;pub const SegmentSumCandidateDescriptors = family_mod.SegmentSumCandidateDescriptors;pub const StencilKind = query_mod.StencilKind;pub const StencilSchedule = query_mod.StencilSchedule;pub const StencilQuery = query_mod.StencilQuery;pub const StencilWindowCandidateDescriptors = family_mod.StencilWindowCandidateDescriptors;pub const ArtifactRequest = query_mod.ArtifactRequest;pub const entries = registry_mod.entries;pub const descriptors = registry_mod.descriptors;pub const findEntry = registry_mod.findEntry;pub const createKernelCallArtifact = artifact_mod.createKernelCallArtifact;pub const createOwnedKernelCallArtifact = artifact_mod.createOwnedKernelCallArtifact;pub const createOwnedKernelCallPipelinePackage = artifact_mod.createOwnedKernelCallPipelinePackage;pub const createOwnedKernelCallArtifactRegistry = artifact_mod.createOwnedKernelCallArtifactRegistry;pub const select = select_mod.select;pub const selectOwned = select_mod.selectOwned;pub const selectOwnedMatrixProductCandidates = family_mod.selectMatrixProductCandidates;pub const selectOwnedStencilWindowCandidates = family_mod.selectStencilWindowCandidates;pub const selectOwnedGatherCandidates = family_mod.selectGatherCandidates;pub const selectOwnedScatterCandidates = family_mod.selectScatterCandidates;pub const selectOwnedScatterAddCandidates = family_mod.selectScatterAddCandidates;pub const selectOwnedHistogramCandidates = family_mod.selectHistogramCandidates;pub const selectOwnedFactor = family_mod.selectFactor;pub const selectOwnedSparse = family_mod.selectSparse;pub const selectOwnedSparseCandidates = family_mod.selectSparseCandidates;pub const selectSparseWithTuning = family_mod.selectSparseWithTuning;pub const selectOwnedSpatial = family_mod.selectSpatial;pub const selectOwnedSpatialCandidates = family_mod.selectSpatialCandidates;pub const selectOwnedImageCandidates = family_mod.selectImageCandidates;pub const selectOwnedRandomCandidates = family_mod.selectRandomCandidates;pub const selectOwnedFilterCandidates = family_mod.selectFilterCandidates;pub const selectOwnedPrefixSumCandidates = family_mod.selectPrefixSumCandidates;pub const selectRadixSortWithTuning = family_mod.selectRadixSortWithTuning;pub const selectOwnedSegmentSumCandidates = family_mod.selectSegmentSumCandidates;

Source: lib/accy/src/kernel/library/root.zig:1

zig
pub const catalog = @import("catalog/root.zig");

Complete caller list for kernel.library.createOwnedKernelCallArtifact

10 direct callers.

Complete caller list for kernel.library.createOwnedKernelCallArtifactRegistry

17 direct callers.

Complete call list for kernel.library.selectOwnedPrefixSumCandidates

8 direct calls.

Audit

Definitions144
Public names299
Members301
Version26.7.0
Revisiondaab053ee433