IP Library Granted Patent US 11,907,549
Granted Patent B2
US 11,907,549 · App. 17/357,723 · Granted Feb 20, 2024

Systems and methods for minimizing communications

Inventors: Muthu Manikandan Baskaran (Old Tappan, NJ); Thomas Henretty (Brooklyn, NY); Ann Johnson (Saratoga, CA); Athanasios Konstantinidis (Brooklyn, NY); M. H. Langston (Beacon, NY); Janice O. Mcmahon (Bethesda, MD); Benoit J. Meister (New York, NY); Paul D. Mountcastle (Moorestown, NJ); Aale Naqvi (New York, NY); Benoit Pradelle (Brooklyn, NY); Tahina Ramananandro (New York, NY); Sanket Tavarageri (New York, NY); Richard A. Lethin (New York, NY)
Assignee: QUALCOMM Incorporated
G06F3/0631G06F3/0604G06F3/0638G06F3/0671G06F8/4432G06F8/4441G06F8/453Y02D10/00
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 11,907,549
App. No.
17/357,723
Granted
Feb 20, 2024
Kind
B2
Abstract

A system for allocation of one or more data structures used in a program across a number of processing units takes into account a memory access pattern of the data structure, and the amount of total memory available for duplication across the several processing units. Using these parameters duplication factors are determined for the one or more data structures such that the cost of remote communication is minimized when the data structures are duplicated according to the respective duplication factors while allowing parallel execution of the program.

Claims (14)

1. A system for allocating data structures to a plurality of processing nodes, each processing node having a respective local memory, the system comprising: a first processor; and a first memory in electrical communication with the first processor, the first memory comprising instructions which, when executed by a processing unit comprising at least one of the first processor and a second processor, and in electronic communication with a memory module comprising at least one of the first memory and a second memory, program the processing unit to: select as a first data structure of a set of data structures, a data structure having a read-write ratio greater than a read-write threshold; compute a respective value of a memory access parameter for each data structure of the set of data structures; compute a first duplication factor for the first data structure by optimizing a function of a value of a memory access parameter corresponding to the first data structure, subject to a memory capacity constraint based on a number N of processing nodes, N being greater than one; and generate a first statement allocating different portions of the first data structure duplicated by the first duplication factor, across the plurality of processing nodes, wherein the first value of the memory access parameter, corresponding to the first data structure, comprises a first correction factor based on an association between the first data structure and a first processing node of the plurality of processing nodes.

2. The system of claim 1 , wherein the processing unit is programmed to compute the first duplication factor based on, at least in part, at least one of: (i) a number of the plurality of processing nodes, (ii) the read-write ratio of the first data structure, (iii) a first value of total available memory size of the plurality of processing nodes, and (iv) a size of the first data structure.

3. The system of claim 2 , wherein the processing unit is further programmed to compute the first value of the total available memory size using a sum of memory capacity of each processing node in the plurality of processing nodes.

4. The system of claim 3 , wherein the processing unit is further programmed to compute another value of the total available memory size based on, at least in part, the first value, the first duplication factor, and the size of the first data structure.

5. The system of claim 1 , wherein the processing unit is further programmed to: select as a second data structure, another data structure having a read-write ratio greater than the read-write threshold; compute a second duplication factor for the second data structure, the second duplication factor being based on, at least in part, at least one of: (i) the number of the plurality of processing nodes, (ii) the read-write ratio of the second data structure, (iii) a second value of total available memory size of the plurality of processing nodes, and (iv) a size of the second data structure; and generate a second statement allocating the second data structure duplicated by the second duplication factor, across the plurality of processing nodes.

6. The system of claim 5 , wherein the processing unit is further programmed to: prior to performing operations of computing first and second duplication factors, compare the read-write ratio of the first data structure with the read-write ratio of the second data structure; if the read-write ratio of the first data structure is greater than the read-write ratio of the second data structure: perform the operation of computing the first duplication factor before the operation of computing the second duplication factor; and compute the second value of the total available memory size based on, at least in part, both the first duplication factor and the size of the first data structure; and otherwise: perform the operation of computing the second duplication factor before the operation of computing the first duplication factor.

7. A system for allocating data structures to a plurality of processing nodes, each processing node having a respective local memory, the system comprising: a first processor; and a first memory in electrical communication with the first processor, the first memory comprising instructions which, when executed by a processing unit comprising at least one of the first processor and a second processor, and in electronic communication with a memory module comprising at least one of the first memory and a second memory, program the processing unit to: (a) select a set of data structures, each data structure having a read-write ratio greater than a read-write threshold; (b) compute a respective value of a memory access parameter for each data structure; (c) determine a respective duplication factor for each data structure by optimizing a function of the respective values of the memory access parameter, subject to a memory capacity constraint based on a number N of processing nodes, N being greater than one; and (d) generate a statement allocating different portions of the data structure duplicated by each duplication factor, across the plurality of processing nodes, wherein to optimize the function, the processing unit is programmed to solve a mixed integer linear programming representation of the function and the memory capacity constraint, to minimize the function, or to maximize the function.

8. The system of claim 7 , wherein: the memory access parameter comprises a reduction in a number of remote accesses; and to optimize the function, the processing unit is programmed to maximize the function.

9. The system of claim 7 , wherein: the memory access parameter comprises a number of remote accesses: and to optimize the function, the processing unit is programmed to minimize the function.

10. The system of claim 7 , wherein a first respective value of the memory access parameter, corresponding to a first data structure, comprises a first correction factor based on an association between the first data structure and a first processing node.

11. The system of claim 7 , wherein the processing unit is further programmed to compute the read-write ratio of the first data structure.

12. The system of claim 7 , wherein the processing unit is further programmed to compute the read-write threshold as a function of the number of processing nodes in the plurality of processing nodes.

13. The system of claim 7 , wherein the processing unit is further programmed to compute: a correction factor representing an average local access to the first data structure by at least one processing node in the plurality of processing nodes; and the read-write threshold as a function of the number of processing nodes in the plurality of processing nodes and the correction factor.

14. The system of claim 7 , wherein the processing unit is further programmed to: generate a local write statement for the first data structure that allows a first processing node to store a data value in an instance of the first data structure in local memory of the first processing node; and for a set of processing nodes in the plurality of processing nodes, a cardinality of the set depending on the first duplication factor, generate a set of remote write statements for the first data structure, allowing the first processing node to store the data value in respective instances of the first data structure in respective local memories of the nodes in the set.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2023
From: QUALCOMM TECHNOLOGIES, INC.
To: QUALCOMM INCORPORATED
Reel/Frame 064686/0055 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2021
From: SIGNIFICS AND ELEMENTS, LLC
To: QUALCOMM TECHNOLOGIES, INC.
Reel/Frame 058896/0638 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2021
From: RESERVOIR LABS, INC.
To: LETHIN, RICHARD
Reel/Frame 057880/0116 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 12, 2021
From: BASKARAN, MUTHU MANIKANDAN; HENRETTY, THOMAS; JOHNSON, ANN; KONSTANTINIDIS, ATHANASIOS; LANGSTON, M. H.; MCMAHON, JANICE O.; MEISTER, BENOIT J.; MOUNTCASTLE, PAUL D.; NAQVI, AALE; PRADELLE, BENOIT; RAMANANANDRO, TAHINA; TAVARAGERI, SANKET; LETHIN, RICHARD A.
To: RESERVOIR LABS, INC.
Reel/Frame 057758/0164 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2021
From: RESERVOIR LABS, INC.
To: SIGNIFICS AND ELEMENTS, LLC
Reel/Frame 057346/0516 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2021
From: RESERVOIR LABS, INC.
To: SIGNIFICS AND ELEMENTS, LLC
Reel/Frame 057364/0569 →