EP1569104A2

An automated method for performing parallelization of sequential code and a computerized system adapted therefore

Abstract

Methods and apparatus are described for automatically transforming essentially sequential code into a plurality of codes which are to be executed in parallel to achieve the same or equivalent result to the sequential code. The parallelized code may be a task-level or coarse grain or functional parallelized code. User-defined task boundaries are determined in the input code to thereby define a plurality of tasks. It is then determined if the essentially sequential application code can be separated at at least one of said user-defined tasks boundaries and if so at least one code of the plurality of codes for at least one of said tasks is automatically generated. Essentially sequential code can be transformed into pipelined code, in which the pipelined code has at least two processes or tasks, one of said processes or tasks generating/producing information (data) in a first time frame, for use/consumption by another of said processes or tasks in a second (later) time frame. In pipelining, processes using different data can be executed at the same or similar time.

EP1569104A2, drawing sheet 1
Sheet 1 of 7

Term

Term ended

Projected expiry passed 7 January 2025, 1.7 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

22 claims: 11 independent, 11 dependent

  1. 1
    A computer based method for automatically transforming essentially sequential application code into a functional equivalent plurality of codes, comprising the step of:receiving said essentially sequential application code;receiving user-defined task boundaries within said essentially sequential application code to thereby define a plurality of tasks;determining whether said essentially sequential application code can be separated at at least one of said user-defined tasks boundaries;and if so automatically generating a code of the functional equivalent plurality of codes for at least two of said tasks.
  2. 5
    The method of any previous claim, wherein said essentially sequential application code comprises at least one function, and at least two of said generated codes include each a portion of said function.
  3. 6
    The method of any previous claim, wherein said essentially sequential application code being in an arbitrary format.
  4. 7
    The method of any previous claim, wherein said automatic generating of code includes automatically including instructions for communication between said tasks.
  5. 8
    The method of any previous claim, wherein determining step comprises:a step of determining globally over said essentially sequential application code liveness information of substantially all of the variables in said code;thereafter a step of determining for at least one of said tasks whether it can be separated by only evaluating the liveness information at at least one of said task boundaries.
  6. 13
    The method of any previous claim, wherein said step of determining and automatically generating code is partly operating on a control flow graph description of said essentially sequential application code.
  7. 15
    A computer based system for automatically transforming essentially sequential application code into a functional equivalent plurality of codes, comprising:means for receiving said essentially sequential application code;means for receiving user-defined task boundaries within said essentially sequential application code to thereby define a plurality of tasks;means for determining whether said essentially sequential application code can be separated at at least one of said user-defined tasks boundaries;and means for automatically generating a code of the functional equivalent plurality of codes for at least one of said tasks.
  8. 18
    The system of any of claims 15 to 17, wherein the means for determining comprises:means for determining globally over said essentially sequential application code liveness information of substantially all of the variables in said code;and means for determining for at least one of said tasks whether it can be separated by only evaluating the liveness information at at least one of said task boundaries.
  9. 19
    A pre-compiler used with a compiler for automatically transforming essentially sequential application code into a functional equivalent plurality of codes, the pre-compiler comprising:means for receiving said essentially sequential application code;means for receiving user-defined task boundaries within said essentially sequential application code to thereby define a plurality of tasks;and means for determining whether said essentially sequential application code can be separated at at least one of said user-defined tasks boundaries.
  10. 20
    A compiler for automatically transforming essentially sequential application code into a functional equivalent plurality of codes, comprising:means for receiving said essentially sequential application code;means for receiving user-defined task boundaries within said essentially sequential application code to thereby define a plurality of tasks;means for determining whether said essentially sequential application code can be separated at at least one of said user-defined tasks boundaries;and means for automatically generating a code of the functional equivalent plurality of codes for at least one of said tasks.
  11. 21
    A computer program product comprising program code which when executed on a processing engine automatically transforms essentially sequential application code into a functional equivalent plurality of codes, the program code when executed comprising:receiving said essentially sequential application code;receiving user-defined task boundaries within said essentially sequential application code to thereby define a plurality of tasks;determining whether said essentially sequential application code can be separated at at least one of said user-defined tasks boundaries;and if so automatically generating a code of the functional equivalent plurality of codes for at least one of said tasks.