Search

US-12625689-B1 - Software systems and methods for advanced output-affecting linear pathways

US12625689B1US 12625689 B1US12625689 B1US 12625689B1US-12625689-B1

Abstract

Unlike conventional or otherwise known decomposition methods like standard functional decomposition, time-affecting linear pathway (TALP) decomposition, or output-affecting linear pathways (OALPs) from the decomposition of TALPs, advanced output-affecting linear pathway (A-OALP) decomposition from algorithms separate the output variables of each execution pathway such that there is only one output variable per A-OALP, converting an algorithm into a set of process groups. A-OALPs extend parallelization by combining task-like parallelism with dynamic loop parallelism. The lightweight nature of A-OALPs allows for persistent thread and code management.

Inventors

  • Kevin D. Howard

Assignees

  • Kevin D. Howard

Dates

Publication Date
20260512
Application Date
20250815

Claims (20)

  1. 1 . A method for optimization of software or one or more algorithms, comprising: receiving the software or the one or more algorithms, from an operator; decomposing the software or the one or more algorithms into one or more executable and analyzable advanced output-affecting linear pathways (A-OALPs), wherein each of the one or more A-OALPs includes runtime information generation for one or more instances; executing the one or more A-OALPs; receiving one or more input variable attribute values in a source values table; comparing the one or more input variable attribute values that correspond to a pathway selection entry in an A-OALP selection table, wherein the A-OALP selection table uses the one or more input variable attribute values; selecting at least one A-OALP that corresponds to the pathway selection; determining which of the one or more input variable attribute values vary a processing time of the selected at least one A-OALP; determining which of the one or more input variable attribute values vary memory allocation of the selected at least one A-OALP; determining a maximum number of processing elements usable by the selected at least one A-OALP for a current one or more input variable attribute values; executing in parallel multiple A-OALPs on multiple separate servers while concurrently executing in parallel multiple instances of each of the multiple A-OALPs on multiple separate processing elements of a server; and limiting A-OALP cross-communication to the multiple separate processing elements on the server and eliminating a need for the A-OALP cross-communication between the multiple separate servers.
  2. 2 . The method of claim 1 , further comprising automatically determining ranges of the one or more input variable attribute values needed to satisfy existing non-loop control conditional statements.
  3. 3 . The method of claim 1 , further comprising automatically determining ranges of the one or more input variable attribute values needed to satisfy existing synthesized non-loop control conditional statements.
  4. 4 . The method of claim 1 , further comprising automatically synthesizing false non-loop control conditional statements.
  5. 5 . The method of claim 1 , further comprising automatically using one or more pass-by-reference address values as variables for the A-OALP selection table.
  6. 6 . The method of claim 1 , further comprising automatically converting one or more indirect variables to one or more associated input variables for use with the selection of the at least one A-OALP.
  7. 7 . The method of claim 1 , further comprising automatically combining task-like parallelization with dynamic loop unrolling parallelization.
  8. 8 . The method of claim 1 , further comprising performing automatic runtime integration of one or more operator optimization goals and a number of the multiple separate processing elements used by multiple parallel instances of an A-OALP.
  9. 9 . The method of claim 1 , further comprising pre-loading one or more A-OALPs onto multiple threads across the multiple separate processing elements and associating multiple instances of an A-OALP with individual processing elements, thereby allowing for parallel A-OALP instance selection in a persistent thread and code management model.
  10. 10 . The method of claim 1 , further comprising automatically selecting: one or more un-pooled threads; one or more non-persistent threads; a non-persistent thread pool with the one or more non-persistent threads; a persistent thread pool with the one or more non-persistent threads; and/or the persistent thread pool with one or more persistent threads.
  11. 11 . The method of claim 1 , further comprising extending a persistent thread and code management model to include processor socket usage.
  12. 12 . A system for optimization of software or one or more algorithms, comprising: a memory; and a processor operatively coupled with the memory, wherein the processor is configured to execute a program code to: receive the software or the one or more algorithms, from an operator; decompose the software or the one or more algorithms into one or more executable and analyzable advanced output-affecting linear pathways (A-OALPs), wherein each of the one or more A-OALPs includes runtime information generation for one or more instances; execute the one or more A-OALPs; receive one or more input variable attribute values in a source values table; compare the one or more input variable attribute values that correspond to a pathway selection entry in an A-OALP selection table, wherein the A-OALP selection table uses the one or more input variable attribute values; select at least one A-OALP that corresponds to the pathway selection; determine which of the one or more input variable attribute values vary a processing time of the selected at least one A-OALP; determine which of the one or more input variable attribute values vary memory allocation of the selected at least one A-OALP; determine a maximum number of processing elements usable by the selected at least one A-OALP for a current one or more input variable attribute values; execute in parallel multiple A-OALPs on multiple separate servers while concurrently executing in parallel multiple instances of each of the multiple A-OALPs on multiple separate processing elements of a server; and limit A-OALP cross-communication to the multiple separate processing elements on the server and eliminating a need for the A-OALP cross-communication between the multiple separate servers.
  13. 13 . The system of claim 12 , wherein the processor is further configured to execute the program code to: automatically determine ranges of the one or more input variable attribute values needed to satisfy existing non-loop control conditional statements.
  14. 14 . The system of claim 12 , wherein the processor is further configured to execute the program code to: automatically determine ranges of the one or more input variable attribute values needed to satisfy existing synthesized non-loop control conditional statements.
  15. 15 . The system of claim 12 , wherein the processor is further configured to execute the program code to: automatically synthesize false non-loop control conditional statements.
  16. 16 . The system of claim 12 , wherein the processor is further configured to execute the program code to: automatically use one or more pass-by-reference address values as variables for the A-OALP selection table.
  17. 17 . The system of claim 12 , wherein the processor is further configured to execute the program code to: automatically convert one or more indirect variables to one or more associated input variables for use with the selection of the at least one A-OALP.
  18. 18 . The system of claim 12 , wherein the processor is further configured to execute the program code to: automatically combine task-like parallelization with dynamic loop unrolling parallelization.
  19. 19 . The system of claim 12 , wherein the processor is further configured to execute the program code to: perform automatic runtime integration of one or more operator optimization goals and a number of the multiple separate processing elements used by multiple parallel instances of an A-OALP.
  20. 20 . The system of claim 12 , wherein the processor is further configured to execute the program code to: pre-load one or more A-OALPs onto multiple threads across the multiple separate processing elements and associate multiple instances of an A-OALP with individual processing elements, thereby allowing for parallel A-OALP instance selection in a persistent thread and code management model.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS This Application is a continuation of U.S. patent application Ser. No. 19/171,172, filed Apr. 4, 2025, which is fully incorporated herein by reference. TECHNICAL FIELD The present invention relates generally to algorithm decomposition, software parallelization, serial and parallel software analytics generation, software/hardware/and input dataset dynamic optimization, and more particularly to advanced output-affecting linear pathways (A-OALPs). BACKGROUND OF THE INVENTION U.S. Pat. No. 11,520,560, Computer Processing and Outcome Prediction Systems and Methods, which is fully incorporated herein by reference, addresses the decomposition of existing application source code, algorithms, processes, software modules, and software functions into executable and analyzable components called time-affecting linear pathways (TALPs). U.S. Patent Application Publication No. 2024/0119109, Methods and Systems for Time-Affecting Linear Pathway (TALP) Extensions, which is fully incorporated herein by reference, addresses the decomposition of a TALP into output-affecting linear pathways (OALPs). Various techniques discuss the concept of OALPs that contain a single input and multiple output variables, which was shown to be useful in determining the sensitivity of the outputs of the associated TALP to the values of each input variable. OALPs did not generally represent a complete transformation of the data and were seen only as an analytical expansion to the TALP model. Most computer programming languages have the concept of process grouping. For example, there are subroutines, functions, tasks, components, objects, and/or modules associated with an application. These process grouping concepts do not guarantee that a computer language function is defined such that given some set of input values, there is only a single output value, which seems to be the original intent of the C computer language as shown by the multiple input, single output formal definition of a function. The “C” computer language family, which includes the following computer languages: Agora, Alef, Amiga E, AMPL, AWK, Axum, BCPL, C, C Shell/tchsh, C*, C++, C−−, Cg, Ch, Chapel, Charm, Cilk, CINT, Claire, Cyclone, C#, D, Dart, E, eC, Fantom, Fusion, Go, Hack, Handel-C, HolyC, Java, JavaScript, Limbo, LSL, Lite-C, LPC, Neko, Nemerle, nesC, Newsqueak, Nim, Noop, NXC, NQC, OAK, Objective-C, OpenCL C, Perl, PHP, Pike, PROMAL, R, Ruby, Rust, S-Lang, SA-C, SAC, Seed7, Split-C, Squirrel, Swift, Telescript, TypeScript, Umple, Unified Parallel C, V, and Zig, all contain process groups that typically allow for multiple formal inputs and a single formal output. However, the formal input variables are defined using either pass-by-value or pass-by-reference techniques. The use of pass-by-value techniques does not inherently circumvent the formal process group definition. The use of pass-by-reference input variables means that the formal process group definition can be circumvented when pass-by-reference input variable values are changed, forcing these variables to also be outputs. In addition, writing to data streams or files circumvents the formal process group definition. There is no guarantee of a unique relationship between some input dataset and a single corresponding output data value. SUMMARY OF THE INVENTION If instead of decomposing an algorithm (including source code, processes, software modules, or software functions) into time-affecting linear pathways (TALPs), where each execution pathway can have multiple outputs, the algorithm is instead decomposed such that each execution pathway contains only a single output variable, the resulting execution pathways would represent process groups as originally envisioned for “C” computer language family process groups. This type of decomposition is known herein as advanced output-affecting linear pathway (A-OALP) decomposition. Each execution pathway can thus be represented by a set of process groups that are analogous to the original intent of “C” computer language family process groups. The present invention converts an algorithm into a set of A-OALPs. Consider that the original intent of a “C” computer language family process group is a subset of general computer science-defined tasks, that is, a task with at least one input variable and only one output variable. Further consider that an algorithm can contain multiple A-OALPs. Together this means that all A-OALPs of a particular algorithm can be executed concurrently and each concurrently executing A-OALP can use an analog of dynamic loop unrolling techniques shown in U.S. Pat. No. 12,147,781, Computer Processing Outcome Prediction Systems and Methods, and U.S. Pat. No. 12,099,446, Method and System for Software Multicore Optimization, which are fully incorporated herein by reference, to further increase the parallel execution of the algorithm. It should be noted that A-OALPs can contain looping structures and when the loop itera