Patent ID: 9047114
Filing Date: 2015-06-02
Classification: G06F

Abstract:
1. A method for analyzing parallelism of program code, the method comprising: simulating sequential execution of the program code so as to trace an execution procedure of the program code; and analyzing parallelism of the program code based on a result of the trace of the execution procedure of the program code, wherein the analyzing comprises: generating an invocation tree for the program code based on the result of the trace, the generating comprising representing function calls of the program code in the execution procedure with nodes, wherein a root node of the invocation tree represents a main function of the program code, wherein each of a set of nodes under the root node represents a function call of the program code, and wherein invocation relations between function calls are represented by parent and child relations between corresponding nodes, obtaining, for at least first and second function calls represented by nodes in the invocation tree, a read access record set and a write access record set during the first and second function calls based on the result of the trace, the read access record set recording read accesses to a memory address during a function call, and the write access record set recording write accesses to the memory address during a function call, determining for the first function call whether the write access record set associated therewith comprises at least one record related to a same non-local memory address as that in at least one of the read access record set and the write access record set of the second function call, determining, responsive to the write access record set of the first function call comprising at least one record related to the same non-local memory address as that in at least one of the read access record set and the write access record set of the second function call, that the first function call and the second function call are dependent on each other and fail to be executable in parallel, and determining, responsive to the write access record set of the first function call failing to comprise at least one record related to the same non-local memory address as that in at least one of the read access record set and the write access record set of the second function call, that the first function call and the second function call fail to be dependent on each other and are executable in parallel.