Predicting program performance on hardware devices, in one aspect, may comprise obtaining a set of existing applications and observed performance on a target hardware device. The set of existing applications are run on one or more general purpose computer processors and application features are extracted from the existing application. A machine learning technique is employed to train a predictive model based on the extracted application features and the observed performance for predicting application performance on the target hardware device.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method of predicting a hardware device for best program performance, comprising: obtaining a plurality of existing applications and observed performance on a plurality of target hardware devices, each of the plurality of existing applications labeled with one of the plurality of target hardware devices; running the plurality of existing applications on one or more general purpose computer processors and extracting application features from the existing application; inputting the application features, labels associated with the existing applications, and the observed performance on the plurality of target hardware device to a machine learning technique; executing the machine learning technique; and training a predictive model by the machine learning technique for predicting a target hardware device out of the plurality of target hardware devices for running a given application. 2. The method of claim 1, wherein multiple of the predictive model are built based on different set of existing applications, and a more accurate predictive model is selected from the multiple of the predictive model based on a cross-validation algorithm performed on the multiple of the predictive model. 3. The method of claim 1, wherein the machine learning technique comprises multiple classifier technique. 4. The method of claim 1, further comprising: obtaining a new application; extracting new application features from the new application; running the predictive model based on the new application features on the one or more general purpose computer processors; and predicting by the predictive model a target hardware device out of the plurality of target hardware device as a recommended device for running the new application. 5. The method of claim 4, wherein the application features and the new application features comprise one or more of parallel loops, branches, arithmetic and logic instructions, or memory access, or combinations thereof. 6. The method of claim 1, wherein the application features are extracted by dynamically instrumenting the applications running on the general purpose computer processor. 7. The method of claim 1, wherein the application features are extracted by statically analyzing the existing applications.