Automated tool optimizes complex programs better than humans

Erie provided database repairs that were previously performed exclusively by human programmers.

Baris Kasikci Enlarge
Prof. Baris Kasikci

In their efforts to improve program optimization with automated tools, Prof. Baris Kasikci and his students have outperformed manual human repairs in terms of program performance. With their new tool Erie, the research group is able to analyze programs to identify their inefficiencies and provide automatic repairs without issues like labor-intensiveness and inaccuracy that typically plague the optimization process.

The goal of Erie, a successor to their previous project Huron, is to achieve better performance and handling of performance bugs by addressing the key issue of data locality. Existing automated program optimizers stick to manipulating the text part of a program – the actual code. A vital part of how well a program performs is actually in the data part of the program – the information it works with. Erie and Huron are able to restructure the layout of that data after an analysis phase.

Locality, the proximity of data elements to one another in memory, can be harmed by a number of performance bugs and inefficiencies. In certain cases there are insidious performance bugs that destroy locality. These issues are very hard to identify when writing the code. Erie detects and eliminates several different examples of this problem automatically, operating while the computer is in use. 

“We’ve already identified four different classes of locality issues,” Kasikci says, “and we have the means to automatically, non-invasively detect that you are suffering because of these problems, and fix those on the fly.”

In one significant finding, Erie was demonstrated to be compatible with an existing database benchmark system that had been in use for 20 years, applying its automatic fixes based on the output of its evaluation. In that case, Erie provided database repairs that were previously performed exclusively by human programmers.

“Traditionally, humans have been better at optimizing these complex performance problems,” Kasikci says. Basic optimizations have long been handled by compilers, but more complex fixes that require consideration of the dynamic properties of programs, like locality, have been handled mostly by developers. “These properties manifest during the execution of the program as opposed to when you just write the code and compile it. But with Erie we can beat that sort of manual optimization, too.”