Integer division powered by lemonade-bleach battery
pl.eecs.berkeley.edu
pl.eecs.berkeley.edu
It's powered by the metal wires placed in the electrolyte, not the electrolyte. The metal oxidizes (corrodes, burns), and that is what provides the energy.
We were using a GreenArrays chip (http://www.greenarraychips.com/) which is a 144-core ultra low power architecture. That's great, but it's super difficult to program, and only a few experts can really do it. We were working on building a high-level programming language and compiler toolchain that would allow anyone with programming experience to write GreenArrays programs.
So we were basically building a compiler, but with a twist - instead of a traditional compiler which generates machine code from source code through a series of transformations, we used a technique called program synthesis. Synthesis treats the high-level program (source) as a specification, and performs a search across the space of possible target programs (machine code), trying to find the optimal one (in our case, optimal meant energy efficient). The backend uses a bunch of Programming Language techniques and SMT solving (https://en.wikipedia.org/wiki/Satisfiability_modulo_theories).
As you can imagine, this is a hard problem and synthesis isn't quite ready to replace sophisticated compilers. But where synthesis can really shine is in places where you don't have mature compilers and need to generate complicated optimal code, that perhaps no human or human-written compiler might. Or in cases where parts of the program need to be extra-optimized.
Coming back to the experiment, the integer division code running on the chip was generated using synthesis, and we wanted to show that we could run it on low energy.
Sounds like the neural network example is a better fit for this and makes it indeed interesting.