Balancing computational load across a plurality of processors
First Claim
1. A method for load balancing code execution, said method comprising:
- compiling a first source code subtask and a second source code subtask, the compiling resulting in a first byte code subtask and a second byte code subtask;
determining whether to store a pointer in a byte code file, the pointer including a stored location that corresponds to the second byte code subtask;
storing the pointer in the byte code file in response to the determination;
storing the second byte code subtask at the stored location in response to the determination;
translating the first byte code subtask to a first object code subtask;
executing the first object code subtask using one of a plurality of heterogeneous processor types;
during the execution of the first object code subtask, the method further comprises;
retrieving the pointer and analyzing the stored location;
in response to analyzing the stored location, retrieving the second byte code subtask using a runtime loader;
in response to retrieving the second byte code subtask, using the runtime loader to identify a processor type from the plurality of heterogeneous processor types in which to execute the second byte code subtask, wherein the identifying includes retrieving a loading factor for each of the plurality of heterogeneous processor types and determining an availability of each of the plurality of heterogeneous processor types using the loading factors;
in response to identifying the processor type, using the runtime loader to translate the second byte code subtask to a second object code subtask; and
loading the second object code subtask into a processor that corresponds to the identified processor type.
1 Assignment
0 Petitions
Accused Products
Abstract
Source code subtasks are compiled into byte code subtasks whereby the byte code subtasks are translated into processor-specific object code subtasks at runtime. The processor-type selection is based upon one of three approaches which are 1) a brute force approach, 2) higher-level approach, or 3) processor availability approach. Each object code subtask is loaded in a corresponding processor type for execution. In one embodiment, a compiler stores a pointer in a byte code file that references the location of a byte code subtask. In this embodiment, the byte code subtask is stored in a shared library and, at runtime, a runtime loader uses the pointer to identify the location of the byte code subtask in order to translate the byte code subtask.
-
Citations
1 Claim
-
1. A method for load balancing code execution, said method comprising:
-
compiling a first source code subtask and a second source code subtask, the compiling resulting in a first byte code subtask and a second byte code subtask; determining whether to store a pointer in a byte code file, the pointer including a stored location that corresponds to the second byte code subtask; storing the pointer in the byte code file in response to the determination; storing the second byte code subtask at the stored location in response to the determination; translating the first byte code subtask to a first object code subtask; executing the first object code subtask using one of a plurality of heterogeneous processor types; during the execution of the first object code subtask, the method further comprises; retrieving the pointer and analyzing the stored location; in response to analyzing the stored location, retrieving the second byte code subtask using a runtime loader; in response to retrieving the second byte code subtask, using the runtime loader to identify a processor type from the plurality of heterogeneous processor types in which to execute the second byte code subtask, wherein the identifying includes retrieving a loading factor for each of the plurality of heterogeneous processor types and determining an availability of each of the plurality of heterogeneous processor types using the loading factors; in response to identifying the processor type, using the runtime loader to translate the second byte code subtask to a second object code subtask; and loading the second object code subtask into a processor that corresponds to the identified processor type.
-
Specification