'Approximate Computing' Saves Energy
hessian writes "According to a news release from Purdue University, 'Researchers are developing computers capable of "approximate computing" to perform calculations good enough for certain tasks that don't require perfect accuracy, potentially doubling efficiency and reducing energy consumption. "The need for approximate computing is driven by two factors: a fundamental shift in the nature of computing workloads, and the need for new sources of efficiency," said Anand Raghunathan, a Purdue Professor of Electrical and Computer Engineering, who has been working in the field for about five years. "Computers were first designed to be precise calculators that solved problems where they were expected to produce an exact numerical value. However, the demand for computing today is driven by very different applications. Mobile and embedded devices need to process richer media, and are getting smarter – understanding us, being more context-aware and having more natural user interfaces. ... The nature of these computations is different from the traditional computations where you need a precise answer."' What's interesting here is that this is how our brains work."
The majority of CPU cycles in data centers is going to be looking up and filtering specific records in database(or maybe parsing files if you're into that). They can possibly save energy on a few specific kinds of scientific computing.
But it's ultimately impossible to build a computer that calculates with arbitrary precision. The closest approximation would be to have a pair of FPUs, one for lower precision and one for higher precision. Many GPUs already function this way.
This is also how analog computers work. They're extremely fast and efficient, but imprecise. It had a bit of traction in the old days, but interest seems to have died off.
We're teaching our kids that 2+2 equals whatever they feel it is equal to, as long as they are happy. What do we need with accuracy anymore?
I find this interesting that most science fiction portrays an AI of some sort of having all of the advantages of sentience (creativity, adaptability, intuition) while also retaining the advantages of a modern computer (perfect recall, high computational accuracy, etc.). This kind of suggests that with a future AI, maybe that would not be the case; maybe the requirements for adaptability and creativity places sufficient demands on a system's (biological or electronic) resources that you couldn't have such a perfect combination.
Also, I'm really bored at work today, so speculation like this is my cure.
Heard this one before. On Slashdot, even. Yes, you can do it. No, you don't want to. Remember when LCDs came with a few dead pixels? There used to be a market for DRAM with bad bits for phone answering machines and buffers in low-end CD players. That's essentially over.
Working around bad bits in storage devices is common; just about everything has error correction now. For applications where error correction is feasible, this works. Outside that area, there's some gain in cost and power consumption in exchange for a big gain in headaches.
This is not about data centers and databases. This is about scientific computation -- video and audio playback, physics simulation, and the like.
The idea of doing a computation approximately first, and then refining the results only in the parts where more accuracy is useful is an old idea; one manifestation are multigrid algorithms.
FPS game enemys who are more random, unpredictable, close enough, and maybe just say 'fuck this' after they see you mow down 50 of their buddies.
A1: Successive approximations.
A2: A random number generator
.
Hey, folks, I can keep this up all day.
http://www.netjeff.com/humor/item.cgi?file=PentiumJokes
I remember Intel doing something like this back in the days of the 386, except without the energy savings.
I'm an American. I love this country and the freedoms that we used to have.
While the concept was interesting, it did not really catch up. Progress of silicon devices made it simply unnecessary. It ended up being used as a buzz word for a few years and quietly died away.
I wonder if this is going to follow the same trend.
nuff said
I do this all the time. People are sometimes surprised when I can calculate an answer in a couple of seconds that takes other people half a minute or more, and my answer is within a few integers (or
Saves me energy, too.
FSRT POST!!!
Mai spel checkar allreddy wurks dis weigh....
- analog computers.
A Talos missile, a two stage, first stage solid booster, second stage air breathing ramjet could take out a wildly evasive supersonic north vietnamese-piloted soviet MiG with an analog computer calculating the missile trajectory.
To determine if a/b is greater than 1, it is sufficient to check if a > b.
To determine if a/b is greater than c, it is sufficient to check if a > bc.
Multiplication already consumes less time and energy than division on modern computers. I do not see why they needed to modify their instruction set to realize such gains.
It cares about knowing just how precise you are.
That is, measurements are reported 1.2+/-0.1.
It sounds like they just invented analog.
The only thing worse than a Democrat is a Republican.
Computer:
- Let met approximate this cypher while I encrypt your bitcoin wallet private key....
Isn't this the idea behind advanced video and audio compression? Or any other "lossy" technique. You throw away data (precision) that isn't necessary to achieve an acceptable experience.
Could cool if you could arbitrarily turn down a processor's precision to save power.
GPUs have already introduced half-precision -- 16-bit floats. An earlier 2011 paper by the same author as the one in this Slashdot summary cites a power savings of 60% for a "an approximate computing" adder, which isn't that much better than just going with 16-bit floats. I suppose both could be combined for even greater power savings, but my gut feeling is that I would have expected even more power savings once the severe constraint of exact results is discarded.
And this is why we have thousands and thousands of approximation algorithms. Computers do the work perfectly precisely, except when we are talking about decimal numbers, and if you do not need perfect precision you just program in an approximate algorithm.
I do not think you will ever do any better than picking the best mathematical algorithm for your problem, instead of just relying on lazy computers.
Troll is not a replacement for I disagree.
'Researchers are developing computers capable of "approximate computing" to perform calculations good enough for certain tasks that don't require perfect accuracy, potentially doubling efficiency and reducing energy consumption.'
I am, for one, welcoming our new approximately accurate, longer-range drone overlords.
Set your phasers on "funky"!
Seems like a totally impractical system.
You are probably already using an algorithm that produces approximate results, add on top of that a computer that makes mistakes routinely in the name of speed.
You would think that sometimes the stars would just align and you would get a result that is just completely wrong.
Troll is not a replacement for I disagree.
SHA256 double hash applications were probably first who used this on massive scale. It's actually ok to ramp clock/voltage up 50%, get 30% more rate at cost of 5% of wrong answers (and halving MTBF). ASIC miner chip giving wrong answers now and then because of imperfect mask process (even before OC) is common too.
However numbers for standard-cell ASIC design don't seem much favourable, certainly not "doubling", much less energy saving (on the contrary, at ballpark 10-30% of OC you reach point of diminishing returns, and only if you dont care much about MTBF).
Now what would be interesting is actual "analog" computers, ie number of states anywhere between 4-inf - there is literally too much of wasted "potential" nowadays. NAND flash chips do it already because they are about to hit limits of cost-effective litography (10nm?).
Fuzzy logic and all that jazz really should be used more in computing.
It could save considerable power, or allow for far more computation in a smaller space.
So much stuff in computing only requires decently accurate results. Some requires even less accurate results.
If something was off by one pixel during one frame when it was moving, big deal, no loss.
Not to mention how great it would be for the sake of procedural noise.
You want something that isn't too random, but is just one value messed up a little, throw it through a fuzzy command and out it comes with a random offset.
That'd now be two commands compared to the usual few it'd take to set a value to itself + a random value, then set the possible offsets for the random command.
Or how about procedural generation in games, it could be used in so many areas of animation, texturing and the like.
Or how about AI, it would work wonders for AI, it's massively simplify the logic required to implement a simple expert machine.
It'd even make a real AI even easier to do, more so if you made these processors massively parallel.
Imagine a GPU of these, or even a set area of a GPU dedicated to fuzzy calculations. Might happen in the next 10 years, I sure hope so. (I'd think APUs might be a bigger thing by then though, or early 3D processors, who knows, so many routes it might take soon)
All I know is the future of processing is going to be FUCKING AWESOME in the coming few decades, it is going to transition so much that our computers will look like toasters.
Of course, not those smart ones. Does Anyone Want Any Toast
The problem with this approach is that the energy used for computation is a relatively small part of the whole. Much more energy is spent on fetching instructions, decoding instructions, fetching data, predicting branches, managing caches and many other processes. And the addition of approximate arithmetic increases the area and leakage of the processor which increases engergy consumption for all programs.
Approximate computation is already widely used in media and numerical applications, but it is far from clear that it is a good idea to put approximate arithmetic circuits in a standard processor.
.. this story or a slight variant gets reposted to Slashdot in one form or another.
It's a fairly common thing when perfect accuracy is not required. It's easier to check the distance from Coord A to Coord B is less than X on each axis than to pythag. It may seem a small increase in efficiency but when it's being done for Z hundred entities (x-x) every 100ms it adds up fast.
ALL maths generally done in the 'floating point' domain is calculated to some APPROXIMATE accuracy. If this worthless clown-shoe excuse of a professor had the first clue, he'd understand this fundamental fact of applied computer engineering.
32-bit floating point calculates with less power than 64-bit at the same throughput, with the same type of electronic solution.
Markov Chains and the like already handle the statistical concept of "maybe this" or "maybe that" at known statistical probabilities.
The biggest MOUTHS at University are, sadly, all too frequently self-promoting morons. They do not seek to impress their associates in the same field, but seek to seem 'clever' to a more credulous general academic audience, like their bosses.
And to you who are reading this, but not understanding a word I say- try reading any decent primer on NUMERICAL ANALYSIS. India is famous for its mathematicians, and its cultural respect of the filed of maths, so sadly plenty of Indian conmen use their Indian heritage to pass themselves of as some form of maths genius to unsuspecting fools. What was that con Slashdot promoted a little while ago? The new 'Indian' method for super compression of data- or was it the new 'Indian' method of storing extraordinary amounts of data in a pattern printed by an inkjet printer? I think both cons got serious time here.
Due to ROM and cost limitations the original Sinclair Scientific calulator only produced approximate answers, maybe to 3 or four digits.
This was far more accurate than the answers given by a slide rule....
For more info have a look at this page Reversing Sinclair's amazing 1974 calculator hack - half the ROM of the HP-35
we will just drop that leftover parts of cent to our own account.
I'm sure it's a matter of degrees, but as-it-is, computing is already approximate due to the finite precision of computer arithmetic. There are only 2^(bits) numbers that can be exactly represented on a computer when you've allocated "bits" number of bits to representing numbers. When you solve for the square root of 2 (call it sqrt(2)) on a computer, the answer you get back is not sqrt(2) but sqrt(2) + epsilon, where epsilon is some known bound on the error, When you use an ODE solver to numerically evaluate a differential equation, part of the settings (even if they're just the default ones) is the error tolerance. Similar statements apply for all types of numerical algorithms such as solving nonlinear equations, optimization routines, etc. What are some of the key difference in this approximate computing approach that differentiates it from just cranking down the tolerance on standard algorithms? Higher robustness to errors, randomness, etc.?
Nah, I didn't RTFA.
1. collect museum-piece Pentium systems ...
2. exploit FDIV bug
3. submit blurb to Slashdot
4.
5. Profit!
Political debates have me rolling my eyes so much I think I got optical whiplash. I should sue. - Foamy The Squirrel
No, it's not. Approximation algorithms use exact computations and model approximation. The problem is using exact computations - it costs a lot of power to do so.
If instead you just needed to approximate, you can enable "approximate" mode on the calculation and the system gets you an approximate answer, which costs about 50% of the energy it takes to do an exact one.
For calculations like video and audio, that means the GPU consumes much less power as those applications are far more tolerant of approximate answers and the result is discarded in short while afterwards too.
If you don't care for the exact value, then you enable approximate calculations and save the energy of having to do an exact calculation. This is different from using an approximation algorithm on a normal computer where you calculate everything exactly and then fake approximation.
And yes, even when you're doing approximate calculations, there are times you need to do exact calculations - e.g., if you're iterating over lines of video, your iterator needs to be exact while the actual data may only need to be approximate. The proper CPU architecture has to allow for this.
This was during Vietnam
Digital computers would have been too slow.
If you don't care for the exact value you can use a specific algorithmic approximation, that normally gives you many orders of magnitude less computation time.
Troll is not a replacement for I disagree.
This post was going to contain something insightful and funny, but because I'm using an approximate computer, it contains neither.
I don't give a damn about wasting energy! Never have, never will! Energy is plentiful, that is if Marxist O will allow drilling and pipelines.
Politicians and journalists computes approximately most of the time.
This reminded me of soft heaps. http://en.wikipedia.org/wiki/Soft_heap
Basically it creates a heap but some of the elements get corrupted and are not in the proper place as if it were a proper heap. Oddly enough, this can be used to write deterministic algorithms, and provides the best complexity for finding minimum spanning trees.
I think I saw that in Superman III...
Precision can be (relatively) arbitrary, depending on memory and time. Years ago I used a mainframe computer that had an IBM language called REXX. It could add, subtract, multiply and divide to arbitrary precisions. I wrote functions to calculate sines, cosines, tangents, (arctan, arccos, arctan), exponents, logs and roots. I got a version of rexx for an old old (386) laptop. I remember calculating pi to 500 significant digits in 1987. It took 1 week and 9.5 hours. My routines for calculating exponents ran much faster: 200 digits of accuracy, with 9 digit exponents in about 1/2 second; eg: 123456789.123456789^123456789.123456789 and it calculates it in about 1/2 second. Instead of doing calculations in the registers of the ALU, it stores/calculates in main memory (so instead of 8 or 32 or 64 bits, you have millions or billions of bits). It just takes longer. On the mainframe, once ram is all used up, it swaps out to disk. That slows things a lot, but doesn't stop it. This is universal with all high/arbitrary precision libraries on computers.
I'm still waiting for the day we start making motherboards from hemp plastics.
It's not correct to say that because approximate (serial, digital) computations don't use accurate (serial, digital) computation, and our brains don't use accurate (serial, digital) computation either, then our brains use approximate (serial, digital) computation.
This is just as logical as saying that because green is not blue, and red is not blue, therefore green is red.