Dynamically partitioning processing across plurality of heterogeneous processors
First Claim
1. A computer-implemented method to load objects in a heterogeneous multiprocessor computer system, said method comprising:
- analyzing a source program for one or more program characteristics, the program characteristics selected from the group consisting of data locality, computational intensity, and data parallelism;
in response to the analyzing, compiling the source program into two object files, a first object file corresponding to a first instruction set and a second object file corresponding to a second instruction set;
in response to the compiling, storing the program characteristics in each of the object files;
receiving a request to execute a software task corresponding to the source program;
selecting a processor from a plurality of dislike processors, wherein a first processor corresponds to the first instruction set and a second processor corresponds to the second instruction set, to execute the software task, the selecting comprising comparing one or more characteristics of the software task with the program characteristics stored in the first object file and the second object file;
in response to selecting the first processor;
loading the first object file into a shared memory, wherein the shared memory is shared by the plurality of dislike processors; and
executing the loaded first object file by the first processor; and
in response to selecting the second processor;
loading the second object file into the shared memory; and
executing the loaded second object file by the second processor.
2 Assignments
0 Petitions
Accused Products
Abstract
A program is into at least two object files: one object file for each of the supported processor environments. During compilation, code characteristics, such as data locality, computational intensity, and data parallelism, are analyzed and recorded in the object file. During run time, the code characteristics are combined with runtime considerations, such as the current load on the processors and the size of the data being processed, to arrive at an overall value. The overall value is then used to determine which of the processors will be assigned the task. The values are assigned based on the characteristics of the various processors. For example, if one processor is better at handling intensive computations against large streams of data, programs that are highly computationally intensive and process large quantities of data are weighted in favor of that processor. The corresponding object is then loaded and executed on the assigned processor.
99 Citations
7 Claims
-
1. A computer-implemented method to load objects in a heterogeneous multiprocessor computer system, said method comprising:
-
analyzing a source program for one or more program characteristics, the program characteristics selected from the group consisting of data locality, computational intensity, and data parallelism; in response to the analyzing, compiling the source program into two object files, a first object file corresponding to a first instruction set and a second object file corresponding to a second instruction set; in response to the compiling, storing the program characteristics in each of the object files; receiving a request to execute a software task corresponding to the source program; selecting a processor from a plurality of dislike processors, wherein a first processor corresponds to the first instruction set and a second processor corresponds to the second instruction set, to execute the software task, the selecting comprising comparing one or more characteristics of the software task with the program characteristics stored in the first object file and the second object file; in response to selecting the first processor; loading the first object file into a shared memory, wherein the shared memory is shared by the plurality of dislike processors; and executing the loaded first object file by the first processor; and in response to selecting the second processor; loading the second object file into the shared memory; and executing the loaded second object file by the second processor. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
Specification