Patents by Inventor Prasanth Chatarasi

Prasanth Chatarasi has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20260186834
    Abstract: A computer-implemented method for allocating registers for multi-core programs. The method includes generating core-specific programs for execution units of cores, wherein each program contains core-specific configurations. The method includes analyzing the core-specific programs to identify core-specific differences. The method includes creating a uniformized program that consolidates semantics of all programs for the execution units while retaining operations to account for core-specific differences. The method includes performing live range analysis of the uniformized program to identify active intervals for variables and creating segmented live ranges to partition the intervals into global and core-specific segments. The method includes allocating registers to the execution units using the segmented live ranges and multi-casting the uniformized program to the execution units of the cores.
    Type: Application
    Filed: January 2, 2025
    Publication date: July 2, 2026
    Inventors: Masoud Ataei Jaliseh, Jintao Zhang, Prasanth Chatarasi, Bardia Mahjour, Wei Wang
  • Patent number: 12632233
    Abstract: Described are techniques for reducing overhead controls. A loop tree is constructed from a program, such as a structured control flow program. Structured control flow refers to a programming concept where the flow of control to a block or region is based on single entry and single-exist methodology (SESE). A loop tree refers to a tree-like data structure that graphically represents loop(s) and/or an if-condition(s) in a program, such as a structured control flow program. A loop splitting operation or a loop unrolling operation may then be performed in connection with the node of the loop tree that is identified as having the highest benefit (ratio of execution cycles gained to the increase in code size) representing an if-condition or a loop, respectively, provided that the resultant code fits in the instruction buffer.
    Type: Grant
    Filed: February 6, 2024
    Date of Patent: May 19, 2026
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Jintao Zhang, Prasanth Chatarasi, Vijayalakshmi Srinivasan, Kamlesh Kumar
  • Patent number: 12632299
    Abstract: Induction variable replacement (IVR) reduces operations in program loops. An IVR candidate is identified in a loop comprising linearly chained operations. The IVR candidate is derived from a basic induction variable (IV). A composite memory operation proceeding the IVR candidate is converted to unified form. Offset and increment information are separated from the composite memory operation. Constant values of the IVR candidate and a proceeding add operation are swapped. The composite memory operation is converted with an increment accommodating the preceding add operation. The add operation proceeding the composite memory operation is moved to the bottom of the series of operations. The basic IV is replaced with the IVR candidate, and the yield value of the loop is updated. The calculation for the basic IV is moved out of the loop, and the result value of the loop is adjusted to maintain the same behavior.
    Type: Grant
    Filed: June 29, 2023
    Date of Patent: May 19, 2026
    Assignee: International Business Machines Corporation
    Inventors: Nicole Khoun, Wei Wang, Prasanth Chatarasi
  • Publication number: 20260072660
    Abstract: A computer implemented method for generating modified loops for loops with a number of conditionals is provided. A processor set generates a conditional tree based on the number of conditionals in the loops. A value is determined by evaluating each conditional in the number of conditionals The processor set generates a multi-dimensional table based on values from the number of conditionals. The processor set determines an induction variable for the modified loops. The processor set slices the multi-dimensional table to generate a number of slices. The processor set generates a number of sequences by splitting values in each slice. The processor set generates a number of new conditionals based on the determined induction variable and at least values and strides in the number of sequences. The processor set generates the modified loops based on the number of new conditionals.
    Type: Application
    Filed: September 6, 2024
    Publication date: March 12, 2026
    Inventors: Alexandru Gatea, Bardia Mahjour, Prasanth Chatarasi
  • Patent number: 12561119
    Abstract: Reducing live range of variables for register allocation of structured control-flow programs is provided. The method comprises defining an affine expression for each static single assignment (SSA) variable contained in an input program for a computer compiler. The affine expression of a SSA variable in the input program is derived by substitution of affine expressions of input operands involved in computation of the SSA variable. The method defines dependence edges between nodes representing the SSA variables in a dependence graph, wherein source and destination of dependence edges represent definition and use of the SSA variables. The method identifies one or more overlapping dependence edges with a same source among the dependence edges and eliminates the longer of the overlapping dependence edges according to the derived affine expressions.
    Type: Grant
    Filed: September 5, 2023
    Date of Patent: February 24, 2026
    Assignee: International Business Machines Corporation
    Inventors: Prasanth Chatarasi, Wei Wang
  • Publication number: 20250251920
    Abstract: Described are techniques for reducing overhead controls. A loop tree is constructed from a program, such as a structured control flow program. Structured control flow refers to a programming concept where the flow of control to a block or region is based on single entry and single-exist methodology (SESE). A loop tree refers to a tree-like data structure that graphically represents loop(s) and/or an if-condition(s) in a program, such as a structured control flow program. A loop splitting operation or a loop unrolling operation may then be performed in connection with the node of the loop tree that is identified as having the highest benefit (ratio of execution cycles gained to the increase in code size) representing an if-condition or a loop, respectively, provided that the resultant code fits in the instruction buffer.
    Type: Application
    Filed: February 6, 2024
    Publication date: August 7, 2025
    Inventors: Jintao Zhang, Prasanth Chatarasi, Vijayalakshmi Srinivasan, Kamlesh Kumar
  • Patent number: 12271717
    Abstract: A computer implemented method for merging loops. A number of processor units identifies loops in computer code. The loops are sequences of instructions that are repeated until conditions for the loops are reached. The number of processor units creates a tree comprising nodes that represent the loops and edges that represent relationships between nodes. The number of processor units utilizes the tree to identify a pair of candidate loops from sibling nodes. The number of processor units creates a new loop from the pair of candidate loops with an expanded iteration space based on iteration spaces for the pair of candidate loops in response to the pair of candidate loops being eligible for merging.
    Type: Grant
    Filed: April 18, 2023
    Date of Patent: April 8, 2025
    Assignee: International Business Machines Corporation
    Inventors: Bardia Mahjour, Prasanth Chatarasi, Jintao Zhang, Alberto Mannari
  • Publication number: 20250077205
    Abstract: Reducing live range of variables for register allocation of structured control-flow programs is provided. The method comprises defining an affine expression for each static single assignment (SSA) variable contained in an input program for a computer compiler. The affine expression of a SSA variable in the input program is derived by substitution of affine expressions of input operands involved in computation of the SSA variable. The method defines dependence edges between nodes representing the SSA variables in a dependence graph, wherein source and destination of dependence edges represent definition and use of the SSA variables. The method identifies one or more overlapping dependence edges with a same source among the dependence edges and eliminates the longer of the overlapping dependence edges according to the derived affine expressions.
    Type: Application
    Filed: September 5, 2023
    Publication date: March 6, 2025
    Inventors: Prasanth Chatarasi, Wei Wang
  • Publication number: 20250004838
    Abstract: Induction variable replacement (IVR) reduces operations in program loops. An IVR candidate is identified in a loop comprising linearly chained operations. The IVR candidate is derived from a basic induction variable (IV). A composite memory operation proceeding the IVR candidate is converted to unified form. Offset and increment information are separated from the composite memory operation. Constant values of the IVR candidate and a proceeding add operation are swapped. The composite memory operation is converted with an increment accommodating the preceding add operation. The add operation proceeding the composite memory operation is moved to the bottom of the series of operations. The basic IV is replaced with the IVR candidate, and the yield value of the loop is updated. The calculation for the basic IV is moved out of the loop, and the result value of the loop is adjusted to maintain the same behavior.
    Type: Application
    Filed: June 29, 2023
    Publication date: January 2, 2025
    Inventors: Nicole Khoun, Wei Wang, Prasanth Chatarasi
  • Publication number: 20240354081
    Abstract: A computer implemented method for merging loops. A number of processor units identifies loops in computer code. The loops are sequences of instructions that are repeated until conditions for the loops are reached. The number of processor units creates a tree comprising nodes that represent the loops and edges that represent relationships between nodes. The number of processor units utilizes the tree to identify a pair of candidate loops from sibling nodes. The number of processor units creates a new loop from the pair of candidate loops with an expanded iteration space based on iteration spaces for the pair of candidate loops in response to the pair of candidate loops being eligible for merging.
    Type: Application
    Filed: April 18, 2023
    Publication date: October 24, 2024
    Inventors: Bardia Mahjour, Prasanth Chatarasi, Jintao Zhang, Alberto Mannari
  • Patent number: 11422781
    Abstract: Disclosed approaches for generating vector codes include inputting tensor processing statements. Each statement specifies an output variable, an initial variable, and multiply-and-accumulate (MAC) operations, and each MAC operation references the output variable, elements of a first tensor, and one or more elements of a second tensor. The MAC operations are organized into groups, and the MAC operations in each group reference the same output variable and have overlapping references to elements of the first tensor. For each group of MAC operations, at least one instruction is generated to load elements of the first tensor into a first register and at least one instruction is generated to load one or more elements of the second tensor into a second register. For each group of MAC operations, instructions are generated to select for each MAC operation in the group for input to an array of MAC circuits, elements from the first register and one or more elements from the second register.
    Type: Grant
    Filed: February 4, 2020
    Date of Patent: August 23, 2022
    Assignee: XILINX, INC.
    Inventors: Stephen A. Neuendorffer, Prasanth Chatarasi, Samuel R. Bayliss