IP Library › Granted Patent US 12,099,446
Granted Patent B2
US 12,099,446 · App. 18/131,348 · Granted Sep 24, 2024

Method and system for software multicore optimization

Inventor: Kevin David Howard (Mesa, AZ)
Assignee: C SQUARED IP HOLDINGS LLC
G06F12/0842G06F2212/1021
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,099,446
App. No.
18/131,348
Granted
Sep 24, 2024
Kind
B2
Abstract

Methods and systems for existing software applications to automatically take advantage of multicore computer systems outside of the conventional simultaneous processing of multiple applications and without performance problems from cache misses and mismatched task processing times are presented. Unlike other multicore optimization techniques, the present invention uses techniques that are applied to design graphs and work for scaled and standard speedup-based parallel processing. The methods and systems optimize software designs that are attached to code for maximum performance on multicore computer hardware by analyzing and modifying loop structures to produce a general parallel solution, not just simple loop unrolling.

Claims (39)

1. A method of using inherent access to cache memory of one or more associated processing cores, comprising:

detecting and categorizing one or more data movement types required by an algorithm;

using core memory access to minimize algorithm data movement time; and

annotating one or more Massively Parallel Technologies Hierarchical Functional Decomposition (MPT HFD) graphs associated with one or more algorithms to indicate use of the one or more data movement types.

2. The method of claim 1 , further comprising converting one or more elements of the annotated one or more MPT HFD graphs to a detailed software design.

3. The method of claim 2 , wherein the detailed software design comprises one or more associated source codes and one or more associated component pathways.

4. The method of claim 3 , wherein the one or more associated component pathways comprise one or more order irrelevant pathways.

5. The method of claim 4 , wherein two or more of the one or more irrelevant pathways are serially linked in time.

6. The method of claim 1 , further comprising detecting left data exchange and displaying notation of the left data exchange on the one or more MPT HFD graphs.

7. The method of claim 1 , further comprising detecting right data exchange and displaying notation of the right data exchange on the one or more MPT HFD graphs.

8. The method of claim 1 , further comprising annotating parallel loop indication on the one or more MPT HFD graphs.

9. The method of claim 1 , wherein the one or more data movement types comprise physical data movement.

10. The method of claim 1 , wherein the one or more data movement types comprise transposition without physically moving data elements.

11. A method of managing cache memory allocation per algorithm for optimum algorithm performance, comprising:

inputting one or more software codes;

generating one or more input dataset size-based advanced time complexity function approximation polynomials;

processing the one or more input dataset size-based advanced time complexity function approximation polynomials to determine one or more dataset sizes to processing time;

processing the determined one or more dataset sizes to processing time to determine an optimum cache size and an optimally performing input dataset size for a processor core;

modifying the one or more software codes to automatically use dynamic loop unrolling to manage input dataset size per processor core;

detecting when dynamic loop unrolling can be used to change the input dataset size on multiple processor cores such that the optimally performing input dataset size per processor core can be maintained; and

annotating one or more Massively Parallel Technologies Hierarchical Functional Decomposition (MPT HFD) graphs associated with one or more algorithms to indicate use of dynamic loop unrolling as part of a software design.

12. The method of claim 11 , wherein the software design comprises one or more associated source codes and one or more associated component pathways.

13. The method of claim 11 , wherein annotating the one or more MPT HFD graphs comprises annotating the one or more MPT HFD graphs with one or more transpose rules.

14. The method of claim 11 , further comprising determining contiguous memory usage or discontiguous memory usage.

15. The method of claim 14 , further comprising automatically performing transposition without physically moving data elements if contiguous memory usage is determined.

16. The method of claim 14 , further comprising automatically performing transposition with physical data element movement if discontiguous memory usage is determined.

17. A software system of managing cache memory allocation per algorithm for optimum algorithm performance, comprising:

a memory; and

a processor operatively coupled to the memory, wherein the processor is configured to execute program code to:

input one or more software codes;

generate one or more input dataset size-based advanced time complexity function approximation polynomials;

process the one or more input dataset size-based advanced time complexity function approximation polynomials to determine one or more dataset sizes to processing time;

process the determined one or more dataset sizes to processing time to determine an optimum cache size and an optimally performing input dataset size for a processor core;

modify the one or more software codes to automatically use dynamic loop unrolling to manage input dataset size per processor core;

detect when dynamic loop unrolling can be used to change the input dataset size on multiple processor cores such that the optimally performing input dataset size per processor core can be maintained; and

annotate one or more Massively Parallel Technologies Hierarchical Functional Decomposition (MPT HFD) graphs associated with one or more algorithms to indicate use of dynamic loop unrolling as part of a software design.

18. The system of claim 17 , wherein the processor is further configured to execute the program code to determine contiguous memory usage or discontiguous memory usage.

19. The system of claim 18 , wherein the processor is further configured to execute the program code to automatically perform transposition without physical data element movement if contiguous memory usage is determined.

20. The system of claim 18 , wherein the processor is further configured to execute the program code to automatically perform transposition with physical data element movement if discontiguous memory usage is determined.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2023
From: HOWARD, KEVIN DAVID
To: C SQUARED IP HOLDINGS LLC
Reel/Frame 063256/0666 →
Continuity (2)
Provisional Application 63328115 · Apr 6, 2022
Related Publication 20230325319A1 · Oct 12, 2023
Cited By (1)
US 12,411,671