# US 2025/0156986 A1 · Multistage collector for outputs in multiprocessor systems

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

- Number: US 2025/0156986 A1
- Document ID: US20250156986A1
- Status: Published application
- Kind: A1
- Application number: 19/019,886
- Filed: 2025-01-14
- Published: 2025-05-15
- Earliest claimed: 2011-09-16
- Assignees: Imagination Technologies Limited
- Applicants: Imagination Technologies Limited
- Inventors: James Alexander McCombe; Steven John Clohset; Jason Rupert Redgrave; Luke Tilman Peterson
- Web page: https://patentgrep.com/patent/US20250156986A1

## CPC

- G06T 1/60: Memory management
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 15/06: Ray-tracing
- G06T 2210/52: Parallel processing
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Aspects include a multistage collector to receive outputs from plural processing elements. Processing elements may comprise (each or collectively) a plurality of clusters, with one or more ALUs that may perform SIMD operations on a data vector and produce outputs according to the instruction stream being used to configure the ALU(s). The multistage collector includes substituent components each with at least one input queue, a memory, a packing unit, and an output queue; these components can be sized to process groups of input elements of a given size, and can have multiple input queues and a single output queue. Some components couple to receive outputs from the ALUs and others receive outputs from other components. Ultimately, the multistage collector can output groupings of input elements. Each grouping of elements (e.g., at input queues, or stored in the memories of component) can be formed based on matching of index elements.

## Claims

### Claim 1

A method of ray tracing in a system having a plurality of computation units, comprising:
determining respective pairings of ray tracing data elements and code modules to be executed subsequently in the system;
collecting ray tracing data elements of the pairings that reference the same code module by grouping the ray tracing data elements referencing the same code module into a group, the group maintaining an association with the code module; and
submitting to the system, the group of ray tracing data elements for use during execution of the code module by one or more of said computation units.

### Claim 2 (depends on 1)

The method of claim 1, wherein maintaining the association between the group and the code module comprises including an instruction pointer identifying a start of instructions to be executed for the ray tracing data elements of that group.

### Claim 3 (depends on 1)

The method of claim 1, wherein the grouping is performed in a plurality of steps.

### Claim 4 (depends on 3)

The method of claim 3, wherein the plurality of steps gather the data elements into progressively larger collections to form the group.

### Claim 5 (depends on 1)

The method of claim 1, wherein the ray tracing data elements identify a shape, and identifiers for rays to be tested for intersection with the shape;
wherein the shape is mapped to a location in a memory storing information for the shape.

### Claim 6 (depends on 5)

The method of claim 5, wherein the ray tracing data elements identifying a shape comprise bounding volume shape data and primitive shape data.

### Claim 7 (depends on 1)

The method of claim 1, wherein each description of a code module to be executed comprises a reference to a memory location.

### Claim 8 (depends on 1)

The method of claim 1, wherein the system is a distributed multiprocessor system.

### Claim 9 (depends on 8)

The method of claim 8, wherein the method further comprises:
executing a plurality of programs in the plurality of computation units; and
outputting the pairings from a plurality of ports of said computation units.

### Claim 10 (depends on 1)

The method of claim 1, further comprising terminating the collecting of ray tracing data elements for the group before submitting the group for use during execution of the code module.

### Claim 11

A non-transitory computer readable medium having stored thereon computer executable instructions that when executed cause a multiprocessor system having a plurality of computation units to:
determine respective pairings of ray tracing data elements and code modules to be executed subsequently in said system;
collect ray tracing data elements of the pairings that reference the same code module and group the ray tracing data elements referencing the same code module into a group, the group maintaining an association with the code module; and
submit to the system, the group of ray tracing data elements for use during execution of the code module by one or more of said computation units.

### Claim 12 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein maintaining the association between the group and the code module comprises including an instruction pointer identifying a start of instructions to be executed for the ray tracing data elements of that group.

### Claim 13 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein the group is formed in a plurality of steps.

### Claim 14 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the plurality of steps gather the data elements into progressively larger collections to form the group.

### Claim 15 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein the ray tracing data elements identify a shape, and identifiers for rays to be tested for intersection with the shape;
wherein the shape is mapped to a location in a memory storing information for the shape.

### Claim 16 (depends on 15)

The non-transitory computer readable medium of claim 15, wherein the ray tracing data elements identifying a shape comprise bounding volume shape data and primitive shape data.

### Claim 17 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein each description of a code module to be executed comprises a reference to a memory location.

### Claim 18 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein the one or more processors are further configured to:
execute a plurality of programs in the plurality of computation units; and
output the pairings from a plurality of ports of said computation units.

### Claim 19 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein one or more processors are further configured to terminate the collecting of ray tracing data elements for the group before submitting the group for use during execution of the code module.

### Claim 20

A ray tracing system comprising:
a plurality of computation units configured to determine respective pairings of ray tracing data elements and code modules to be executed subsequently in said system; and
collection management logic configured to manage collecting ray tracing data elements of the pairings that reference the same code module and grouping the ray tracing data elements referencing the same code module into a group, the group maintaining an association with the code module;
wherein the plurality of computation units are further configured to receive the group of ray tracing data elements for use during execution of the code module by one or more of said computation units.
