This technique is designed to automatically recognize and exploit commuting operations to generate parallel code. It views the computation as composed of arbitrary operations on arbitrary objects. It then analyzes the computation at this granularity to determine if operations commute. If all of the operations in a given computation commute, the compiler can automatically generate parallel code. Even though the code may violate the data dependences of the original serial program, it is still guaranteed to generate the same result. [0]

[0] Rinard, Martin C., and Pedro C. Diniz. “Commutativity analysis: A new analysis technique for parallelizing compilers.” ACM Transactions on Programming Languages and Systems (TOPLAS) 19.6 (1997): 942-991.