# I have just realised that I have alread

I have just realised that I have already been doing quantum computing!

On a CPU, if-then-else branching is like the Copenhagen interpretation: we only take one branch or the other. But on a GPU (or other SIMD environment) branching is like the many-worlds interpretation of quantum mechanics: we evaluate both branches and then allow the results to interfere to get a single result:

result = conditional * output1 + (1-conditional) * output2;

The double-slit experiment is exactly an if-then-else branch on a GPU, with data as the stream of photons. We don't need to make sure each bit goes through the correct slit, instead we fire the data at the slits and each bit goes through both. Only those results that we are interested in appear on the wall behind, the others destructively interfere.

On a CPU, if-then-else branching is like the Copenhagen interpretation: we only take one branch or the other. But on a GPU (or other SIMD environment) branching is like the many-worlds interpretation of quantum mechanics: we evaluate both branches and then allow the results to interfere to get a single result:

result = conditional * output1 + (1-conditional) * output2;

The double-slit experiment is exactly an if-then-else branch on a GPU, with data as the stream of photons. We don't need to make sure each bit goes through the correct slit, instead we fire the data at the slits and each bit goes through both. Only those results that we are interested in appear on the wall behind, the others destructively interfere.

### GPU Gems - Chapter 34. GPU Flow-Control IdiomsChapter 34. GPU Flow-Control Idioms

Shared with: Public, Paul Gray

*This post was originally on Google+*

I'm just waiting for analogue computers to start coming back into fashion, that and photonic CPU's.

But whatever we have you can be guaranteed of one thing, quantum computer or not, people will still argue that random is not random enough to be called random.