Patent ID: 8726238

Claim:
A method of identifying a ranked list of one or more candidate pieces of source code for use in parallelizing a given potentially concurrent user program, each candidate piece associated with one or more source refactorings, comprising: recording a history of source code versions of a program, wherein the recording a history of source code versions includes recording one or more of a plurality of code transformations that have been applied to the program and other programs in the past; recording performance data associated with the source code versions in the history; predicting an expected benefit of one or more source refactorings for one or more candidate pieces of source code based at least on the performance data, the one or more source refactorings comprising at least pieces of code that are capable of being parallelized and capable of running concurrently; ranking the one or more candidate pieces of source code according to the prediction; and allowing a user to navigate through past refactorings for different types of code and different types of platforms, and associated performance data associated with the past refactorings, wherein an interactive parallelization development loop is provided via a graphical user interface, in which a developer is allowed to decide which one or more of the plurality of code transformations to apply at each step from the ranked list of the candidate pieces of source code, and the method further comprises enabling the developer to undo an applied transformation or alter a parameter of a previously applied refactoring, wherein the expected benefit is determined for each of the different types of platforms based on at least cost of operations on the different types of platforms.