1. An information handling system comprising: a plurality of heterogeneous processors; a common memory shared by the plurality of heterogeneous processors; a first processor selected from the plurality of processors that sends a request to a second processor, the second processor also being selected from the plurality of processors, wherein the first processor corresponds to a first instruction set and the second processor corresponds to a second instruction set; a local memory corresponding to the second processor; a Direct Memory Access (DMA) controller associated with the second processor, the DMA controller transferring data between the common memory and the second processor's local memory; and a loading tool to load software code to execute on one of the processors, the loading tool including software effective to: analyze 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; compile 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; store the program characteristics in each of the object files; receive a request to execute a software task corresponding to the source program; select one of the processors to execute the software task, by 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: load the first object file into the common memory; and execute the loaded first object file by the first processor; and in response to selecting the second processor: load the second object file into the common memory; and execute the loaded second object file by the second processor.