IP Library Granted Patent US 12,229,057
Granted Patent B2
US 12,229,057 · App. 18/099,032 · Granted Feb 18, 2025

Method and apparatus for selecting data access method in a heterogeneous processing system with multiple processors

Inventors: Arnav Goel (Palo Alto, CA); Neal Sanghvi (Palo Alto, CA); Jiayu Bai (Palo Alto, CA); Qi Zheng (Palo Alto, CA); Ravinder Kumar (Palo Alto, CA)
Assignee: SambaNova Systems, Inc.
G06F12/1036G06F13/1668G06F2212/657
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,229,057
App. No.
18/099,032
Granted
Feb 18, 2025
Kind
B2
Abstract

A heterogeneous processing system including a host processor coupled to a host memory, a first processor coupled to a first memory, a second processor coupled to a second memory, multiple data transfer resources, and switch and bus circuitry that communicatively couples the host processor, the first processor, the second processor, and the data transfer resources. The host processor is configured to detect an application for execution by both the first processor and the second processor, to select one of multiple data transfer methods for transferring data between the first and second processors, and to configure the heterogeneous processing system based on the selected data transfer method. The data transfer methods include memory extension operation, one memory to memory transfer operation, and two memory to memory transfer operation using at least one intermediate host buffer.

Claims (54)

1. A heterogeneous processing system, comprising:

switch and bus circuitry;

a host processor coupled to a host memory accessible from the host processor without utilizing the switch and bus circuitry;

a first processor coupled to a first memory accessible from the first processor without utilizing the switch and bus circuitry;

a second processor coupled to a second memory accessible from the second processor without utilizing the switch and bus circuitry; and

a plurality of data transfer resources;

wherein the switch and bus circuitry communicatively couples the host processor, the first processor, the second processor, and the plurality of data transfer resources;

wherein the host processor is configured to, at runtime:

i) detect an application for execution by both the first processor and the second processor,

ii) dynamically select one of a plurality of different data access methods for accessing data between the first and second processors based on user-defined metadata of data passing, including:

source and destination device types,

memory addresses,

bandwidth of application-defined pipeline, and

latency requirement of operation device stages, and

iii) configure the heterogeneous processing system based on the selected data access method;

wherein the plurality of different data access methods for accessing data between the first and second processors include:

a) directly accessing the data in the second memory by the first processor,

b) transferring the data between the first memory and the second memory using a first data transfer resource of the plurality of data transfer resources without passing the data through the host memory, and

c) transferring the data from the second memory to the host memory and then transferring the data from the host memory to the first memory using one or more data transfer resources of the plurality of data transfer resources.

2. The heterogeneous processing system of claim 1 , wherein the host processor selects memory extension operation by mapping virtual addresses of the second memory to physical addresses of the switch and bus circuitry and by configuring the first processor to directly access the second memory using the mapped physical addresses according to the memory extension operation.

3. The heterogeneous processing system of claim 2 , wherein the second processor is programmed to execute a first part of the application to generate and write first data into the second memory, and wherein the first processor is configured to directly access the first data from the second memory while executing a second part of the application using the first data.

4. The heterogeneous processing system of claim 3 , wherein the first processor is configured to directly access the host memory and to write second data output from executing the second part of the application directly into the host memory.

5. The heterogeneous processing system of claim 2 , wherein the first processor is configured to execute a first part of the application to generate first data and to directly write the first data into the second memory.

6. The heterogeneous processing system of claim 2 , wherein the first processor is configured to directly read first data from the host memory while executing a first part of the application using the first data to generate second data and to directly write the second data into the second memory while executing the first part of the application.

7. The heterogeneous processing system of claim 1 , wherein the host processor is configured to map virtual addresses of the second memory to physical addresses of the switch and bus circuitry and to configure a first data transfer resource to perform a one memory to memory transfer operation between the first memory and the second memory.

8. The heterogeneous processing system of claim 7 , wherein the host processor is configured to program the first data transfer resource to directly transfer data between the first memory and the second memory using the mapped physical addresses.

9. The heterogeneous processing system of claim 7 , wherein the second processor is programmed to execute a first part of the application to generate and write first data into the second memory, and wherein the host processor is configured to prompt the first data transfer resource to transfer the first data from the second memory to the first memory.

10. The heterogeneous processing system of claim 9 , wherein the first processor is configured to execute a second part of the application using the first data and write second data into the first memory, and wherein the host processor is configured to prompt the first data transfer resource to transfer the second data into the host memory.

11. The heterogeneous processing system of claim 7 , wherein the first processor is configured to execute a first part of the application to generate and write first data into the first memory, and wherein the host processor is configured to prompt the first data transfer resource to transfer the first data from the first memory to the second memory.

12. The heterogeneous processing system of claim 11 , wherein the second processor is programmed to execute a second part of the application using the first data and write second data into the second memory.

13. The heterogeneous processing system of claim 12 , wherein the host processor is configured to prompt the second data transfer resource to transfer the second data from the second memory into the host memory.

14. The heterogeneous processing system of claim 1 , wherein the host processor selects a two memory to memory transfer operation by allocating buffer space within the host memory, wherein the first processor is configured to execute a first part of the application which generates and writes first data into the first memory, and wherein the host processor is further configured to program the plurality of data transfer resources to transfer the first data from the first memory to the buffer space of the host memory and to transfer the first data from the buffer space of the host memory into the second memory.

15. The heterogeneous processing system of claim 14 , wherein the buffer space comprises a common buffer that is allocated within a non-swappable portion of the host memory.

16. The heterogeneous processing system of claim 14 , wherein the second processor is configured to execute a second part of the application and to write second data in the second memory, and wherein the host processor is configured to prompt one of the plurality of data transfer resources to transfer the second data from the second memory to the host memory.

17. The heterogeneous processing system of claim 1 , wherein the host processor is configured to select a most efficient of one of the plurality of different data access methods based on current latency and bandwidth requirements.

18. A method of selecting data access method in a heterogeneous processing system, wherein the heterogeneous processing system includes switch and bus circuitry, a host processor, a first processor, a second processor, a host memory accessible from the host processor without utilizing the switch and bus circuitry, a first memory accessible from the first processor without utilizing the switch and bus circuitry, a second memory accessible from the second processor without utilizing the switch and bus circuitry, a plurality of data transfer resources, wherein the switch and bus circuitry communicatively couples the host processor, the first processor, the second processor, and the plurality of data transfer resources, the method comprising:

detecting, by the host processor at runtime, an application for execution by both the first processor and the second processor;

dynamically selecting, by the host processor at runtime, one of a plurality of different data access methods for accessing data between the first and second processors based on user-defined metadata of data passing, including:

source and destination device types,

memory addresses,

bandwidth of application-defined pipeline, and

latency requirement of operation device stages; and

configuring the heterogeneous processing system according to the selected data access method;

wherein the plurality of different data access methods for accessing data between the first and second processors include:

a) directly accessing the data in the second memory by the first processor,

b) transferring the data between the first memory and the second memory using a first data transfer resource of the plurality of data transfer resources without passing the data through the host memory, and

c) transferring the data from the second memory to the host memory and then transferring the data from the host memory to the first memory using one or more data transfer resources of the plurality of data transfer resources.

19. The method of claim 18 , further comprising:

selecting memory extension operation;

mapping, by the host processor, virtual addresses of the second memory to physical addresses of the switch and bus circuitry; and

configuring, by the host processor, the first processor to directly access the second memory using the mapped physical addresses according to the memory extension operation.

20. The method of claim 18 , wherein the selected data access method utilizes a data transfer resource, the method further comprising:

programming the data transfer resource for a first data transfer; and

reprogramming the data transfer resource for a second data transfer.

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 Jan 20, 2023
From: GOEL, ARNAV; SANGHVI, NEAL; BAI, JIAYU; ZHENG, QI; KUMAR, RAVINDER
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 062444/0681 →
Continuity (1)
Related Publication 20240248855A1 · Jul 25, 2024
References Cited (163)
US 5301287A · Herrell et al. · 1994 [cited by applicant]
US 5684980A · Casselman · 1997 [cited by applicant]
US 6470485B1 · Cote et al. · 2002 [cited by applicant]
US 6539438B1 · Ledzius et al. · 2003 [cited by applicant]
US 6557156B1 · Guccione · 2003 [cited by applicant]
US 6667983B1 · Lo et al. · 2003 [cited by applicant]
US 7707392B2 · Maeda et al. · 2010 [cited by applicant]
US 8244930B1 · Dykema et al. · 2012 [cited by applicant]
US 9009723B2 · Degenaro et al. · 2015 [cited by applicant]
US 9288101B1 · Dalal · 2016 [cited by examiner]
US 9300574B2 · Ditya · 2016 [cited by applicant]
US 9501325B2 · Pell et al. · 2016 [cited by applicant]
US 9715475B2 · Lavasani · 2017 [cited by applicant]
US 9875167B1 · Norrie · 2018 [cited by examiner]
US 10031857B2 · Menachem et al. · 2018 [cited by applicant]
US 10318475B2 · Kaimalettu · 2019 [cited by examiner]
US 10511479B2 · Xie et al. · 2019 [cited by applicant]
US 10558496B2 · Apodaca · 2020 [cited by examiner]
US 10613881B2 · Lee et al. · 2020 [cited by applicant]
US 10621138B2 · Hu et al. · 2020 [cited by applicant]
US 10802870B2 · Lu · 2020 [cited by applicant]
US 10831507B2 · Shah et al. · 2020 [cited by applicant]
US 10831523B2 · Kochevar-Cureton et al. · 2020 [cited by applicant]
US 10838895B2 · Yu et al. · 2020 [cited by applicant]
US 10841243B2 · Levi et al. · 2020 [cited by applicant]
US 10877822B1 · Wang et al. · 2020 [cited by applicant]
US 10936533B2 · LeBeane et al. · 2021 [cited by applicant]
US 11068780B2 · Mellempudi et al. · 2021 [cited by applicant]
US 11080227B2 · Koeplinger et al. · 2021 [cited by applicant]
US 11182221B1 · Sivaramakrishnan · 2021 [cited by examiner]
US 11182264B1 · Sivaramakrishnan et al. · 2021 [cited by applicant]
US 11184439B2 · Eran et al. · 2021 [cited by applicant]
US 11200096B1 · Shenbagam et al. · 2021 [cited by applicant]
US 11237880B1 · Raumann et al. · 2022 [cited by applicant]
US 11328207B2 · Lauterbach et al. · 2022 [cited by applicant]
US 11328208B2 · Lie et al. · 2022 [cited by applicant]
US 11347965B2 · Dutta et al. · 2022 [cited by applicant]
US 11360800B2 · Kochevar-Cureton et al. · 2022 [cited by applicant]
US 11392740B2 · Raumann et al. · 2022 [cited by applicant]
US 11436400B2 · Liao et al. · 2022 [cited by applicant]
US 11436429B2 · Jaganathan et al. · 2022 [cited by applicant]
US 11487694B1 · Misra · 2022 [cited by examiner]
US 11568218B2 · Ng et al. · 2023 [cited by applicant]
US 11609798B2 · Sivaramakrishnan et al. · 2023 [cited by applicant]
US 11625283B2 · Sivaramakrishnan et al. · 2023 [cited by applicant]
US 11625284B2 · Sivaramakrishnan et al. · 2023 [cited by applicant]
US 11687264B2 · Chang et al. · 2023 [cited by applicant]
US 11847395B2 · Raumann et al. · 2023 [cited by applicant]
US 11886930B2 · Sivaramakrishnan et al. · 2024 [cited by applicant]
US 11886931B2 · Sivaramakrishnan et al. · 2024 [cited by applicant]
US 11893424B2 · Raumann et al. · 2024 [cited by applicant]
US 20020156998A1 · Casselman · 2002 [cited by applicant]
US 20030108119A1 · Mohebbi et al. · 2003 [cited by applicant]
US 20040039980A1 · Zak · 2004 [cited by examiner]
US 20060012395A1 · Huppenthal et al. · 2006 [cited by applicant]
US 20070186126A1 · Smith et al. · 2007 [cited by applicant]
US 20070220522A1 · Coene et al. · 2007 [cited by applicant]
US 20080013448A1 · Horie et al. · 2008 [cited by applicant]
US 20090089475A1 · Chitlur · 2009 [cited by applicant]
US 20090172351A1 · Vorbach et al. · 2009 [cited by applicant]
US 20090300209A1 · Elzur · 2009 [cited by applicant]
US 20120303932A1 · Farabet et al. · 2012 [cited by applicant]
US 20140137123A1 · Hartmann et al. · 2014 [cited by applicant]
US 20140258438A1 · Ayoub et al. · 2014 [cited by applicant]
US 20150058614A1 · Degenaro et al. · 2015 [cited by applicant]
US 20150100971A1 · Dube et al. · 2015 [cited by applicant]
US 20160077976A1 · Raikin et al. · 2016 [cited by applicant]
US 20160308719A1 · Putnam et al. · 2016 [cited by applicant]
US 20160314025A1 · Mcgarry et al. · 2016 [cited by applicant]
US 20170147228A1 · Yudanov · 2017 [cited by examiner]
US 20170262291A1 · Lai · 2017 [cited by examiner]
US 20170317679A1 · Suh et al. · 2017 [cited by applicant]
US 20180026916A1 · Banerjee et al. · 2018 [cited by applicant]
US 20180225403A1 · Nicol et al. · 2018 [cited by applicant]
US 20180285295A1 · Abel et al. · 2018 [cited by applicant]
US 20180307950A1 · Nealis et al. · 2018 [cited by applicant]
US 20180308200A1 · Surti et al. · 2018 [cited by applicant]
US 20180314941A1 · Lie et al. · 2018 [cited by applicant]
US 20180315158A1 · Nurvitadhi et al. · 2018 [cited by applicant]
US 20190089616A1 · Chabbi et al. · 2019 [cited by applicant]
US 20190138890A1 · Liang et al. · 2019 [cited by applicant]
US 20190171604A1 · Brewer · 2019 [cited by applicant]
US 20190171612A1 · Shahar et al. · 2019 [cited by applicant]
US 20190180176A1 · Yudanov et al. · 2019 [cited by applicant]
US 20190243571A1 · Narayanan et al. · 2019 [cited by applicant]
US 20190258921A1 · Lie et al. · 2019 [cited by applicant]
US 20190286973A1 · Kovvuri et al. · 2019 [cited by applicant]
US 20190384642A1 · Bolkhovitin et al. · 2019 [cited by applicant]
US 20200090313A1 · Bugdary et al. · 2020 [cited by applicant]
US 20200142753A1 · Harwood et al. · 2020 [cited by applicant]
US 20200142857A1 · Catiller et al. · 2020 [cited by applicant]
US 20200151573A1 · Das et al. · 2020 [cited by applicant]
US 20200174840A1 · Zhao et al. · 2020 [cited by applicant]
US 20200226444A1 · Sharma et al. · 2020 [cited by applicant]
US 20200264876A1 · Lo et al. · 2020 [cited by applicant]
US 20200314181A1 · Eran et al. · 2020 [cited by applicant]
US 20200326992A1 · Jin et al. · 2020 [cited by applicant]
US 20210011770A1 · Prabhakar et al. · 2021 [cited by applicant]
US 20210073625A1 · Cai · 2021 [cited by applicant]
US 20210089343A1 · Hyoudou · 2021 [cited by applicant]
US 20210097366A1 · Wagner et al. · 2021 [cited by applicant]
US 20210097379A1 · Yang et al. · 2021 [cited by applicant]
US 20210103820A1 · Ghosh · 2021 [cited by applicant]
US 20210125058A1 · Chowdhury et al. · 2021 [cited by applicant]
US 20210192287A1 · Dwivedi et al. · 2021 [cited by applicant]
US 20210192357A1 · Sinha et al. · 2021 [cited by applicant]
US 20210192358A1 · Song et al. · 2021 [cited by applicant]
US 20210200610A1 · Chu et al. · 2021 [cited by applicant]
US 20210241093A1 · Byrne et al. · 2021 [cited by applicant]
US 20210306142A1 · Willis et al. · 2021 [cited by applicant]
US 20210373867A1 · Chen et al. · 2021 [cited by applicant]
US 20210374503A1 · Kim et al. · 2021 [cited by applicant]
US 20220058034A1 · Grohoski et al. · 2022 [cited by applicant]
US 20220197712A1 · Sivaramakrishnan et al. · 2022 [cited by applicant]
US 20220197713A1 · Sivaramakrishnan · 2022 [cited by examiner]
US 20220198117A1 · Raumann et al. · 2022 [cited by applicant]
US 20220269534A1 · Misra · 2022 [cited by examiner]
US 20230128529A1 · Zeng et al. · 2023 [cited by applicant]
US 20230195478A1 · Brot · 2023 [cited by examiner]
US 20230205585A1 · Chatterjee · 2023 [cited by examiner]
US 20240248853A1 · Goel et al. · 2024 [cited by applicant]
US 20240248860A1 · Goel et al. · 2024 [cited by applicant]
US 20240248863A1 · Goel et al. · 2024 [cited by applicant]
EP 1372084A2 · 2003 [cited by applicant]
JP 2020112901A · 2020 [cited by applicant]
TW 202240386A · 2022 [cited by applicant]
TW 202240394A · 2022 [cited by applicant]
TW 202248853A · 2022 [cited by applicant]
WO 2010142987A1 · 2010 [cited by applicant]
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]
U.S. Appl. No. 18/099,006—Non-Final Rejection, dated May 24, 2024, 9 pages. [cited by applicant]
U.S. Appl. No. 18/099,014—Non-Final Rejection, dated Apr. 11, 2024, 12 pages. [cited by applicant]
U.S. Appl. No. 18/099,021—Non-Final Rejection, dated Mar. 7, 2024, 12 pages. [cited by applicant]
U.S. Appl. No. 18/099,021—Notice of Allowance, dated Jun. 6, 2024, 9 pages. [cited by applicant]
Accelerated Computing with a Reconfigurable Dataflow Architecture, SambaNova Systems Whitepaper, 10 pages, Dated 2021. [cited by applicant]
Bae et al., Auto-Tuning CNNs for Coarse-Grained Reconfigurable Array-based Accelerators, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 37, Issue: 11, Nov. 2018, 10 pages. [cited by applicant]
Busa et al., A Run-Time Word-Level Reconfigurable Coarse-Grain Functional Unit for a VLIW processor; ACM 2002, pp. 44-49. (Year: 2002). [cited by applicant]
Donges, Gradient Descent: An Introduction to Machine Learning's Most Popular Algorithms, dated Jun. 16, 2019, 10 pages. Retrieved on Mar. 24, 2021, retrieved from [URL: https://builtin.com/data-science/gradient-descent … [cited by applicant]
Éricles Sousa, A reconfigurable memory architecture for system integration of coarse-grained reconfigurable arrays, Published in: 2017 International Conference on ReConFigurable Computing and FPGAs (ReConFig) Dec. 4-6, … [cited by applicant]
Galanis et al., Accelerating Applications by Mapping Critical Kernels on Coarse-Grain Reconfigurable Hardware in Hybrid Systems, Field-Programmable Custom Computing Machines, 2005, 13th Annual IEEE Symposium on Napa, CA… [cited by applicant]
Galanis et al., Partitioning Methodology for Heterogeneous Reconfigurable Functional Units, The Journal of Supercomputing, vol. 38, No. 1, dated Oct. 1, 2006, 18 pages. [cited by applicant]
Iqbal et al., Reconfigurable Processor Architecture for High Speed Applications, IEEE, dated 2009, pp. 624-629. [cited by applicant]
Zhang et al., Dive into Deep Learning, Release 0.16.2, dated Mar. 20, 2021, 1027 pages. [cited by applicant]
Jafri et al., NeuroCGRA: A CGRAs with Support for Neural Networks, 2014 International Conference on High Performance Computing & Simulation (HPCS), 8 pages. [cited by applicant]
Jin et al., How to scale distributed deep learning, dated Nov. 14, 2016, 16 pages. [cited by applicant]
Kachris et al.; “A Survey on Reconfigurable Accelerators for Cloud Computing”, IEEE 2016, Aug. 29, 2016, pp. 1-11. [cited by applicant]
Knodel, Oliver, et al., “RC3E: Reconfigurable Accelerators in Data Centers and their Provision by Adapted Service Models”, IEEE 9th International Converence on Cloud Computing, 2016, pp. 1-8. [cited by applicant]
Lecture 11: Distributed Training and Communication Protocols, CSE599W: Spring 2018, UW Paul G. Allen School of Computer Science and Engineering, 41 pages. [cited by applicant]
Li, et al., “Caterpillar: Coarse Grain Reconfigurable Architecture for Accelerating the Training of Deep Neural Networks,” arXiv: 1706.00517v2 [cs.DC], Jun. 8, 2017, 10 pages. [cited by applicant]
Liang et al., Dynamic Coarse Grain Dataflow Reconfiguration Technique for Real-Time Systems, IEEE, dated 2005, pp. 3511-3514. [cited by applicant]
Liu et. al., Offloading distributed Applications onto SmartNICs using iPipe, ACM 2019, pp. 1-16. [cited by applicant]
Ma et al., DeepGauge: Multi-Granularity Testing Criteria for Deep Learning Systems; ACM 2018, pp. 1-12. [cited by applicant]
Mao, Data Parallelism vs Model Parallelism in Distributed Deep Learning Training, dated Mar. 23, 2019, 4 pages, retrieved on Mar. 30, 2021, Retrieved from the internet [ URL: https://leimao.github.io]. [cited by applicant]
Marshall, Dave, “Remote Procedure Calls (RPC)”, Jan. 5, 1999, 15 pages, Retreived from URL. [cited by applicant]
Padole et al., Configuration Memory Based Dynamic Coarse Grained Reconfigurable Multiscore Architecture, IEEE 2013, pp. 3511-3514, 5 pages. [cited by applicant]
Paek et al., “Binary Acceleration Using Coarse-Grained Reconfigurable Architecture,” ACM SIGARCH Computer Architecture News, vol. 38, No. 4, Sep. 2010, 7 pages. [cited by applicant]
Rubattu et al., Dataflow-Functional High-Level Synthesis for Coarse-Grained Reconfigurable Accelerators, IEEE 2019, pp. 69-72 (Year: 2019). [cited by applicant]
Ruder, An overview of gradient descent optimization algorithms, NUI Galway Aylien Lyd, dated Jun. 15, 2017, 14 pages. [cited by applicant]
Tanaka et. al., Distributed Deep Learning with GPU-FPGA heterogenous computing, IEEE 2021, 9 pages. [cited by applicant]
Xiandong Qi, Introduction to Distributed Deep Learning, dated May 13, 2017, 13 pages. [cited by applicant]