# US 2025/0094530 A1 · Expanded kernel generation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2025/0094530 A1
- Document ID: US20250094530A1
- Status: Published application
- Kind: A1
- Application number: 18/941,814
- Filed: 2024-11-08
- Published: 2025-03-20
- Earliest claimed: 2018-11-19
- Assignees: Groq, Inc.
- Applicants: Groq, Inc.
- Inventors: Jonathan Alexander Ross; Thomas Hawkins; Gregory Michael Thorson; Matt Boyd
- Web page: https://patentgrep.com/patent/US20250094530A1

## CPC

- G06F 17/153: {Multidimensional correlation or convolution}
- G06F 7/5443: {Sum of products (for applications thereof, see the relevant places, e.g. G06F17/10, H03H17/00)}
- G06F 7/76: Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 17/16: Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)}
- G06F 18/2137: based on criteria of topology preservation, e.g. multidimensional scaling or self-organising maps
- G06N 3/045: Combinations of networks
- G06N 3/0464: Convolutional networks [CNN, ConvNet]
- G06N 3/063: using electronic means
- G06N 3/08: Learning methods
- G06N 7/00: Computing arrangements based on specific mathematical models
- G06N 20/10: using kernel methods, e.g. support vector machines [SVM]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

A method comprises receiving a kernel used to convolve with an input tensor. For a first dimension of the kernel, a square block of values for each single dimensional vector of the kernel that includes all rotations of that single dimensional vector is generated. For each additional dimension of the kernel, group blocks of an immediately preceding dimension into sets of blocks, each set of blocks including blocks of the immediately preceding dimension that are aligned along a vector that is parallel to the axis of the dimension; and generate, for the additional dimension, one or more blocks of values, each block including all rotations of blocks within each of the sets of blocks of the immediately preceding dimension. The block of values corresponding to the last dimension in the additional dimensions of the kernel is output as the expanded kernel.

## Claims

### Claim 1

A processor, comprising:
a memory circuit that stores a set of data values that correspond to an array, wherein the array comprises a kernel of weights;
a shifter circuit that receives the array as a sequence of the set of data values and produces a set of permuted sequences based on coupling data values from one or more inputs to one or more outputs in a different order, wherein respective data values of the set of data values are coupled to the shifter circuit via the one or more inputs, and wherein the set of permuted sequences correspond to an expanded kernel; and
a multiplier circuit operatively coupled to the one or more outputs of the shifter circuit and comprising first registers and second registers, the multiplier circuit loads, into the first registers, sequences produced on the one or more outputs of the shifter circuit, and loads, into the second registers, input data values, and, based on the sequences and the input data values, the multiplier circuit generates, in parallel, a plurality of convolution results.

### Claim 2 (depends on 1)

The processor of claim 1, wherein the shifter circuit comprises conductive wires that carry different data values of the set of data values, and wherein the shifter circuit produces a different permuted sequence of outputs of a plurality of outputs based on reordering the conductive wires between an input and an output.

### Claim 3 (depends on 1)

The processor claim 1, wherein the shifter circuit comprises rotators that reorder positions of data values in the sequence based on changing respective positions of conductors that carry data values of the set of data values, resulting in the set of permuted sequences.

### Claim 4 (depends on 3)

The processor of claim 3, wherein, after the reorder, respective permuted sequences of the set of permuted sequences are coupled to respective inputs of the multiplier circuit.

### Claim 5 (depends on 1)

The processor of claim 1, wherein respective data values of the set of data values comprise at least one byte of a digital data value, wherein the digital data value is an integer or a floating point number.

### Claim 6 (depends on 1)

The processor of claim 1, wherein a kernel is a three-dimensional matrix, and wherein the expanded kernel comprises a plurality of parallel vectors, each vector of the plurality of parallel vectors being a different rotational permutation of elements in the kernel, the expanded kernel being a square matrix having a size of each dimension equal to a product of values of dimensions of the kernel.

### Claim 7

A method, comprising:
receiving an array as a sequence of a set of data values, the array comprises a kernel of weights;
based on the array, producing a set of permuted sequences based on coupling data values from one or more inputs to one or more outputs in a different order, wherein the set of permuted sequences correspond to an expanded kernel; and
loading into first registers, sequences produced on the one or more outputs;
loading, into second registers, input data values; and
based on the sequences and the input data values, generating, in parallel, a plurality of convolution results.

### Claim 8 (depends on 7)

The method of claim 7, further comprising
prior to the receiving, storing the set of data values that correspond to the array.

### Claim 9 (depends on 7)

The method of claim 7, further comprising:
carrying different data values of the set of data values on respective conductive wires; and
generating different permuted sequence of outputs of a plurality of outputs based on reordering the conductive wires between an input and an output.

### Claim 10 (depends on 7)

The method of claim 7, further comprising:
reordering positions of data values in the sequence based on changing respective positions of conductors that carry data values of the set of data values, resulting in the set of permuted sequences.

### Claim 11 (depends on 10)

The method of claim 10, further comprising:
after the reorder reordering, coupling respective permuted sequences of the set of permuted sequences to respective inputs of a multiplier circuit.

### Claim 12 (depends on 7)

The method of claim 7, wherein respective data values of the set of data values comprise at least one byte of a digital data value, wherein the digital data value is an integer or a floating point number.

### Claim 13 (depends on 7)

The method of claim 7, wherein a kernel is a three-dimensional matrix, and wherein the expanded kernel comprises a plurality of parallel vectors, each vector of the plurality of parallel vectors being a different rotational permutation of elements in the kernel, the expanded kernel being a square matrix having a size of each dimension equal to a product of values of dimensions of the kernel.
