System and method for preparing software for execution in a dynamically configurable hardware environment
First Claim
1. A method of creating run time executable code for a processing element array, the method comprising:
- partitioning the processing element array into a plurality of hardware accelerators;
identifying a plurality of functions in a program source code based on one or more run-time attributes of the plurality of functions;
separating the identified plurality of functions from the program source code in a plurality of kernel sections;
producing the run time executable code including a plurality of hardware dependent executable code portions that correspond, respectively, with the identified plurality of functions;
mapping said plurality of hardware dependent executable code portions to the plurality of hardware accelerators;
identifying a plurality of hardware variants in the mapped plurality of hardware dependent executable code portions, wherein at least two of the hardware variants have different hardware configurations that are substantially functionally equivalent;
producing a matrix that defines different combinations of said plurality of hardware accelerators, said hardware variants and said hardware dependent executable code portions; and
referencing the mapped plurality of hardware executable code portions using the matrix during run time execution of the plurality of hardware executable code portions.
3 Assignments
0 Petitions
Accused Products
Abstract
A system and method for creating run time executables in a configurable processing element array is disclosed. This system and method includes the step of partitioning a processing element array into a number of defined sets of hardware accelerators, which in one embodiment are processing elements called “bins”. The system and method then involves decomposing a program description in object code form into a plurality of “kernel sections”, where the kernel sections are defined as those sections of object code which are candidates for hardware acceleration. Next, mapping the identified kernel sections into a number of hardware dependent designs is performed. Finally, a matrix of the bins and the designs is formed for use by the run time system.
-
Citations
44 Claims
-
1. A method of creating run time executable code for a processing element array, the method comprising:
-
partitioning the processing element array into a plurality of hardware accelerators; identifying a plurality of functions in a program source code based on one or more run-time attributes of the plurality of functions; separating the identified plurality of functions from the program source code in a plurality of kernel sections; producing the run time executable code including a plurality of hardware dependent executable code portions that correspond, respectively, with the identified plurality of functions; mapping said plurality of hardware dependent executable code portions to the plurality of hardware accelerators; identifying a plurality of hardware variants in the mapped plurality of hardware dependent executable code portions, wherein at least two of the hardware variants have different hardware configurations that are substantially functionally equivalent; producing a matrix that defines different combinations of said plurality of hardware accelerators, said hardware variants and said hardware dependent executable code portions; and referencing the mapped plurality of hardware executable code portions using the matrix during run time execution of the plurality of hardware executable code portions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A system for creating run time executable code for hardware execution, the system comprising:
-
a processing element array; a plurality of hardware accelerators defined in the processing element array; a plurality of kernel sections of a program source code, the kernel sections including functions identified based on one or more run-time attributes of the functions; a plurality of hardware dependent executable code portions derived, respectively, from said kernel sections, the hardware executable code portions being adapted for mapping to and execution on said plurality of hardware accelerators; a plurality of hardware variants included in the mapped plurality of hardware dependent executable code portions, wherein at least two of the hardware variants comprise different hardware configurations that are substantially functionally equivalent; and a matrix defining different combinations of said hardware accelerators, said hardware variants and said hardware dependent executable code portions, wherein the matrix is used to reference the mapped plurality of hardware executable code portions during run time execution of the plurality of hardware executable code portions. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. A computer storage medium having stored thereon instructions for execution by a processing element array, which when executed by said processing element array perform the following:
-
partitioning the processing element array into a plurality of hardware accelerators; identifying a plurality of functions in a program source code based on one or more run-time attributes of the plurality of functions; separating the identified plurality of functions from the program source code in a plurality of kernel sections; producing the run time executable code including a plurality of hardware dependent executable code portions that correspond, respectively, with the identified plurality of functions; mapping said plurality of hardware dependent executable code portions to the plurality of hardware accelerators; identifying a plurality of hardware variants in the mapped plurality of hardware dependent executable code portions, wherein at least two of the hardware variants have different hardware configurations that are substantially functionally equivalent; producing a matrix that defines different combinations of said plurality of hardware accelerators, said hardware variants and said hardware dependent executable code portions; and referencing the mapped plurality of hardware executable code portions using the matrix during run time execution of the plurality of hardware executable code portions.
-
-
44. A system configured to create run time executable code for hardware execution, the system comprising:
-
a processing element array; means for partitioning the processing element array into a plurality of hardware accelerators; means for identifying a plurality of functions in a program source code-based on one or more run-time attributes of the plurality of functions; means for separating the identified plurality of functions from the program source code in a plurality of kernel sections; means for producing the run time executable code including a plurality of hardware dependent executable code portions that correspond, respectively, with the identified plurality of functions; means for mapping said plurality of hardware dependent executable code portions to the plurality of hardware accelerators; means for identifying a plurality of hardware variants in the mapped plurality of hardware dependent executable code portions, wherein at least two of the hardware variants have different hardware configurations that are substantially functionally equivalent; and means for producing a matrix that defines different combinations of said plurality of hardware accelerators, said hardware variants and said hardware dependent executable code portions; and means for referencing the mapped plurality of hardware executable code portions using the matrix during run time execution of the plurality of hardware executable code portions.
-
Specification