IP Library › Granted Patent US 12,572,618
Granted Patent B2
US 12,572,618 · App. 17/576,753 · Granted Mar 10, 2026

Point processor array for solving partial differential equations

Inventors: Chirath Neranjena Thouppuarachchi (Redwood City, CA); Ross Geoffrey Daly (San Francisco, CA)
Assignee: Vorticity Inc.
G06F17/13
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,572,618
App. No.
17/576,753
Granted
Mar 10, 2026
Kind
B2
Abstract

Embodiments relate to a system for solving partial differential equations. The system receives problem packages corresponding to problems to be solved, each comprising at least a partial differential equation and a domain. A solver stores a plurality of nodes of the domain corresponding to a first time-step, and processes the nodes over a plurality of time-steps using an array of point processors. Each point processor comprises a series of tiles, each having a computational element and a router, and are configured and connected based on a discretized form of the partial differential equation, to allow each point processor to receive a node of the domain and generate a value for the node for a next time step. Because all the data and computational requirements of the point processors are determined at compile time, no dynamic scheduling needs to be performed, allowing for more efficient usage of computational resources.

Claims (45)

1 . A system, comprising:

a memory configured to store a plurality of nodes of a domain corresponding to a first time-step, the nodes associated with a partial differential equation having a discretized form;

an array of configurable point processors, each point processor comprising a linear arrangement of tiles, wherein each tile comprises:

an arithmetic logic unit (ALU) configurable to perform one or more arithmetic operations on a node value received by the tile; and

a router configurable to communicate with at least one neighboring tile of the same point processor or a different point processor of the array;

a controller configured to process the domain using the array of point processors, wherein each point processor of the array of point processors receives a respective node of the domain, and processes the received node data to generate node data for a next time step of the domain.

2 . The system of claim 1 , wherein the controller is configured to configure the array of configurable point processors based upon the discretized form of the partial differential equation.

3 . The system of claim 1 , wherein the controller is configured to:

receive a point processor configuration for configuring a point processor of the array of point processors, comprising:

a set of arithmetic operations for computing the discretized form of the partial differential equation mapped to tiles of the point processor;

a set of neighbor routings for one or more tiles of the point processor generated based upon node values within the discretized form of the partial differential equation;

apply the point processor configuration to each point processor of the array of point processors to configure the tiles of each point processor in accordance with the determined set of arithmetic operations and set of neighbor routings.

4 . The system of claim 3 , wherein the controller applying the point processor configuration to a point processor of the array of point processors comprises:

mapping each of the set of arithmetic operations to a respective tile of the point processor;

mapping each of the set of neighbor routings to a respective tile of the point processor by establishing, for the respective tile, a first routing to receive a value from a tile of a first neighboring point processor, and a second routing to provide a value to a tile of a second neighboring point processor.

5 . The system of claim 3 , wherein the point processor configuration is generated by a compiler configured to:

determine an initial set of arithmetic operations, each corresponding to a respective operation of the discretized form of the partial differential equation;

identify two or more arithmetic operations performed on a common term; and

combine the two or more arithmetic operations to be performed by a same ALU of a single tile.

6 . The system of claim 1 , wherein a configuration of each point processor of the array of point processors corresponds to a computational direct acyclic graph (DAG) configured to process of the node of the domain to generate node data for a next time step based upon the discretized form of the partial differential equation.

7 . The system of claim 1 , wherein the point processors of the array of point processors are configured to process received node data in parallel.

8 . The system of claim 1 , wherein a router of a tile of a point processor of the array of configurable point processors is configured to receive an output of a first tile corresponding to an adjacent previous tile of the linear arrangement of tiles of the point processor, and an additional output of a second tile corresponding to an adjacent previous tile of the first tile in the point processor or a tile corresponding to the first tile of an adjacent point processor of the array.

9 . The system of claim 1 , wherein the router of each tile comprises one or more registers configurable to store a constant value based upon the discretized form of the partial differential equation.

10 . The system of claim 1 , wherein the plurality of nodes stored by the memory comprises a block of nodes to be processed by the point processors of the array of point processors, and a plurality of additional nodes of the domain outside a boundary of the block of nodes, the plurality of additional nodes selected based upon one or more data dependencies of a tile of a point processor of the array of point processors.

11 . The system of claim 1 , wherein the point processors of the array of point processors are configured to process a new set of nodes at a first tile of each point processor during each clock cycle over a plurality of clock cycles, and to pass processed node data through a plurality of tiles of the respective linear arrangements of tiles over a plurality of subsequent clock cycles.

12 . The system of claim 1 , wherein the linear arrangement of tiles of a point processor of the array of point processors is pipelined such that a plurality of tiles of the linear arrangement are each configured to route respective output values to another tile of the point processor P tiles away, where P>1.

13 . A method, comprising:

storing, in a memory, a plurality of nodes of a domain corresponding to a first time-step, the nodes associated with a partial differential equation having a discretized form;

configuring an array of configurable point processors based upon the partial differential equation, wherein each point processor comprises a linear arrangement of tiles, and each tile comprises:

an arithmetic logic unit (ALU) configurable to perform one or more arithmetic operations on a node value received by the tile; and

a router configurable to communicate with at least one neighboring tile of the same point processor or a different point processor of the array;

processing the domain using the array of configurable point processors, wherein each point processor of the array of point processors receives a respective node of the domain, and processes the received node data to generate node data for next time step of the domain.

14 . The method of claim 13 , wherein the array of configurable point processors is configured based upon the discretized form of the partial differential equation.

15 . The method of claim 13 , further comprising:

receiving a point processor configuration for configuring a point processor of the array of point processors, comprising:

a set of arithmetic operations for computing the discretized form of the partial differential equation mapped to tiles of the point processor;

a set of neighbor routings for one or more tiles of the point processor generated based upon node values within the discretized form of the partial differential equation;

configuring the array of configurable point processors by applying the point processor configuration to each point processor of the array of point processors to configure the tiles of each point processor in accordance with the determined set of arithmetic operations and set of neighbor routings.

16 . The method of claim 15 , wherein applying the point processor configuration to a point processor of the array of point processors comprises:

mapping each of the set of arithmetic operations to a respective tile of the point processor;

mapping each of the set of neighbor routings to a respective tile of the point processor by establishing, for the respective tile, a first routing to receive a value from a tile of a first neighboring point processor, and a second routing to provide a value to a tile of a second neighboring point processor.

17 . The method of claim 13 , wherein a configuration of each point processor of the array of point processors corresponds to a computational direct acyclic graph (DAG) configured to process of the node of the domain to generate node data for a next time step based upon the discretized form of the partial differential equation.

18 . The method of claim 13 , wherein the point processors of the array of point processors process received node data in parallel.

19 . The method of claim 13 , wherein the router of each tile comprises one or more registers configurable to store a constant value based upon the discretized form of the partial differential equation.

20 . The method of claim 13 , wherein the plurality of nodes stored by the memory comprises a block of nodes to be processed by the point processors of the array of point processors, and a plurality of additional nodes of the domain outside a boundary of the block of nodes, the plurality of additional nodes selected based upon one or more data dependencies of a tile of a point processor of the array of point processors.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2022
From: THOUPPUARACHCHI, CHIRATH NERANJENA; DALY, ROSS GEOFFREY
To: VORTICITY INC.
Reel/Frame 058715/0953 →
Continuity (2)
Provisional Application 63137924 · Jan 15, 2021
Related Publication 20220229879A1 · Jul 21, 2022
References Cited (5)
US 11163715B1 · Luijten · 2021 [cited by examiner]
US 20110196907A1 · Kusmanoff · 2011 [cited by examiner]
US 20140137124A1 · Szalay · 2014 [cited by examiner]
US 20200074295A1 · O'Donncha · 2020 [cited by examiner]
JP H0887475A · 1996 [cited by examiner]