At the Rice Computer Science Affiliates Meeting, I just listened to an interesting talk by Keith Cooper about the PACE (platform-aware compilation environment) project.
Keith mainly talked about resource and configuration detection, e.g. detecting cache sizes and alignment. Moshe Vardi commented that it was “a high-tech solution to a low-tech problem” that could be solved with some configuration files. Keith replied that his group didn’t write the rules of the game, and that they had to conform to the grant requirements.
This seems somewhat similar to the comment I made in my last post, that I was, in my work, exploring an artificially complex problem space instead of finding something that is intrinsically true. The result of my work is often interesting hacking, but the value of it is dependent on the longevity and ubiquity of the platform.
Keith contacted me to point out that I have misunderstood the problem. The goal of this stage of the PACE project is not merely to detect hardware properties, like the number of registers, but to determine values that impact program performance, like the number of live values a procedure can use before performance degrades. Those values are dependent both on hardware and software (e.g. compiler and operating system).