Controlling and dynamically varying automatic parallelization
First Claim
1. A non-transitory computer readable storage medium storing program instructions operable to automatically control run-time parallelization of a multi-threaded software application, wherein the program instructions are executable to:
- analyze program instructions of the multi-threaded software application;
identify a parallel region within program instructions of the multi-threaded software application;
instrument the software application with instructions executable to;
allocate a buffer in memory for communication between the software application and an operating system;
pass a format and address of the buffer to the operating system, thereby enabling the operating system to read from and write to the buffer;
store preferred resource requests from the software application in the buffer, wherein resources are used for executing the identified parallel region;
read resource availability from the buffer, said resource availability having been stored in the buffer by the operating system, wherein the resource availability is associated with the preferred resource requests; and
determine run-time resources for use in executing the parallel region based at least in part on the resource availability read from the buffer, wherein the instructions are executable to obtain the operating system provided resource availability from the buffer without a system call to the operating system.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for automatically controlling run-time parallelization of a software application. A buffer is allocated during execution of program code of an application. When a point in program code near a parallelized region is reached, demand information is stored in the buffer in response to reaching a predetermined first checkpoint. Subsequently, the demand information is read from the buffer in response to reaching a predetermined second checkpoint. Allocation information corresponding to the read demand information is computed and stored the in the buffer for the application to later access. The allocation information is read from the buffer in response to reaching a predetermined third checkpoint, and the parallelized region of code is executed in a manner corresponding to the allocation information.
-
Citations
18 Claims
-
1. A non-transitory computer readable storage medium storing program instructions operable to automatically control run-time parallelization of a multi-threaded software application, wherein the program instructions are executable to:
-
analyze program instructions of the multi-threaded software application; identify a parallel region within program instructions of the multi-threaded software application; instrument the software application with instructions executable to; allocate a buffer in memory for communication between the software application and an operating system; pass a format and address of the buffer to the operating system, thereby enabling the operating system to read from and write to the buffer; store preferred resource requests from the software application in the buffer, wherein resources are used for executing the identified parallel region; read resource availability from the buffer, said resource availability having been stored in the buffer by the operating system, wherein the resource availability is associated with the preferred resource requests; and determine run-time resources for use in executing the parallel region based at least in part on the resource availability read from the buffer, wherein the instructions are executable to obtain the operating system provided resource availability from the buffer without a system call to the operating system. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method comprising:
-
analyzing program instructions of a multi-threaded software application; identifying a parallel region within program instructions of the multi-threaded software application; and instrumenting the software application with instructions executable to; allocate a buffer in memory for communication between the software application and an operating system; pass a format and address of the buffer to the operating system, thereby enabling the operating system to read from and write to the buffer; store preferred resource requests from the software application in the buffer, wherein resources are used for executing the identified parallel region; read resource availability from the operating system from the buffer, said resource availability having been stored in the buffer by the operating system, wherein the resource availability is associated with the preferred resource requests; and determine run-time resources for use in executing the parallel region based at least in part on the resource availability read from the buffer, wherein the operating system provided resource availability is obtained from the buffer without a system call to the operating system. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer system comprising:
-
a processor; a compiler comprising; code generation instructions executable by the processor; and optimization instructions executable by the processor to; analyze program instructions of a multi-threaded software application; identify a parallel region within program instructions of the multi-threaded software application; instrument the software application with instructions executable to; allocate a buffer in memory for communication between the software application and an operating system; pass a format and address of the buffer to the operating system, thereby enabling the operating system to read from and write to the buffer; store preferred resource requests from the software application in the buffer, wherein resources are used for executing the identified parallel region; read resource availability from the operating system from the buffer, said resource availability having been stored in the buffer by the operating system, wherein the resource availability is associated with the preferred resource requests; and determine run-time resources for use in executing the parallel region based at least in part on the resource availability read from the buffer, wherein the operating system provided resource availability is obtained from the buffer without a system call to the operating system. - View Dependent Claims (16, 17, 18)
-
Specification