IP Library Granted Patent US 12,299,424
Granted Patent B2
US 12,299,424 · App. 18/121,766 · Granted May 13, 2025

Bandwidth-aware computational graph mapping

Inventors: Gao Deng (Palo Alto, CA); Weihang Fan (Mountain View, CA); Fei Wang (Palo Alto, CA); Yun Du (Palo Alto, CA)
Assignee: SambaNova Systems, Inc.
G06F8/433
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,299,424
App. No.
18/121,766
Granted
May 13, 2025
Kind
B2
Abstract

A computer-implemented method of transforming a high-level program for mapping onto a coarse-grained reconfigurable (CGR) processor with an array of CGR units, including sectioning a dataflow graph into a plurality of sections; extracting performance information for each of the plurality of sections; on a CGR unit: assigning to a section at least two computations dependent on a first data element; scheduling an additional load of the first data element in response to available memory bandwidth for that section; eliminating a buffer between the additional load of the first data element and one of the two computations, for that section; generating configuration data for the placed positions and the routed data and communication channels, wherein the configuration data, when loaded onto an instance of the array of CGR units, causes the array of CGR units to implement the dataflow graph; and storing the configuration data in a non-transitory computer-readable storage medium.

Claims (32)

1. A computer-implemented method of transforming a high-level program into configuration data executable by a coarse-grained reconfigurable (CGR) processor including one or more arrays of CGR units, comprising:

sectioning a dataflow graph of the high-level program into a plurality of sections to be mapped to the one or more arrays of CGR units of the CGR processor;

extracting performance information for each of the plurality of sections;

assigning a section of the plurality of sections that includes at least two computations dependent on a first data element to one or more CGR units of the CGR processor, wherein the first data element is loaded from a memory;

scheduling an additional load of the first data element from the memory based at least in part on the performance information for the section indicating available memory bandwidth for the section;

eliminating from the section, a buffer between a load of the first data element from the memory and one of the two computations dependent on the first data element;

generating the configuration data for the CGR processor including placed positions, data routing, and communication channels, wherein the configuration data, when loaded onto an instance of the one or more arrays of CGR units of the CGR processor, causes the one or more arrays of CGR units to implement at least the section of the dataflow graph; and

storing the configuration data in a non-transitory computer-readable storage medium.

2. The computer-implemented method of claim 1 , wherein the sectioning prefers section boundaries that combine section intermediate results with checkpoints.

3. The computer-implemented method of claim 1 , further comprising:

inserting a re-computation of a second data element based at least in part on the performance information for a second section of the plurality of sections indicating inadequate memory resources for at least the second section of the plurality of sections.

4. A non-transitory computer-readable storage medium storing computer program instructions, wherein the computer program instructions, when executed on a processor, implement a method comprising:

sectioning a dataflow graph of a high-level program into a plurality of sections, the high-level program to be transformed into configuration data executable by a coarse-grained reconfigurable (CGR) processor including one or more arrays of CGR units, wherein the plurality of sections are to be mapped to the one or more arrays of CGR units of the CGR processor;

extracting performance information for each of the plurality of sections;

assigning a section of the plurality of sections that includes at least two computations dependent on a first data element to one or more CGR units of the CGR processor, wherein the first data element is loaded from a memory;

scheduling an additional load of the first data element to from the memory based at least in part on the performance information for the section indicating available memory bandwidth for that section;

eliminating, from the section, a buffer between a load of the first data element from the memory and one of the two computations dependent on the first data element;

and

generating the configuration data for the CGR processor including placed positions, data routing, and communication channels, wherein the configuration data, when loaded onto an instance of the one or more arrays of CGR units of the CGR processor, causes the one or more arrays of CGR units to implement at least the section of the dataflow graph.

5. The non-transitory computer-readable storage medium of claim 4 , wherein the sectioning prefers section boundaries that combine section intermediate results with checkpoints.

6. The non-transitory computer-readable storage medium of claim 4 , the method further comprising:

inserting a re-computation of a second data element based at least in part on the performance information for a second section of the plurality of sections indicating inadequate memory resources for at least the second section of the plurality of sections.

7. A system including one or more processors coupled to a memory, the memory loaded with computer program instructions, wherein the computer program instructions, when executed on the one or more processors, implement actions comprising:

sectioning a dataflow graph of a high-level program into a plurality of sections, the high-level program to be transformed into configuration data executable by a coarse-grained reconfigurable (CGR) processor including one or more arrays of CGR units, wherein the plurality of sections are to be mapped to the one or more arrays of CGR units of the CGR processor,

extracting performance information for each of the plurality of sections;

assigning a section of the plurality of sections that includes at least two computations dependent on a first data element to one or more CGR units of the CGR processor, wherein the first data element is loaded from a memory;

scheduling an additional load of the first data element from the memory based at least in part on the performance information for the section indicating available memory bandwidth for that section;

eliminating, from the section, a buffer between a load of the first data element from the memory and one of the two computations dependent on the first data element; and

generating the configuration data for the CGR processor including placed positions, data routing and communication channels, wherein the configuration data, when loaded onto an instance of the one or more arrays of CGR units of the CGR processor, causes the one or more arrays of CGR units to implement the at least section of the dataflow graph.

8. The computer-implemented method of claim 7 , wherein the sectioning prefers section boundaries that combine section intermediate results with checkpoints.

9. The computer-implemented method of claim 7 , further comprising:

inserting a re-computation of a second data element based at least in part on the performance information for a second section of the plurality of sections indicating inadequate memory resources for at least the second section of the plurality of sections.

Assignments (2)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 18, 2025
From: SAMBANOVA SYSTEMS, INC.
To: SILICON VALLEY BANK, A DIVISION OF FIRST-CITIZENS BANK & TRUST COMPANY, AS AGENT
Reel/Frame 070892/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2023
From: DENG, GAO; FAN, WEIHANG; WANG, FEI; DU, YUN
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 063202/0024 →
Continuity (3)
Provisional Application 63332198 · Apr 18, 2022
Provisional Application 63321026 · Mar 17, 2022
Related Publication 20230297349A1 · Sep 21, 2023
References Cited (19)
US 8429394B1 · Natoli · 2013 [cited by examiner]
US 9727460B2 · Choi · 2017 [cited by examiner]
US 20070220522A1 · Coene · 2007 [cited by examiner]
US 20200004538A1 · Fleming, Jr. · 2020 [cited by examiner]
US 20210200540A1 · Chofleming · 2021 [cited by examiner]
US 20220100680A1 · Chrysos · 2022 [cited by examiner]
US 20230315415A1 · Windh · 2023 [cited by examiner]
US 20240362024A1 · Porterfield · 2024 [cited by examiner]
WO 2010142987A1 · 2010 [cited by applicant]
Ansaloni, Giovanni, Paolo Bonzini, and Laura Pozzi. “EGRA: A coarse grained reconfigurable architectural template.” IEEE Transactions on Very Large Scale Integration (VLSI) Systems 19.6 (2010): pp. 1062-1074. (Year: 201… [cited by examiner]
Venkataramani, Girish, et al. “Automatic compilation to a coarse-grained reconfigurable system-opn-chip.” ACM Transactions on Embedded Computing Systems (TECS) 2.4 (2003): pp. 560-589. (Year: 2003). [cited by examiner]
Podobas, Artur, Kentaro Sano, and Satoshi Matsuoka. “A survey on coarse-grained reconfigurable architectures from a performance perspective.” IEEE Access 8 (2020): pp. 146719-146743. (Year: 2020). [cited by examiner]
Brisk, Philip, Adam Kaplan, and Majid Sarrafzadeh. “Area-efficient instruction set synthesis for reconfigurable system-on-chip designs.” Proceedings of the 41st annual Design Automation Conference. 2004. pp.395-400 (Yea… [cited by examiner]
Cardoso, Joao MP, Pedro C. Diniz, and Markus Weinhardt. “Compiling for reconfigurable computing: A survey.” ACM Computing Surveys (CSUR) 42.4 (2010): 1-65. (Year: 2010). [cited by examiner]
Hartenstein, Reiner. “A decade of reconfigurable computing: a visionary retrospective.” Proceedings design, automation and test in Europe. Conference and exhibition 2001. IEEE, 2001.pp.642-649 (Year: 2001). [cited by examiner]
Koeplinger et al., Spatial: A Language and Compiler for Application Accelerators, PLDI '18, Jun. 18-22, 2018, Association for Computng Machinery, 16 pages. [cited by applicant]
M. Emani et al., Accelerating Scientific Applications With Sambanova Reconfigurable Dataflow Architecture, in Computing in Science & Engineering, vol. 23, No. 2, pp. 114-119, Mar. 26, 2021, [doi: 10.1109/MCSE.2021.30572… [cited by applicant]
Podobas et al., A Survey on Coarse-Grained Reconfigurable Architectures From a Performance Perspective, IEEEAccess, vol. 2020.3012084, Jul. 27, 2020, 25 pages. [cited by applicant]
Prabhakar et al., Plasticine: A Reconfigurable Architecture for Parallel Patterns, ISCA, Jun. 24-28, 2017, 14 pages. [cited by applicant]