uwsampa / accept

an approximate compiler
http://accept.rocks
MIT License
37 stars 14 forks source link

allow skip on BuildError #31

Open ransford opened 10 years ago

ransford commented 10 years ago

Some values of loop perforation knobs cause the version of llc shipped with LLVM 3.2 to crash during isel ( :+1: ) on the MSP430 benchmarks. accept.core.build() quite sensibly raises a BuildError, but this causes accept run to bail. I'd argue that that result should be simply triaged as bad instead; the parameter-space exploration could continue.

It's not just this test case. I can imagine BuildErrors resulting from knob adjustments in other scenarios too, for example when relaxing something causes an aggressive analysis to decide there's an error.

sampsyo commented 10 years ago

Awesome, very awesome, thanks LLVM isel. Yes, let's suppress these for the sake of fault isolation.

I'm not sure whether it should be allowed for optimizations to fail when they're applied. It seems like they should do all their work up front (at analysis time) to determine whether it's safe to apply. This avoids bothering the autotuner with stuff that won't work out anyway. But it could be infeasible to do that for some optimizations... worth continuing to think about.